@cloudcart/dev-mcp 0.2.2 → 0.2.4

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
@@ -57,6 +57,33 @@
57
57
  "isDeprecated": false,
58
58
  "deprecationReason": null
59
59
  },
60
+ {
61
+ "name": "orderPayment",
62
+ "description": "Fetch a single order-payment record by its id. Includes the linked gateway-side payment via `gatewayPayment`. Admin agents use this before calling capturePayment / refundPayment / markPaymentPaid to confirm the current status of the payment.",
63
+ "args": [
64
+ {
65
+ "name": "id",
66
+ "description": "Order payment ID.",
67
+ "type": {
68
+ "kind": "NON_NULL",
69
+ "name": null,
70
+ "ofType": {
71
+ "kind": "SCALAR",
72
+ "name": "ID",
73
+ "ofType": null
74
+ }
75
+ },
76
+ "defaultValue": null
77
+ }
78
+ ],
79
+ "type": {
80
+ "kind": "OBJECT",
81
+ "name": "OrderPayment",
82
+ "ofType": null
83
+ },
84
+ "isDeprecated": false,
85
+ "deprecationReason": null
86
+ },
60
87
  {
61
88
  "name": "orderedProducts",
62
89
  "description": "Get aggregated ordered products across orders (for inventory/reporting).",
@@ -2383,6 +2410,60 @@
2383
2410
  "isDeprecated": false,
2384
2411
  "deprecationReason": null
2385
2412
  },
2413
+ {
2414
+ "name": "customerEmailJob",
2415
+ "description": "Fetch the status of a customer-email 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 sendCustomerEmail.",
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": "CustomerEmailJob",
2435
+ "ofType": null
2436
+ },
2437
+ "isDeprecated": false,
2438
+ "deprecationReason": null
2439
+ },
2440
+ {
2441
+ "name": "customerViberJob",
2442
+ "description": "Fetch the status of a customer-viber batch by ID. Returns null if the batch is not found or belongs to another store.",
2443
+ "args": [
2444
+ {
2445
+ "name": "id",
2446
+ "description": "Batch ID returned by sendCustomerViber.",
2447
+ "type": {
2448
+ "kind": "NON_NULL",
2449
+ "name": null,
2450
+ "ofType": {
2451
+ "kind": "SCALAR",
2452
+ "name": "ID",
2453
+ "ofType": null
2454
+ }
2455
+ },
2456
+ "defaultValue": null
2457
+ }
2458
+ ],
2459
+ "type": {
2460
+ "kind": "OBJECT",
2461
+ "name": "CustomerViberJob",
2462
+ "ofType": null
2463
+ },
2464
+ "isDeprecated": false,
2465
+ "deprecationReason": null
2466
+ },
2386
2467
  {
2387
2468
  "name": "analyticsReport",
2388
2469
  "description": "Run an analytics report. Returns structured columns + rows for AI agents, plus raw formatter data for chart rendering.",
@@ -11956,6 +12037,94 @@
11956
12037
  "isDeprecated": false,
11957
12038
  "deprecationReason": null
11958
12039
  },
12040
+ {
12041
+ "name": "shippingCountries",
12042
+ "description": "List the countries a shipping provider services. Each provider's `listCountries()` is the source — for Speedy/DpdBulgaria/Sameday the list is populated, for providers that don't expose countries the list is empty. Combine with `shippingOffices(key, filter: {country: \"BG\"})` to narrow down to offices in a specific country.",
12043
+ "args": [
12044
+ {
12045
+ "name": "key",
12046
+ "description": "Provider app key (e.g. 'econt', 'speedy').",
12047
+ "type": {
12048
+ "kind": "NON_NULL",
12049
+ "name": null,
12050
+ "ofType": {
12051
+ "kind": "SCALAR",
12052
+ "name": "String",
12053
+ "ofType": null
12054
+ }
12055
+ },
12056
+ "defaultValue": null
12057
+ },
12058
+ {
12059
+ "name": "query",
12060
+ "description": "Optional name-fragment filter (uses each provider's `findCountries()` when supplied).",
12061
+ "type": {
12062
+ "kind": "SCALAR",
12063
+ "name": "String",
12064
+ "ofType": null
12065
+ },
12066
+ "defaultValue": null
12067
+ }
12068
+ ],
12069
+ "type": {
12070
+ "kind": "NON_NULL",
12071
+ "name": null,
12072
+ "ofType": {
12073
+ "kind": "LIST",
12074
+ "name": null,
12075
+ "ofType": {
12076
+ "kind": "NON_NULL",
12077
+ "name": null,
12078
+ "ofType": {
12079
+ "kind": "OBJECT",
12080
+ "name": "ShippingCountry",
12081
+ "ofType": null
12082
+ }
12083
+ }
12084
+ }
12085
+ },
12086
+ "isDeprecated": false,
12087
+ "deprecationReason": null
12088
+ },
12089
+ {
12090
+ "name": "shippingPdfFormats",
12091
+ "description": "List PDF output formats a shipping provider supports for waybill printing. Derived zero-config from the provider's pdf-select.tpl admin view, so newly added providers expose their formats without any GraphQL change. Agents pass the returned `type` to `getShippingWaybillPdf`.",
12092
+ "args": [
12093
+ {
12094
+ "name": "key",
12095
+ "description": "Provider app key.",
12096
+ "type": {
12097
+ "kind": "NON_NULL",
12098
+ "name": null,
12099
+ "ofType": {
12100
+ "kind": "SCALAR",
12101
+ "name": "String",
12102
+ "ofType": null
12103
+ }
12104
+ },
12105
+ "defaultValue": null
12106
+ }
12107
+ ],
12108
+ "type": {
12109
+ "kind": "NON_NULL",
12110
+ "name": null,
12111
+ "ofType": {
12112
+ "kind": "LIST",
12113
+ "name": null,
12114
+ "ofType": {
12115
+ "kind": "NON_NULL",
12116
+ "name": null,
12117
+ "ofType": {
12118
+ "kind": "OBJECT",
12119
+ "name": "ShippingPdfFormat",
12120
+ "ofType": null
12121
+ }
12122
+ }
12123
+ }
12124
+ },
12125
+ "isDeprecated": false,
12126
+ "deprecationReason": null
12127
+ },
11959
12128
  {
11960
12129
  "name": "dhlSettings",
11961
12130
  "description": "Get DHL extended settings (services, boxes, label sizes, currencies, regions, package types, countries).",
@@ -12812,6 +12981,47 @@
12812
12981
  "isDeprecated": false,
12813
12982
  "deprecationReason": null
12814
12983
  },
12984
+ {
12985
+ "name": "shippingWaybillSchema",
12986
+ "description": "Describe the full input schema for generating a waybill with a specific shipping provider. Call this before `createShippingWaybill` to discover provider-specific fields, validation rules, dependencies and example values. The schema is auto-generated from the provider's own WaybillRequest rules and Manager metadata, so newly added providers are supported without any GraphQL changes.",
12987
+ "args": [
12988
+ {
12989
+ "name": "key",
12990
+ "description": "Provider app key (e.g. 'econt', 'speedy', 'dpdbulgaria').",
12991
+ "type": {
12992
+ "kind": "NON_NULL",
12993
+ "name": null,
12994
+ "ofType": {
12995
+ "kind": "SCALAR",
12996
+ "name": "String",
12997
+ "ofType": null
12998
+ }
12999
+ },
13000
+ "defaultValue": null
13001
+ },
13002
+ {
13003
+ "name": "orderId",
13004
+ "description": "Optional order ID. When provided, schema is order-aware (e.g. service options are actual calculated options, pallet-flag reflects provider settings, COD default is the order's COD total).",
13005
+ "type": {
13006
+ "kind": "SCALAR",
13007
+ "name": "ID",
13008
+ "ofType": null
13009
+ },
13010
+ "defaultValue": null
13011
+ }
13012
+ ],
13013
+ "type": {
13014
+ "kind": "NON_NULL",
13015
+ "name": null,
13016
+ "ofType": {
13017
+ "kind": "OBJECT",
13018
+ "name": "ShippingWaybillSchema",
13019
+ "ofType": null
13020
+ }
13021
+ },
13022
+ "isDeprecated": false,
13023
+ "deprecationReason": null
13024
+ },
12815
13025
  {
12816
13026
  "name": "nitroStorefronts",
12817
13027
  "description": "List all Nitro storefronts for the current store.",
@@ -15622,6 +15832,47 @@
15622
15832
  "isDeprecated": false,
15623
15833
  "deprecationReason": null
15624
15834
  },
15835
+ {
15836
+ "name": "sendManualOrderCheckoutLink",
15837
+ "description": "Send the checkout link for a manually-created order to the customer by email. Used when the order is a manual draft paid with an online payment provider — the customer receives a link to complete the payment themselves. Mirrors the admin UI's `send_confirmed_order` / `send_notification_url` buttons on the order detail page.",
15838
+ "args": [
15839
+ {
15840
+ "name": "id",
15841
+ "description": "Order ID.",
15842
+ "type": {
15843
+ "kind": "NON_NULL",
15844
+ "name": null,
15845
+ "ofType": {
15846
+ "kind": "SCALAR",
15847
+ "name": "ID",
15848
+ "ofType": null
15849
+ }
15850
+ },
15851
+ "defaultValue": null
15852
+ },
15853
+ {
15854
+ "name": "confirm",
15855
+ "description": "When true, also confirm the order (removes is_draft meta). Mirrors the admin flow's `is_confirmed=1` flag. Default: true.",
15856
+ "type": {
15857
+ "kind": "SCALAR",
15858
+ "name": "Boolean",
15859
+ "ofType": null
15860
+ },
15861
+ "defaultValue": "true"
15862
+ }
15863
+ ],
15864
+ "type": {
15865
+ "kind": "NON_NULL",
15866
+ "name": null,
15867
+ "ofType": {
15868
+ "kind": "OBJECT",
15869
+ "name": "Order",
15870
+ "ofType": null
15871
+ }
15872
+ },
15873
+ "isDeprecated": false,
15874
+ "deprecationReason": null
15875
+ },
15625
15876
  {
15626
15877
  "name": "generateInvoiceNumber",
15627
15878
  "description": "Generate an invoice number for an order.",
@@ -20754,6 +21005,68 @@
20754
21005
  "isDeprecated": false,
20755
21006
  "deprecationReason": null
20756
21007
  },
21008
+ {
21009
+ "name": "sendCustomerEmail",
21010
+ "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.",
21011
+ "args": [
21012
+ {
21013
+ "name": "input",
21014
+ "description": "Targeting + content.",
21015
+ "type": {
21016
+ "kind": "NON_NULL",
21017
+ "name": null,
21018
+ "ofType": {
21019
+ "kind": "INPUT_OBJECT",
21020
+ "name": "SendCustomerEmailInput",
21021
+ "ofType": null
21022
+ }
21023
+ },
21024
+ "defaultValue": null
21025
+ }
21026
+ ],
21027
+ "type": {
21028
+ "kind": "NON_NULL",
21029
+ "name": null,
21030
+ "ofType": {
21031
+ "kind": "OBJECT",
21032
+ "name": "SendCustomerEmailPayload",
21033
+ "ofType": null
21034
+ }
21035
+ },
21036
+ "isDeprecated": false,
21037
+ "deprecationReason": null
21038
+ },
21039
+ {
21040
+ "name": "sendCustomerViber",
21041
+ "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.",
21042
+ "args": [
21043
+ {
21044
+ "name": "input",
21045
+ "description": "Targeting + content.",
21046
+ "type": {
21047
+ "kind": "NON_NULL",
21048
+ "name": null,
21049
+ "ofType": {
21050
+ "kind": "INPUT_OBJECT",
21051
+ "name": "SendCustomerViberInput",
21052
+ "ofType": null
21053
+ }
21054
+ },
21055
+ "defaultValue": null
21056
+ }
21057
+ ],
21058
+ "type": {
21059
+ "kind": "NON_NULL",
21060
+ "name": null,
21061
+ "ofType": {
21062
+ "kind": "OBJECT",
21063
+ "name": "SendCustomerViberPayload",
21064
+ "ofType": null
21065
+ }
21066
+ },
21067
+ "isDeprecated": false,
21068
+ "deprecationReason": null
21069
+ },
20757
21070
  {
20758
21071
  "name": "updateAnalyticsSettings",
20759
21072
  "description": "Update analytics dashboard settings (statuses, device visibility, box layout, industry).",
@@ -35338,6 +35651,16 @@
35338
35651
  }
35339
35652
  },
35340
35653
  "defaultValue": null
35654
+ },
35655
+ {
35656
+ "name": "autoFulfill",
35657
+ "description": "Automatically mark order as fulfilled (shipped) after generating waybill.",
35658
+ "type": {
35659
+ "kind": "SCALAR",
35660
+ "name": "Boolean",
35661
+ "ofType": null
35662
+ },
35663
+ "defaultValue": "false"
35341
35664
  }
35342
35665
  ],
35343
35666
  "type": {
@@ -35352,6 +35675,147 @@
35352
35675
  "isDeprecated": false,
35353
35676
  "deprecationReason": null
35354
35677
  },
35678
+ {
35679
+ "name": "changeOrderShippingProvider",
35680
+ "description": "Change the shipping provider on an order. Mirrors the admin UI's 'Change shipping provider' flow: swaps the provider, recreates shipping-related taxes for the new zone, and fires the OrderShippingChange event. To swap the provider without recalculating any part of the shipping price, use `swapOrderShippingProvider` instead.",
35681
+ "args": [
35682
+ {
35683
+ "name": "orderId",
35684
+ "description": "Order ID.",
35685
+ "type": {
35686
+ "kind": "NON_NULL",
35687
+ "name": null,
35688
+ "ofType": {
35689
+ "kind": "SCALAR",
35690
+ "name": "ID",
35691
+ "ofType": null
35692
+ }
35693
+ },
35694
+ "defaultValue": null
35695
+ },
35696
+ {
35697
+ "name": "shippingProviderId",
35698
+ "description": "ID of the new shipping provider. Must belong to the current site.",
35699
+ "type": {
35700
+ "kind": "NON_NULL",
35701
+ "name": null,
35702
+ "ofType": {
35703
+ "kind": "SCALAR",
35704
+ "name": "ID",
35705
+ "ofType": null
35706
+ }
35707
+ },
35708
+ "defaultValue": null
35709
+ },
35710
+ {
35711
+ "name": "pickupPointId",
35712
+ "description": "Optional pickup point id (office/locker/marketplace) if the new provider requires one. When omitted and the provider needs a pickup, the mutation returns `requiresPickup=true` with the expected `pickupType` so the agent can re-invoke with the id.",
35713
+ "type": {
35714
+ "kind": "SCALAR",
35715
+ "name": "String",
35716
+ "ofType": null
35717
+ },
35718
+ "defaultValue": null
35719
+ }
35720
+ ],
35721
+ "type": {
35722
+ "kind": "NON_NULL",
35723
+ "name": null,
35724
+ "ofType": {
35725
+ "kind": "OBJECT",
35726
+ "name": "ChangeShippingProviderResult",
35727
+ "ofType": null
35728
+ }
35729
+ },
35730
+ "isDeprecated": false,
35731
+ "deprecationReason": null
35732
+ },
35733
+ {
35734
+ "name": "swapOrderShippingProvider",
35735
+ "description": "Swap the shipping provider on an order WITHOUT recalculating the shipping price. The entire shipping price breakdown (order_amount, provider_amount, VAT variants, insurance) is captured before and restored after the swap. Use this when the carrier changes but the customer has already been charged and the shipping total must not move. For a fresh quote from the new provider, use `changeOrderShippingProvider` instead.",
35736
+ "args": [
35737
+ {
35738
+ "name": "orderId",
35739
+ "description": "Order ID.",
35740
+ "type": {
35741
+ "kind": "NON_NULL",
35742
+ "name": null,
35743
+ "ofType": {
35744
+ "kind": "SCALAR",
35745
+ "name": "ID",
35746
+ "ofType": null
35747
+ }
35748
+ },
35749
+ "defaultValue": null
35750
+ },
35751
+ {
35752
+ "name": "shippingProviderId",
35753
+ "description": "ID of the new shipping provider. Must belong to the current site.",
35754
+ "type": {
35755
+ "kind": "NON_NULL",
35756
+ "name": null,
35757
+ "ofType": {
35758
+ "kind": "SCALAR",
35759
+ "name": "ID",
35760
+ "ofType": null
35761
+ }
35762
+ },
35763
+ "defaultValue": null
35764
+ },
35765
+ {
35766
+ "name": "pickupPointId",
35767
+ "description": "Optional pickup point id (office/locker/marketplace) if the new provider requires one. When omitted and the provider needs a pickup, the mutation returns `requiresPickup=true` with the expected `pickupType` so the agent can re-invoke with the id.",
35768
+ "type": {
35769
+ "kind": "SCALAR",
35770
+ "name": "String",
35771
+ "ofType": null
35772
+ },
35773
+ "defaultValue": null
35774
+ }
35775
+ ],
35776
+ "type": {
35777
+ "kind": "NON_NULL",
35778
+ "name": null,
35779
+ "ofType": {
35780
+ "kind": "OBJECT",
35781
+ "name": "ChangeShippingProviderResult",
35782
+ "ofType": null
35783
+ }
35784
+ },
35785
+ "isDeprecated": false,
35786
+ "deprecationReason": null
35787
+ },
35788
+ {
35789
+ "name": "cancelShippingWaybill",
35790
+ "description": "Cancel a waybill (bill of lading) for an order.",
35791
+ "args": [
35792
+ {
35793
+ "name": "orderId",
35794
+ "description": "Order ID.",
35795
+ "type": {
35796
+ "kind": "NON_NULL",
35797
+ "name": null,
35798
+ "ofType": {
35799
+ "kind": "SCALAR",
35800
+ "name": "ID",
35801
+ "ofType": null
35802
+ }
35803
+ },
35804
+ "defaultValue": null
35805
+ }
35806
+ ],
35807
+ "type": {
35808
+ "kind": "NON_NULL",
35809
+ "name": null,
35810
+ "ofType": {
35811
+ "kind": "OBJECT",
35812
+ "name": "ShippingMutationResult",
35813
+ "ofType": null
35814
+ }
35815
+ },
35816
+ "isDeprecated": false,
35817
+ "deprecationReason": null
35818
+ },
35355
35819
  {
35356
35820
  "name": "calculateShipping",
35357
35821
  "description": "Calculate shipping rates for an order.",
@@ -38287,7 +38751,7 @@
38287
38751
  {
38288
38752
  "kind": "OBJECT",
38289
38753
  "name": "OrderPayment",
38290
- "description": "A payment record for an order.",
38754
+ "description": "A payment record for an order. This is the storefront-side view — for the full gateway record with provider_data, capture/refund history and raw provider response, read `gatewayPayment`.",
38291
38755
  "fields": [
38292
38756
  {
38293
38757
  "name": "id",
@@ -38323,7 +38787,7 @@
38323
38787
  },
38324
38788
  {
38325
38789
  "name": "provider",
38326
- "description": "Payment provider key.",
38790
+ "description": "Payment provider key (e.g. 'cod', 'stripe', 'borica_way4', 'paypal').",
38327
38791
  "args": [],
38328
38792
  "type": {
38329
38793
  "kind": "SCALAR",
@@ -38371,7 +38835,7 @@
38371
38835
  },
38372
38836
  {
38373
38837
  "name": "status",
38374
- "description": "Payment status.",
38838
+ "description": "Payment status: initiated | requested | pending | completed | authorized | refunded | cancelled | failed | timeouted.",
38375
38839
  "args": [],
38376
38840
  "type": {
38377
38841
  "kind": "SCALAR",
@@ -38416,6 +38880,86 @@
38416
38880
  },
38417
38881
  "isDeprecated": false,
38418
38882
  "deprecationReason": null
38883
+ },
38884
+ {
38885
+ "name": "gatewayPayment",
38886
+ "description": "Gateway-side payment record — contains raw provider response data, authorize amount, currency, and history. Null until the payment has been initiated on the gateway.",
38887
+ "args": [],
38888
+ "type": {
38889
+ "kind": "OBJECT",
38890
+ "name": "PaymentGatewayRecord",
38891
+ "ofType": null
38892
+ },
38893
+ "isDeprecated": false,
38894
+ "deprecationReason": null
38895
+ },
38896
+ {
38897
+ "name": "providerType",
38898
+ "description": "Payment provider type(s): e.g. offline, online, credit. Used by the admin UI to show/hide Mark-as-paid, Capture and Refund buttons.",
38899
+ "args": [],
38900
+ "type": {
38901
+ "kind": "LIST",
38902
+ "name": null,
38903
+ "ofType": {
38904
+ "kind": "NON_NULL",
38905
+ "name": null,
38906
+ "ofType": {
38907
+ "kind": "SCALAR",
38908
+ "name": "String",
38909
+ "ofType": null
38910
+ }
38911
+ }
38912
+ },
38913
+ "isDeprecated": false,
38914
+ "deprecationReason": null
38915
+ },
38916
+ {
38917
+ "name": "isOffline",
38918
+ "description": "True when the payment is an offline/manual one (COD, bank transfer) — enables `markPaymentPaid` mutation.",
38919
+ "args": [],
38920
+ "type": {
38921
+ "kind": "NON_NULL",
38922
+ "name": null,
38923
+ "ofType": {
38924
+ "kind": "SCALAR",
38925
+ "name": "Boolean",
38926
+ "ofType": null
38927
+ }
38928
+ },
38929
+ "isDeprecated": false,
38930
+ "deprecationReason": null
38931
+ },
38932
+ {
38933
+ "name": "canCapture",
38934
+ "description": "True when the payment has been authorized and can be captured via `capturePayment` (or cancelled via `cancelPayment`).",
38935
+ "args": [],
38936
+ "type": {
38937
+ "kind": "NON_NULL",
38938
+ "name": null,
38939
+ "ofType": {
38940
+ "kind": "SCALAR",
38941
+ "name": "Boolean",
38942
+ "ofType": null
38943
+ }
38944
+ },
38945
+ "isDeprecated": false,
38946
+ "deprecationReason": null
38947
+ },
38948
+ {
38949
+ "name": "canRefund",
38950
+ "description": "True when the payment is completed and can be refunded via `refundPayment`.",
38951
+ "args": [],
38952
+ "type": {
38953
+ "kind": "NON_NULL",
38954
+ "name": null,
38955
+ "ofType": {
38956
+ "kind": "SCALAR",
38957
+ "name": "Boolean",
38958
+ "ofType": null
38959
+ }
38960
+ },
38961
+ "isDeprecated": false,
38962
+ "deprecationReason": null
38419
38963
  }
38420
38964
  ],
38421
38965
  "inputFields": null,
@@ -38425,12 +38969,12 @@
38425
38969
  },
38426
38970
  {
38427
38971
  "kind": "OBJECT",
38428
- "name": "OrderShipping",
38429
- "description": "Shipping information for an order.",
38972
+ "name": "PaymentGatewayRecord",
38973
+ "description": "Full gateway-side payment record — exposes the raw provider data and authorization lifecycle details not captured on OrderPayment itself.",
38430
38974
  "fields": [
38431
38975
  {
38432
38976
  "name": "id",
38433
- "description": "Unique identifier.",
38977
+ "description": "Gateway payment ID.",
38434
38978
  "args": [],
38435
38979
  "type": {
38436
38980
  "kind": "NON_NULL",
@@ -38445,48 +38989,56 @@
38445
38989
  "deprecationReason": null
38446
38990
  },
38447
38991
  {
38448
- "name": "orderId",
38449
- "description": "Parent order ID.",
38992
+ "name": "provider",
38993
+ "description": "Provider key (e.g. 'stripe', 'borica_way4', 'cod').",
38450
38994
  "args": [],
38451
38995
  "type": {
38452
- "kind": "NON_NULL",
38453
- "name": null,
38454
- "ofType": {
38455
- "kind": "SCALAR",
38456
- "name": "ID",
38457
- "ofType": null
38458
- }
38996
+ "kind": "SCALAR",
38997
+ "name": "String",
38998
+ "ofType": null
38459
38999
  },
38460
39000
  "isDeprecated": false,
38461
39001
  "deprecationReason": null
38462
39002
  },
38463
39003
  {
38464
- "name": "providerId",
38465
- "description": "Shipping provider ID.",
39004
+ "name": "siteReferenceId",
39005
+ "description": "Order-payment reference (maps back to OrderPayment.id).",
38466
39006
  "args": [],
38467
39007
  "type": {
38468
39008
  "kind": "SCALAR",
38469
- "name": "ID",
39009
+ "name": "String",
38470
39010
  "ofType": null
38471
39011
  },
38472
39012
  "isDeprecated": false,
38473
39013
  "deprecationReason": null
38474
39014
  },
38475
39015
  {
38476
- "name": "serviceId",
38477
- "description": "Shipping service ID.",
39016
+ "name": "providerReferenceId",
39017
+ "description": "Provider-issued reference id (transaction id, charge id, etc.).",
38478
39018
  "args": [],
38479
39019
  "type": {
38480
39020
  "kind": "SCALAR",
38481
- "name": "ID",
39021
+ "name": "String",
38482
39022
  "ofType": null
38483
39023
  },
38484
39024
  "isDeprecated": false,
38485
39025
  "deprecationReason": null
38486
39026
  },
38487
39027
  {
38488
- "name": "serviceName",
38489
- "description": "Shipping service name.",
39028
+ "name": "amount",
39029
+ "description": "Payment amount in minor units (e.g. stotinki).",
39030
+ "args": [],
39031
+ "type": {
39032
+ "kind": "SCALAR",
39033
+ "name": "Int",
39034
+ "ofType": null
39035
+ },
39036
+ "isDeprecated": false,
39037
+ "deprecationReason": null
39038
+ },
39039
+ {
39040
+ "name": "currency",
39041
+ "description": "Currency ISO code (e.g. BGN, EUR, USD).",
38490
39042
  "args": [],
38491
39043
  "type": {
38492
39044
  "kind": "SCALAR",
@@ -38497,8 +39049,20 @@
38497
39049
  "deprecationReason": null
38498
39050
  },
38499
39051
  {
38500
- "name": "providerName",
38501
- "description": "Shipping provider name.",
39052
+ "name": "authorizeAmount",
39053
+ "description": "Authorized amount — set when the provider supports auth+capture, 0/null otherwise.",
39054
+ "args": [],
39055
+ "type": {
39056
+ "kind": "SCALAR",
39057
+ "name": "Int",
39058
+ "ofType": null
39059
+ },
39060
+ "isDeprecated": false,
39061
+ "deprecationReason": null
39062
+ },
39063
+ {
39064
+ "name": "status",
39065
+ "description": "Payment status — follows the same vocabulary as OrderPayment.status.",
38502
39066
  "args": [],
38503
39067
  "type": {
38504
39068
  "kind": "SCALAR",
@@ -38509,8 +39073,8 @@
38509
39073
  "deprecationReason": null
38510
39074
  },
38511
39075
  {
38512
- "name": "providerType",
38513
- "description": "Shipping provider type/integration key.",
39076
+ "name": "invoice",
39077
+ "description": "Invoice reference, if issued.",
38514
39078
  "args": [],
38515
39079
  "type": {
38516
39080
  "kind": "SCALAR",
@@ -38521,8 +39085,8 @@
38521
39085
  "deprecationReason": null
38522
39086
  },
38523
39087
  {
38524
- "name": "providerFrom",
38525
- "description": "Pickup/origin location.",
39088
+ "name": "clientEmail",
39089
+ "description": "Client email used when initiating the payment.",
38526
39090
  "args": [],
38527
39091
  "type": {
38528
39092
  "kind": "SCALAR",
@@ -38533,8 +39097,8 @@
38533
39097
  "deprecationReason": null
38534
39098
  },
38535
39099
  {
38536
- "name": "providerTo",
38537
- "description": "Delivery location.",
39100
+ "name": "country",
39101
+ "description": "Billing country.",
38538
39102
  "args": [],
38539
39103
  "type": {
38540
39104
  "kind": "SCALAR",
@@ -38545,36 +39109,36 @@
38545
39109
  "deprecationReason": null
38546
39110
  },
38547
39111
  {
38548
- "name": "orderAmount",
38549
- "description": "Order-side shipping amount (converted from cents).",
39112
+ "name": "providerData",
39113
+ "description": "Raw provider-specific data (JSON). May contain PCI-sensitive fields — prefer explicit fields above when available.",
38550
39114
  "args": [],
38551
39115
  "type": {
38552
39116
  "kind": "SCALAR",
38553
- "name": "Float",
39117
+ "name": "JSON",
38554
39118
  "ofType": null
38555
39119
  },
38556
39120
  "isDeprecated": false,
38557
39121
  "deprecationReason": null
38558
39122
  },
38559
39123
  {
38560
- "name": "providerAmount",
38561
- "description": "Provider-side shipping amount (converted from cents).",
39124
+ "name": "dateRequested",
39125
+ "description": "When the payment was first requested from the provider.",
38562
39126
  "args": [],
38563
39127
  "type": {
38564
39128
  "kind": "SCALAR",
38565
- "name": "Float",
39129
+ "name": "DateTime",
38566
39130
  "ofType": null
38567
39131
  },
38568
39132
  "isDeprecated": false,
38569
39133
  "deprecationReason": null
38570
39134
  },
38571
39135
  {
38572
- "name": "providerInsurance",
38573
- "description": "Provider insurance amount (converted from cents).",
39136
+ "name": "dateLastUpdated",
39137
+ "description": "When the record was last updated.",
38574
39138
  "args": [],
38575
39139
  "type": {
38576
39140
  "kind": "SCALAR",
38577
- "name": "Float",
39141
+ "name": "DateTime",
38578
39142
  "ofType": null
38579
39143
  },
38580
39144
  "isDeprecated": false,
@@ -38588,8 +39152,171 @@
38588
39152
  },
38589
39153
  {
38590
39154
  "kind": "OBJECT",
38591
- "name": "ShippingAddress",
38592
- "description": "Shipping address for an order.",
39155
+ "name": "OrderShipping",
39156
+ "description": "Shipping information for an order.",
39157
+ "fields": [
39158
+ {
39159
+ "name": "id",
39160
+ "description": "Unique identifier.",
39161
+ "args": [],
39162
+ "type": {
39163
+ "kind": "NON_NULL",
39164
+ "name": null,
39165
+ "ofType": {
39166
+ "kind": "SCALAR",
39167
+ "name": "ID",
39168
+ "ofType": null
39169
+ }
39170
+ },
39171
+ "isDeprecated": false,
39172
+ "deprecationReason": null
39173
+ },
39174
+ {
39175
+ "name": "orderId",
39176
+ "description": "Parent order ID.",
39177
+ "args": [],
39178
+ "type": {
39179
+ "kind": "NON_NULL",
39180
+ "name": null,
39181
+ "ofType": {
39182
+ "kind": "SCALAR",
39183
+ "name": "ID",
39184
+ "ofType": null
39185
+ }
39186
+ },
39187
+ "isDeprecated": false,
39188
+ "deprecationReason": null
39189
+ },
39190
+ {
39191
+ "name": "providerId",
39192
+ "description": "Shipping provider ID.",
39193
+ "args": [],
39194
+ "type": {
39195
+ "kind": "SCALAR",
39196
+ "name": "ID",
39197
+ "ofType": null
39198
+ },
39199
+ "isDeprecated": false,
39200
+ "deprecationReason": null
39201
+ },
39202
+ {
39203
+ "name": "serviceId",
39204
+ "description": "Shipping service ID.",
39205
+ "args": [],
39206
+ "type": {
39207
+ "kind": "SCALAR",
39208
+ "name": "ID",
39209
+ "ofType": null
39210
+ },
39211
+ "isDeprecated": false,
39212
+ "deprecationReason": null
39213
+ },
39214
+ {
39215
+ "name": "serviceName",
39216
+ "description": "Shipping service name.",
39217
+ "args": [],
39218
+ "type": {
39219
+ "kind": "SCALAR",
39220
+ "name": "String",
39221
+ "ofType": null
39222
+ },
39223
+ "isDeprecated": false,
39224
+ "deprecationReason": null
39225
+ },
39226
+ {
39227
+ "name": "providerName",
39228
+ "description": "Shipping provider name.",
39229
+ "args": [],
39230
+ "type": {
39231
+ "kind": "SCALAR",
39232
+ "name": "String",
39233
+ "ofType": null
39234
+ },
39235
+ "isDeprecated": false,
39236
+ "deprecationReason": null
39237
+ },
39238
+ {
39239
+ "name": "providerType",
39240
+ "description": "Shipping provider type/integration key.",
39241
+ "args": [],
39242
+ "type": {
39243
+ "kind": "SCALAR",
39244
+ "name": "String",
39245
+ "ofType": null
39246
+ },
39247
+ "isDeprecated": false,
39248
+ "deprecationReason": null
39249
+ },
39250
+ {
39251
+ "name": "providerFrom",
39252
+ "description": "Pickup/origin location.",
39253
+ "args": [],
39254
+ "type": {
39255
+ "kind": "SCALAR",
39256
+ "name": "String",
39257
+ "ofType": null
39258
+ },
39259
+ "isDeprecated": false,
39260
+ "deprecationReason": null
39261
+ },
39262
+ {
39263
+ "name": "providerTo",
39264
+ "description": "Delivery location.",
39265
+ "args": [],
39266
+ "type": {
39267
+ "kind": "SCALAR",
39268
+ "name": "String",
39269
+ "ofType": null
39270
+ },
39271
+ "isDeprecated": false,
39272
+ "deprecationReason": null
39273
+ },
39274
+ {
39275
+ "name": "orderAmount",
39276
+ "description": "Order-side shipping amount (converted from cents).",
39277
+ "args": [],
39278
+ "type": {
39279
+ "kind": "SCALAR",
39280
+ "name": "Float",
39281
+ "ofType": null
39282
+ },
39283
+ "isDeprecated": false,
39284
+ "deprecationReason": null
39285
+ },
39286
+ {
39287
+ "name": "providerAmount",
39288
+ "description": "Provider-side shipping amount (converted from cents).",
39289
+ "args": [],
39290
+ "type": {
39291
+ "kind": "SCALAR",
39292
+ "name": "Float",
39293
+ "ofType": null
39294
+ },
39295
+ "isDeprecated": false,
39296
+ "deprecationReason": null
39297
+ },
39298
+ {
39299
+ "name": "providerInsurance",
39300
+ "description": "Provider insurance amount (converted from cents).",
39301
+ "args": [],
39302
+ "type": {
39303
+ "kind": "SCALAR",
39304
+ "name": "Float",
39305
+ "ofType": null
39306
+ },
39307
+ "isDeprecated": false,
39308
+ "deprecationReason": null
39309
+ }
39310
+ ],
39311
+ "inputFields": null,
39312
+ "interfaces": [],
39313
+ "enumValues": null,
39314
+ "possibleTypes": null
39315
+ },
39316
+ {
39317
+ "kind": "OBJECT",
39318
+ "name": "ShippingAddress",
39319
+ "description": "Shipping address for an order.",
38593
39320
  "fields": [
38594
39321
  {
38595
39322
  "name": "id",
@@ -40891,6 +41618,73 @@
40891
41618
  "ofType": null
40892
41619
  },
40893
41620
  "defaultValue": null
41621
+ },
41622
+ {
41623
+ "name": "discount_value",
41624
+ "description": "New discount value to apply to the existing line discount. Scoped to `discounts.global.type_value` — only applies if the product already has a discount. Format: absolute currency amount for flat/fixed discounts, percentage for percent discounts.",
41625
+ "type": {
41626
+ "kind": "SCALAR",
41627
+ "name": "Float",
41628
+ "ofType": null
41629
+ },
41630
+ "defaultValue": null
41631
+ },
41632
+ {
41633
+ "name": "options",
41634
+ "description": "Updates to individual product options on this line item. Use the option `id` from `OrderProduct.options`. Each option`s `discount_price` follows its amount type (percent vs absolute).",
41635
+ "type": {
41636
+ "kind": "LIST",
41637
+ "name": null,
41638
+ "ofType": {
41639
+ "kind": "NON_NULL",
41640
+ "name": null,
41641
+ "ofType": {
41642
+ "kind": "INPUT_OBJECT",
41643
+ "name": "UpdateOrderProductOptionInput",
41644
+ "ofType": null
41645
+ }
41646
+ }
41647
+ },
41648
+ "defaultValue": null
41649
+ }
41650
+ ],
41651
+ "interfaces": null,
41652
+ "enumValues": null,
41653
+ "possibleTypes": null
41654
+ },
41655
+ {
41656
+ "kind": "INPUT_OBJECT",
41657
+ "name": "UpdateOrderProductOptionInput",
41658
+ "description": "Update a single option`s price/amount on an order line item.",
41659
+ "fields": null,
41660
+ "inputFields": [
41661
+ {
41662
+ "name": "id",
41663
+ "description": "Option ID (from OrderProduct.options[].id).",
41664
+ "type": {
41665
+ "kind": "NON_NULL",
41666
+ "name": null,
41667
+ "ofType": {
41668
+ "kind": "SCALAR",
41669
+ "name": "ID",
41670
+ "ofType": null
41671
+ }
41672
+ },
41673
+ "defaultValue": null
41674
+ },
41675
+ {
41676
+ "name": "discount_price",
41677
+ "description": "Option price override. For options with `amount_type = percent`, this is a percentage value (0..100). For absolute options, this is a currency amount.",
41678
+ "type": {
41679
+ "kind": "NON_NULL",
41680
+ "name": null,
41681
+ "ofType": {
41682
+ "kind": "SCALAR",
41683
+ "name": "Float",
41684
+ "ofType": null
41685
+ }
41686
+ },
41687
+ "defaultValue": null
40894
41688
  }
40895
41689
  ],
40896
41690
  "interfaces": null,
@@ -41001,12 +41795,77 @@
41001
41795
  "enumValues": null,
41002
41796
  "possibleTypes": null
41003
41797
  },
41798
+ {
41799
+ "kind": "ENUM",
41800
+ "name": "ShippingDeliveryType",
41801
+ "description": "Type of delivery destination on an order. Determines which fields are written to the shipping address and which are cleared. When omitted from UpdateShippingAddressInput, the resolver infers from supplied fields (office_id -> OFFICE/LOCKER per office_type; marketplace_id -> MARKETPLACE; street_name or street_number -> ADDRESS).",
41802
+ "fields": null,
41803
+ "inputFields": null,
41804
+ "interfaces": null,
41805
+ "enumValues": [
41806
+ {
41807
+ "name": "ADDRESS",
41808
+ "description": "Door-to-door delivery to a street address. Clears office/locker/marketplace data.",
41809
+ "isDeprecated": false,
41810
+ "deprecationReason": null
41811
+ },
41812
+ {
41813
+ "name": "OFFICE",
41814
+ "description": "Delivery to the provider's office. Sets office_id + office_type=0, clears street + marketplace.",
41815
+ "isDeprecated": false,
41816
+ "deprecationReason": null
41817
+ },
41818
+ {
41819
+ "name": "LOCKER",
41820
+ "description": "Delivery to a parcel locker. Sets office_id + office_type=1, clears street + marketplace.",
41821
+ "isDeprecated": false,
41822
+ "deprecationReason": null
41823
+ },
41824
+ {
41825
+ "name": "MARKETPLACE",
41826
+ "description": "Delivery to a marketplace pickup point. Sets marketplace fields, clears office + street.",
41827
+ "isDeprecated": false,
41828
+ "deprecationReason": null
41829
+ }
41830
+ ],
41831
+ "possibleTypes": null
41832
+ },
41004
41833
  {
41005
41834
  "kind": "INPUT_OBJECT",
41006
41835
  "name": "UpdateShippingAddressInput",
41007
41836
  "description": "Input for updating a shipping address.",
41008
41837
  "fields": null,
41009
41838
  "inputFields": [
41839
+ {
41840
+ "name": "delivery_type",
41841
+ "description": "Delivery type. If omitted, inferred from which fields are supplied. Choosing ADDRESS clears office/marketplace; choosing OFFICE/LOCKER clears street/marketplace; choosing MARKETPLACE clears the rest. This prevents stale data when switching between pickup modes.",
41842
+ "type": {
41843
+ "kind": "ENUM",
41844
+ "name": "ShippingDeliveryType",
41845
+ "ofType": null
41846
+ },
41847
+ "defaultValue": null
41848
+ },
41849
+ {
41850
+ "name": "marketplace_id",
41851
+ "description": "Marketplace pickup point id (used with delivery_type: MARKETPLACE).",
41852
+ "type": {
41853
+ "kind": "SCALAR",
41854
+ "name": "String",
41855
+ "ofType": null
41856
+ },
41857
+ "defaultValue": null
41858
+ },
41859
+ {
41860
+ "name": "marketplace_name",
41861
+ "description": "Marketplace pickup point name (used with delivery_type: MARKETPLACE).",
41862
+ "type": {
41863
+ "kind": "SCALAR",
41864
+ "name": "String",
41865
+ "ofType": null
41866
+ },
41867
+ "defaultValue": null
41868
+ },
41010
41869
  {
41011
41870
  "name": "first_name",
41012
41871
  "description": "First name.",
@@ -56302,133 +57161,21 @@
56302
57161
  },
56303
57162
  {
56304
57163
  "kind": "ENUM",
56305
- "name": "AnalyticsCompare",
56306
- "description": "Period comparison mode.",
56307
- "fields": null,
56308
- "inputFields": null,
56309
- "interfaces": null,
56310
- "enumValues": [
56311
- {
56312
- "name": "none",
56313
- "description": "No comparison — single period only.",
56314
- "isDeprecated": false,
56315
- "deprecationReason": null
56316
- },
56317
- {
56318
- "name": "previous_period",
56319
- "description": "Compare with the immediately preceding period of equal length.",
56320
- "isDeprecated": false,
56321
- "deprecationReason": null
56322
- },
56323
- {
56324
- "name": "previous_year",
56325
- "description": "Compare with the same dates from the previous year.",
56326
- "isDeprecated": false,
56327
- "deprecationReason": null
56328
- }
56329
- ],
56330
- "possibleTypes": null
56331
- },
56332
- {
56333
- "kind": "ENUM",
56334
- "name": "AnalyticsGroup",
56335
- "description": "Time-bucketing interval for data points.",
56336
- "fields": null,
56337
- "inputFields": null,
56338
- "interfaces": null,
56339
- "enumValues": [
56340
- {
56341
- "name": "auto",
56342
- "description": "Server picks the best interval based on date-range length.",
56343
- "isDeprecated": false,
56344
- "deprecationReason": null
56345
- },
56346
- {
56347
- "name": "hourly",
56348
- "description": null,
56349
- "isDeprecated": false,
56350
- "deprecationReason": null
56351
- },
56352
- {
56353
- "name": "daily",
56354
- "description": null,
56355
- "isDeprecated": false,
56356
- "deprecationReason": null
56357
- },
56358
- {
56359
- "name": "weekly",
56360
- "description": null,
56361
- "isDeprecated": false,
56362
- "deprecationReason": null
56363
- },
56364
- {
56365
- "name": "monthly",
56366
- "description": null,
56367
- "isDeprecated": false,
56368
- "deprecationReason": null
56369
- },
56370
- {
56371
- "name": "quarterly",
56372
- "description": null,
56373
- "isDeprecated": false,
56374
- "deprecationReason": null
56375
- },
56376
- {
56377
- "name": "yearly",
56378
- "description": null,
56379
- "isDeprecated": false,
56380
- "deprecationReason": null
56381
- },
56382
- {
56383
- "name": "none",
56384
- "description": "No bucketing — aggregate the entire range into one value.",
56385
- "isDeprecated": false,
56386
- "deprecationReason": null
56387
- }
56388
- ],
56389
- "possibleTypes": null
56390
- },
56391
- {
56392
- "kind": "ENUM",
56393
- "name": "AnalyticsLevel",
56394
- "description": "Drill-down depth for an analytics report.",
57164
+ "name": "CustomerEmailType",
57165
+ "description": "Delivery classification for an ad-hoc customer email. Drives consent filtering on dispatch.",
56395
57166
  "fields": null,
56396
57167
  "inputFields": null,
56397
57168
  "interfaces": null,
56398
57169
  "enumValues": [
56399
57170
  {
56400
- "name": "dashboard",
56401
- "description": null,
56402
- "isDeprecated": false,
56403
- "deprecationReason": null
56404
- },
56405
- {
56406
- "name": "details",
56407
- "description": null,
56408
- "isDeprecated": false,
56409
- "deprecationReason": null
56410
- },
56411
- {
56412
- "name": "view_more",
56413
- "description": null,
56414
- "isDeprecated": false,
56415
- "deprecationReason": null
56416
- },
56417
- {
56418
- "name": "sub_dashboard",
56419
- "description": null,
56420
- "isDeprecated": false,
56421
- "deprecationReason": null
56422
- },
56423
- {
56424
- "name": "sub_details",
56425
- "description": null,
57171
+ "name": "TRANSACTIONAL",
57172
+ "description": "Transactional / service message. Sent regardless of marketing opt-in. Use for refund explanations, account notices, order follow-ups.",
56426
57173
  "isDeprecated": false,
56427
57174
  "deprecationReason": null
56428
57175
  },
56429
57176
  {
56430
- "name": "more_details",
56431
- "description": null,
57177
+ "name": "MARKETING",
57178
+ "description": "Marketing / promotional. Only delivered to customers with marketing opt-in (Customer.marketingPrefs.marketing = yes). Skipped recipients are reported in the payload.",
56432
57179
  "isDeprecated": false,
56433
57180
  "deprecationReason": null
56434
57181
  }
@@ -56437,45 +57184,33 @@
56437
57184
  },
56438
57185
  {
56439
57186
  "kind": "ENUM",
56440
- "name": "MetricType",
56441
- "description": "Semantic data-type annotation for a column value.",
57187
+ "name": "CustomerEmailJobStatus",
57188
+ "description": "Lifecycle state of a customer-email batch.",
56442
57189
  "fields": null,
56443
57190
  "inputFields": null,
56444
57191
  "interfaces": null,
56445
57192
  "enumValues": [
56446
57193
  {
56447
- "name": "integer",
56448
- "description": null,
56449
- "isDeprecated": false,
56450
- "deprecationReason": null
56451
- },
56452
- {
56453
- "name": "float",
56454
- "description": null,
56455
- "isDeprecated": false,
56456
- "deprecationReason": null
56457
- },
56458
- {
56459
- "name": "currency",
56460
- "description": null,
57194
+ "name": "PENDING",
57195
+ "description": "Batch created, jobs not yet picked up by a worker.",
56461
57196
  "isDeprecated": false,
56462
57197
  "deprecationReason": null
56463
57198
  },
56464
57199
  {
56465
- "name": "percent",
56466
- "description": null,
57200
+ "name": "PROCESSING",
57201
+ "description": "Worker is processing at least one job in the batch.",
56467
57202
  "isDeprecated": false,
56468
57203
  "deprecationReason": null
56469
57204
  },
56470
57205
  {
56471
- "name": "string",
56472
- "description": null,
57206
+ "name": "FINISHED",
57207
+ "description": "All jobs in the batch finished (any mix of successes and failures).",
56473
57208
  "isDeprecated": false,
56474
57209
  "deprecationReason": null
56475
57210
  },
56476
57211
  {
56477
- "name": "date",
56478
- "description": null,
57212
+ "name": "CANCELLED",
57213
+ "description": "Batch was cancelled before completion.",
56479
57214
  "isDeprecated": false,
56480
57215
  "deprecationReason": null
56481
57216
  }
@@ -56484,19 +57219,19 @@
56484
57219
  },
56485
57220
  {
56486
57221
  "kind": "OBJECT",
56487
- "name": "AnalyticsReport",
56488
- "description": "GA4-inspired analytics report envelope.",
57222
+ "name": "CustomerEmailJob",
57223
+ "description": "Tracking record for a sendCustomerEmail dispatch. One per mutation call, regardless of recipient count.",
56489
57224
  "fields": [
56490
57225
  {
56491
- "name": "box",
56492
- "description": "Report identifier (kebab-case, e.g. total-sales).",
57226
+ "name": "id",
57227
+ "description": "Batch ID (UUID). Persists after completion; use to poll status.",
56493
57228
  "args": [],
56494
57229
  "type": {
56495
57230
  "kind": "NON_NULL",
56496
57231
  "name": null,
56497
57232
  "ofType": {
56498
57233
  "kind": "SCALAR",
56499
- "name": "String",
57234
+ "name": "ID",
56500
57235
  "ofType": null
56501
57236
  }
56502
57237
  },
@@ -56504,15 +57239,15 @@
56504
57239
  "deprecationReason": null
56505
57240
  },
56506
57241
  {
56507
- "name": "compare",
56508
- "description": "Comparison mode that was applied.",
57242
+ "name": "status",
57243
+ "description": "Current state.",
56509
57244
  "args": [],
56510
57245
  "type": {
56511
57246
  "kind": "NON_NULL",
56512
57247
  "name": null,
56513
57248
  "ofType": {
56514
- "kind": "SCALAR",
56515
- "name": "String",
57249
+ "kind": "ENUM",
57250
+ "name": "CustomerEmailJobStatus",
56516
57251
  "ofType": null
56517
57252
  }
56518
57253
  },
@@ -56520,15 +57255,15 @@
56520
57255
  "deprecationReason": null
56521
57256
  },
56522
57257
  {
56523
- "name": "groupBy",
56524
- "description": "Effective grouping interval after auto-resolution.",
57258
+ "name": "totalJobs",
57259
+ "description": "Total recipients queued (after consent and missing-email filtering).",
56525
57260
  "args": [],
56526
57261
  "type": {
56527
57262
  "kind": "NON_NULL",
56528
57263
  "name": null,
56529
57264
  "ofType": {
56530
57265
  "kind": "SCALAR",
56531
- "name": "String",
57266
+ "name": "Int",
56532
57267
  "ofType": null
56533
57268
  }
56534
57269
  },
@@ -56536,8 +57271,8 @@
56536
57271
  "deprecationReason": null
56537
57272
  },
56538
57273
  {
56539
- "name": "daysDiff",
56540
- "description": "Number of days in the primary date range.",
57274
+ "name": "pendingJobs",
57275
+ "description": "Jobs still waiting to run.",
56541
57276
  "args": [],
56542
57277
  "type": {
56543
57278
  "kind": "NON_NULL",
@@ -56552,102 +57287,63 @@
56552
57287
  "deprecationReason": null
56553
57288
  },
56554
57289
  {
56555
- "name": "dateRanges",
56556
- "description": "Resolved date ranges first is current, second (if any) is comparison.",
57290
+ "name": "processedJobs",
57291
+ "description": "Jobs that finished running (both successful and failed). Strict success count is processedJobs - failedJobs.",
56557
57292
  "args": [],
56558
57293
  "type": {
56559
57294
  "kind": "NON_NULL",
56560
57295
  "name": null,
56561
57296
  "ofType": {
56562
- "kind": "LIST",
56563
- "name": null,
56564
- "ofType": {
56565
- "kind": "NON_NULL",
56566
- "name": null,
56567
- "ofType": {
56568
- "kind": "OBJECT",
56569
- "name": "AnalyticsDateRange",
56570
- "ofType": null
56571
- }
56572
- }
57297
+ "kind": "SCALAR",
57298
+ "name": "Int",
57299
+ "ofType": null
56573
57300
  }
56574
57301
  },
56575
57302
  "isDeprecated": false,
56576
57303
  "deprecationReason": null
56577
57304
  },
56578
57305
  {
56579
- "name": "summary",
56580
- "description": "Headline KPI with period-over-period change. Null for levels without a summary.",
56581
- "args": [],
56582
- "type": {
56583
- "kind": "OBJECT",
56584
- "name": "ReportSummary",
56585
- "ofType": null
56586
- },
56587
- "isDeprecated": false,
56588
- "deprecationReason": null
56589
- },
56590
- {
56591
- "name": "columns",
56592
- "description": "Typed column schema describing each position in `rows`.",
57306
+ "name": "failedJobs",
57307
+ "description": "Jobs that errored. Individual failures don't fail the batch.",
56593
57308
  "args": [],
56594
57309
  "type": {
56595
57310
  "kind": "NON_NULL",
56596
57311
  "name": null,
56597
57312
  "ofType": {
56598
- "kind": "LIST",
56599
- "name": null,
56600
- "ofType": {
56601
- "kind": "NON_NULL",
56602
- "name": null,
56603
- "ofType": {
56604
- "kind": "OBJECT",
56605
- "name": "ColumnHeader",
56606
- "ofType": null
56607
- }
56608
- }
57313
+ "kind": "SCALAR",
57314
+ "name": "Int",
57315
+ "ofType": null
56609
57316
  }
56610
57317
  },
56611
57318
  "isDeprecated": false,
56612
57319
  "deprecationReason": null
56613
57320
  },
56614
57321
  {
56615
- "name": "rows",
56616
- "description": "Tabular data each inner array maps positionally to `columns`. All values are strings (GA4 convention).",
57322
+ "name": "progress",
57323
+ "description": "Progress percentage (0–100). Computed as processedJobs / totalJobs * 100, or 100 when totalJobs is 0.",
56617
57324
  "args": [],
56618
57325
  "type": {
56619
57326
  "kind": "NON_NULL",
56620
57327
  "name": null,
56621
57328
  "ofType": {
56622
- "kind": "LIST",
56623
- "name": null,
56624
- "ofType": {
56625
- "kind": "NON_NULL",
56626
- "name": null,
56627
- "ofType": {
56628
- "kind": "LIST",
56629
- "name": null,
56630
- "ofType": {
56631
- "kind": "SCALAR",
56632
- "name": "String"
56633
- }
56634
- }
56635
- }
57329
+ "kind": "SCALAR",
57330
+ "name": "Int",
57331
+ "ofType": null
56636
57332
  }
56637
57333
  },
56638
57334
  "isDeprecated": false,
56639
57335
  "deprecationReason": null
56640
57336
  },
56641
57337
  {
56642
- "name": "rowCount",
56643
- "description": "Total row count before pagination (for offset-based paging).",
57338
+ "name": "createdAt",
57339
+ "description": "UTC timestamp the batch was created.",
56644
57340
  "args": [],
56645
57341
  "type": {
56646
57342
  "kind": "NON_NULL",
56647
57343
  "name": null,
56648
57344
  "ofType": {
56649
57345
  "kind": "SCALAR",
56650
- "name": "Int",
57346
+ "name": "DateTime",
56651
57347
  "ofType": null
56652
57348
  }
56653
57349
  },
@@ -56655,17 +57351,13 @@
56655
57351
  "deprecationReason": null
56656
57352
  },
56657
57353
  {
56658
- "name": "data",
56659
- "description": "Complete formatter output chart datasets, funnel stages, device breakdowns, etc.",
57354
+ "name": "finishedAt",
57355
+ "description": "UTC timestamp the batch finished, if it has.",
56660
57356
  "args": [],
56661
57357
  "type": {
56662
- "kind": "NON_NULL",
56663
- "name": null,
56664
- "ofType": {
56665
- "kind": "SCALAR",
56666
- "name": "JSON",
56667
- "ofType": null
56668
- }
57358
+ "kind": "SCALAR",
57359
+ "name": "DateTime",
57360
+ "ofType": null
56669
57361
  },
56670
57362
  "isDeprecated": false,
56671
57363
  "deprecationReason": null
@@ -56678,28 +57370,32 @@
56678
57370
  },
56679
57371
  {
56680
57372
  "kind": "OBJECT",
56681
- "name": "AnalyticsDateRange",
56682
- "description": "A resolved (computed) date range.",
57373
+ "name": "CustomerEmailUserError",
57374
+ "description": "Per-error detail for sendCustomerEmail validation failures.",
56683
57375
  "fields": [
56684
57376
  {
56685
- "name": "startDate",
56686
- "description": "Start date (ISO 8601).",
57377
+ "name": "field",
57378
+ "description": "Path to the offending input field. Empty when the error is global.",
56687
57379
  "args": [],
56688
57380
  "type": {
56689
- "kind": "NON_NULL",
57381
+ "kind": "LIST",
56690
57382
  "name": null,
56691
57383
  "ofType": {
56692
- "kind": "SCALAR",
56693
- "name": "String",
56694
- "ofType": null
57384
+ "kind": "NON_NULL",
57385
+ "name": null,
57386
+ "ofType": {
57387
+ "kind": "SCALAR",
57388
+ "name": "String",
57389
+ "ofType": null
57390
+ }
56695
57391
  }
56696
57392
  },
56697
57393
  "isDeprecated": false,
56698
57394
  "deprecationReason": null
56699
57395
  },
56700
57396
  {
56701
- "name": "endDate",
56702
- "description": "End date (ISO 8601).",
57397
+ "name": "message",
57398
+ "description": "Human-readable error message.",
56703
57399
  "args": [],
56704
57400
  "type": {
56705
57401
  "kind": "NON_NULL",
@@ -56714,17 +57410,13 @@
56714
57410
  "deprecationReason": null
56715
57411
  },
56716
57412
  {
56717
- "name": "name",
56718
- "description": "Label: current or previous.",
57413
+ "name": "code",
57414
+ "description": "Machine-readable error code.",
56719
57415
  "args": [],
56720
57416
  "type": {
56721
- "kind": "NON_NULL",
56722
- "name": null,
56723
- "ofType": {
56724
- "kind": "SCALAR",
56725
- "name": "String",
56726
- "ofType": null
56727
- }
57417
+ "kind": "ENUM",
57418
+ "name": "CustomerEmailErrorCode",
57419
+ "ofType": null
56728
57420
  },
56729
57421
  "isDeprecated": false,
56730
57422
  "deprecationReason": null
@@ -56736,95 +57428,79 @@
56736
57428
  "possibleTypes": null
56737
57429
  },
56738
57430
  {
56739
- "kind": "OBJECT",
56740
- "name": "ReportSummary",
56741
- "description": "Aggregated headline KPI with comparison.",
56742
- "fields": [
57431
+ "kind": "ENUM",
57432
+ "name": "CustomerEmailErrorCode",
57433
+ "description": "Enumerated failure modes for sendCustomerEmail.",
57434
+ "fields": null,
57435
+ "inputFields": null,
57436
+ "interfaces": null,
57437
+ "enumValues": [
56743
57438
  {
56744
- "name": "current",
56745
- "description": "Current-period headline value.",
56746
- "args": [],
56747
- "type": {
56748
- "kind": "SCALAR",
56749
- "name": "String",
56750
- "ofType": null
56751
- },
57439
+ "name": "NO_RECIPIENTS",
57440
+ "description": "No recipients could be resolved from the supplied targeting.",
56752
57441
  "isDeprecated": false,
56753
57442
  "deprecationReason": null
56754
57443
  },
56755
57444
  {
56756
- "name": "previous",
56757
- "description": "Previous-period headline value (null when compare=none).",
56758
- "args": [],
56759
- "type": {
56760
- "kind": "SCALAR",
56761
- "name": "String",
56762
- "ofType": null
56763
- },
57445
+ "name": "BODY_REQUIRED",
57446
+ "description": "Neither html nor text was provided, or both were empty.",
56764
57447
  "isDeprecated": false,
56765
57448
  "deprecationReason": null
56766
57449
  },
56767
57450
  {
56768
- "name": "changePercent",
56769
- "description": "Percentage change between periods.",
56770
- "args": [],
56771
- "type": {
56772
- "kind": "SCALAR",
56773
- "name": "Float",
56774
- "ofType": null
56775
- },
57451
+ "name": "TARGETING_REQUIRED",
57452
+ "description": "None of customer_id / customer_ids / segment_id was supplied.",
56776
57453
  "isDeprecated": false,
56777
57454
  "deprecationReason": null
56778
57455
  },
56779
57456
  {
56780
- "name": "trend",
56781
- "description": "Trend direction: up, down, or null when flat / no comparison.",
56782
- "args": [],
56783
- "type": {
56784
- "kind": "SCALAR",
56785
- "name": "String",
56786
- "ofType": null
56787
- },
57457
+ "name": "TARGETING_EXCLUSIVE",
57458
+ "description": "More than one targeting mode was supplied; exactly one is allowed.",
57459
+ "isDeprecated": false,
57460
+ "deprecationReason": null
57461
+ },
57462
+ {
57463
+ "name": "SUBJECT_REQUIRED",
57464
+ "description": "subject was empty or whitespace.",
57465
+ "isDeprecated": false,
57466
+ "deprecationReason": null
57467
+ },
57468
+ {
57469
+ "name": "INVALID_EMAIL",
57470
+ "description": "reply_to was supplied but not a valid email address.",
56788
57471
  "isDeprecated": false,
56789
57472
  "deprecationReason": null
56790
57473
  }
56791
57474
  ],
56792
- "inputFields": null,
56793
- "interfaces": [],
56794
- "enumValues": null,
56795
57475
  "possibleTypes": null
56796
57476
  },
56797
57477
  {
56798
57478
  "kind": "OBJECT",
56799
- "name": "ColumnHeader",
56800
- "description": "Describes one column in the `rows` array.",
57479
+ "name": "SendCustomerEmailPayload",
57480
+ "description": "Response for sendCustomerEmail.",
56801
57481
  "fields": [
56802
57482
  {
56803
- "name": "name",
56804
- "description": "Machine-readable column identifier.",
57483
+ "name": "job",
57484
+ "description": "Tracking record. Null when userErrors is non-empty (dispatch did not happen).",
56805
57485
  "args": [],
56806
57486
  "type": {
56807
- "kind": "NON_NULL",
56808
- "name": null,
56809
- "ofType": {
56810
- "kind": "SCALAR",
56811
- "name": "String",
56812
- "ofType": null
56813
- }
57487
+ "kind": "OBJECT",
57488
+ "name": "CustomerEmailJob",
57489
+ "ofType": null
56814
57490
  },
56815
57491
  "isDeprecated": false,
56816
57492
  "deprecationReason": null
56817
57493
  },
56818
57494
  {
56819
- "name": "type",
56820
- "description": "Semantic data type for parsing / formatting.",
57495
+ "name": "skippedByConsent",
57496
+ "description": "Number of customers filtered out because they have not opted in to marketing (only applies when type = MARKETING).",
56821
57497
  "args": [],
56822
57498
  "type": {
56823
57499
  "kind": "NON_NULL",
56824
57500
  "name": null,
56825
57501
  "ofType": {
56826
- "kind": "ENUM",
56827
- "name": "MetricType",
57502
+ "kind": "SCALAR",
57503
+ "name": "Int",
56828
57504
  "ofType": null
56829
57505
  }
56830
57506
  },
@@ -56832,35 +57508,36 @@
56832
57508
  "deprecationReason": null
56833
57509
  },
56834
57510
  {
56835
- "name": "label",
56836
- "description": "Human-readable label.",
57511
+ "name": "skippedByMissingEmail",
57512
+ "description": "Number of customers filtered out because they have no email address on file.",
56837
57513
  "args": [],
56838
57514
  "type": {
56839
57515
  "kind": "NON_NULL",
56840
57516
  "name": null,
56841
57517
  "ofType": {
56842
57518
  "kind": "SCALAR",
56843
- "name": "String",
57519
+ "name": "Int",
56844
57520
  "ofType": null
56845
57521
  }
56846
57522
  },
56847
57523
  "isDeprecated": false,
56848
57524
  "deprecationReason": null
56849
- }
56850
- ],
56851
- "inputFields": null,
56852
- "interfaces": [],
56853
- "enumValues": null,
56854
- "possibleTypes": null
56855
- },
56856
- {
56857
- "kind": "OBJECT",
56858
- "name": "AnalyticsMetadata",
56859
- "description": "Catalogue of available analytics reports and their capabilities.",
56860
- "fields": [
57525
+ },
56861
57526
  {
56862
- "name": "reports",
56863
- "description": "All available report boxes.",
57527
+ "name": "complianceHint",
57528
+ "description": "Compliance reminder. Non-null when type = MARKETING — advises the caller to include opt-out wording in the body until auto-injected unsubscribe lands.",
57529
+ "args": [],
57530
+ "type": {
57531
+ "kind": "SCALAR",
57532
+ "name": "String",
57533
+ "ofType": null
57534
+ },
57535
+ "isDeprecated": false,
57536
+ "deprecationReason": null
57537
+ },
57538
+ {
57539
+ "name": "userErrors",
57540
+ "description": "Validation / business-rule errors. Empty on success.",
56864
57541
  "args": [],
56865
57542
  "type": {
56866
57543
  "kind": "NON_NULL",
@@ -56873,7 +57550,7 @@
56873
57550
  "name": null,
56874
57551
  "ofType": {
56875
57552
  "kind": "OBJECT",
56876
- "name": "ReportMeta",
57553
+ "name": "CustomerEmailUserError",
56877
57554
  "ofType": null
56878
57555
  }
56879
57556
  }
@@ -56889,30 +57566,28 @@
56889
57566
  "possibleTypes": null
56890
57567
  },
56891
57568
  {
56892
- "kind": "OBJECT",
56893
- "name": "ReportMeta",
56894
- "description": "Metadata for a single analytics report box.",
56895
- "fields": [
57569
+ "kind": "INPUT_OBJECT",
57570
+ "name": "SendCustomerEmailInput",
57571
+ "description": "Targeting + content for sendCustomerEmail. Exactly one of customer_id, customer_ids, segment_id must be supplied.",
57572
+ "fields": null,
57573
+ "inputFields": [
56896
57574
  {
56897
- "name": "id",
56898
- "description": "Box identifier (kebab-case).",
56899
- "args": [],
57575
+ "name": "type",
57576
+ "description": "Delivery classification. Drives marketing-consent filtering.",
56900
57577
  "type": {
56901
57578
  "kind": "NON_NULL",
56902
57579
  "name": null,
56903
57580
  "ofType": {
56904
- "kind": "SCALAR",
56905
- "name": "String",
57581
+ "kind": "ENUM",
57582
+ "name": "CustomerEmailType",
56906
57583
  "ofType": null
56907
57584
  }
56908
57585
  },
56909
- "isDeprecated": false,
56910
- "deprecationReason": null
57586
+ "defaultValue": null
56911
57587
  },
56912
57588
  {
56913
- "name": "name",
56914
- "description": "Human-readable report name.",
56915
- "args": [],
57589
+ "name": "subject",
57590
+ "description": "Email subject. Non-empty.",
56916
57591
  "type": {
56917
57592
  "kind": "NON_NULL",
56918
57593
  "name": null,
@@ -56922,35 +57597,131 @@
56922
57597
  "ofType": null
56923
57598
  }
56924
57599
  },
56925
- "isDeprecated": false,
56926
- "deprecationReason": null
57600
+ "defaultValue": null
56927
57601
  },
56928
57602
  {
56929
- "name": "type",
56930
- "description": "Visualisation type: chart, table, funnel, bar.",
56931
- "args": [],
57603
+ "name": "html",
57604
+ "description": "HTML body. At least one of html / text must be non-empty.",
56932
57605
  "type": {
56933
- "kind": "NON_NULL",
57606
+ "kind": "SCALAR",
57607
+ "name": "String",
57608
+ "ofType": null
57609
+ },
57610
+ "defaultValue": null
57611
+ },
57612
+ {
57613
+ "name": "text",
57614
+ "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.",
57615
+ "type": {
57616
+ "kind": "SCALAR",
57617
+ "name": "String",
57618
+ "ofType": null
57619
+ },
57620
+ "defaultValue": null
57621
+ },
57622
+ {
57623
+ "name": "customer_id",
57624
+ "description": "Single recipient by customer ID.",
57625
+ "type": {
57626
+ "kind": "SCALAR",
57627
+ "name": "ID",
57628
+ "ofType": null
57629
+ },
57630
+ "defaultValue": null
57631
+ },
57632
+ {
57633
+ "name": "customer_ids",
57634
+ "description": "Explicit list of customer IDs. Use when agent already has a list from a customers() query.",
57635
+ "type": {
57636
+ "kind": "LIST",
56934
57637
  "name": null,
56935
57638
  "ofType": {
56936
- "kind": "SCALAR",
56937
- "name": "String",
56938
- "ofType": null
57639
+ "kind": "NON_NULL",
57640
+ "name": null,
57641
+ "ofType": {
57642
+ "kind": "SCALAR",
57643
+ "name": "ID",
57644
+ "ofType": null
57645
+ }
56939
57646
  }
56940
57647
  },
57648
+ "defaultValue": null
57649
+ },
57650
+ {
57651
+ "name": "segment_id",
57652
+ "description": "Segment ID — resolves to all customers linked to subscribers in the segment. Uses the same subscriber_to_segments join as customers(segment: id).",
57653
+ "type": {
57654
+ "kind": "SCALAR",
57655
+ "name": "ID",
57656
+ "ofType": null
57657
+ },
57658
+ "defaultValue": null
57659
+ },
57660
+ {
57661
+ "name": "reply_to",
57662
+ "description": "Reply-To header override. Defaults to the store's configured site_email.",
57663
+ "type": {
57664
+ "kind": "SCALAR",
57665
+ "name": "String",
57666
+ "ofType": null
57667
+ },
57668
+ "defaultValue": null
57669
+ }
57670
+ ],
57671
+ "interfaces": null,
57672
+ "enumValues": null,
57673
+ "possibleTypes": null
57674
+ },
57675
+ {
57676
+ "kind": "ENUM",
57677
+ "name": "CustomerViberJobStatus",
57678
+ "description": "Lifecycle state of a customer-viber batch. Mirrors CustomerEmailJobStatus.",
57679
+ "fields": null,
57680
+ "inputFields": null,
57681
+ "interfaces": null,
57682
+ "enumValues": [
57683
+ {
57684
+ "name": "PENDING",
57685
+ "description": "Batch created, jobs not yet picked up by a worker.",
56941
57686
  "isDeprecated": false,
56942
57687
  "deprecationReason": null
56943
57688
  },
56944
57689
  {
56945
- "name": "visible",
56946
- "description": "Whether visible on the dashboard by default.",
57690
+ "name": "PROCESSING",
57691
+ "description": "Worker is processing at least one job in the batch.",
57692
+ "isDeprecated": false,
57693
+ "deprecationReason": null
57694
+ },
57695
+ {
57696
+ "name": "FINISHED",
57697
+ "description": "All jobs in the batch finished (any mix of successes and failures).",
57698
+ "isDeprecated": false,
57699
+ "deprecationReason": null
57700
+ },
57701
+ {
57702
+ "name": "CANCELLED",
57703
+ "description": "Batch was cancelled before completion.",
57704
+ "isDeprecated": false,
57705
+ "deprecationReason": null
57706
+ }
57707
+ ],
57708
+ "possibleTypes": null
57709
+ },
57710
+ {
57711
+ "kind": "OBJECT",
57712
+ "name": "CustomerViberJob",
57713
+ "description": "Tracking record for a sendCustomerViber dispatch.",
57714
+ "fields": [
57715
+ {
57716
+ "name": "id",
57717
+ "description": "Batch ID (UUID). Persists after completion; use to poll status.",
56947
57718
  "args": [],
56948
57719
  "type": {
56949
57720
  "kind": "NON_NULL",
56950
57721
  "name": null,
56951
57722
  "ofType": {
56952
57723
  "kind": "SCALAR",
56953
- "name": "Boolean",
57724
+ "name": "ID",
56954
57725
  "ofType": null
56955
57726
  }
56956
57727
  },
@@ -56958,20 +57729,24 @@
56958
57729
  "deprecationReason": null
56959
57730
  },
56960
57731
  {
56961
- "name": "parent",
56962
- "description": "Parent box id (null for top-level boxes).",
57732
+ "name": "status",
57733
+ "description": "Current state.",
56963
57734
  "args": [],
56964
57735
  "type": {
56965
- "kind": "SCALAR",
56966
- "name": "String",
56967
- "ofType": null
57736
+ "kind": "NON_NULL",
57737
+ "name": null,
57738
+ "ofType": {
57739
+ "kind": "ENUM",
57740
+ "name": "CustomerViberJobStatus",
57741
+ "ofType": null
57742
+ }
56968
57743
  },
56969
57744
  "isDeprecated": false,
56970
57745
  "deprecationReason": null
56971
57746
  },
56972
57747
  {
56973
- "name": "index",
56974
- "description": "Sort position within its level.",
57748
+ "name": "totalJobs",
57749
+ "description": "Total recipients queued (after consent, missing-phone, and channel filtering).",
56975
57750
  "args": [],
56976
57751
  "type": {
56977
57752
  "kind": "NON_NULL",
@@ -56986,16 +57761,1121 @@
56986
57761
  "deprecationReason": null
56987
57762
  },
56988
57763
  {
56989
- "name": "children",
56990
- "description": "Child reports nested under this one.",
57764
+ "name": "pendingJobs",
57765
+ "description": "Jobs still waiting to run.",
56991
57766
  "args": [],
56992
57767
  "type": {
56993
57768
  "kind": "NON_NULL",
56994
57769
  "name": null,
56995
57770
  "ofType": {
56996
- "kind": "LIST",
56997
- "name": null,
56998
- "ofType": {
57771
+ "kind": "SCALAR",
57772
+ "name": "Int",
57773
+ "ofType": null
57774
+ }
57775
+ },
57776
+ "isDeprecated": false,
57777
+ "deprecationReason": null
57778
+ },
57779
+ {
57780
+ "name": "processedJobs",
57781
+ "description": "Jobs that finished running (both successful and failed). Strict success count is processedJobs - failedJobs.",
57782
+ "args": [],
57783
+ "type": {
57784
+ "kind": "NON_NULL",
57785
+ "name": null,
57786
+ "ofType": {
57787
+ "kind": "SCALAR",
57788
+ "name": "Int",
57789
+ "ofType": null
57790
+ }
57791
+ },
57792
+ "isDeprecated": false,
57793
+ "deprecationReason": null
57794
+ },
57795
+ {
57796
+ "name": "failedJobs",
57797
+ "description": "Jobs that errored — e.g. invalid phone, InfoBip rejected, Viber unsubscribed.",
57798
+ "args": [],
57799
+ "type": {
57800
+ "kind": "NON_NULL",
57801
+ "name": null,
57802
+ "ofType": {
57803
+ "kind": "SCALAR",
57804
+ "name": "Int",
57805
+ "ofType": null
57806
+ }
57807
+ },
57808
+ "isDeprecated": false,
57809
+ "deprecationReason": null
57810
+ },
57811
+ {
57812
+ "name": "progress",
57813
+ "description": "Progress percentage (0–100).",
57814
+ "args": [],
57815
+ "type": {
57816
+ "kind": "NON_NULL",
57817
+ "name": null,
57818
+ "ofType": {
57819
+ "kind": "SCALAR",
57820
+ "name": "Int",
57821
+ "ofType": null
57822
+ }
57823
+ },
57824
+ "isDeprecated": false,
57825
+ "deprecationReason": null
57826
+ },
57827
+ {
57828
+ "name": "createdAt",
57829
+ "description": "UTC timestamp the batch was created.",
57830
+ "args": [],
57831
+ "type": {
57832
+ "kind": "NON_NULL",
57833
+ "name": null,
57834
+ "ofType": {
57835
+ "kind": "SCALAR",
57836
+ "name": "DateTime",
57837
+ "ofType": null
57838
+ }
57839
+ },
57840
+ "isDeprecated": false,
57841
+ "deprecationReason": null
57842
+ },
57843
+ {
57844
+ "name": "finishedAt",
57845
+ "description": "UTC timestamp the batch finished, if it has.",
57846
+ "args": [],
57847
+ "type": {
57848
+ "kind": "SCALAR",
57849
+ "name": "DateTime",
57850
+ "ofType": null
57851
+ },
57852
+ "isDeprecated": false,
57853
+ "deprecationReason": null
57854
+ }
57855
+ ],
57856
+ "inputFields": null,
57857
+ "interfaces": [],
57858
+ "enumValues": null,
57859
+ "possibleTypes": null
57860
+ },
57861
+ {
57862
+ "kind": "OBJECT",
57863
+ "name": "CustomerViberUserError",
57864
+ "description": "Per-error detail for sendCustomerViber validation / precondition failures.",
57865
+ "fields": [
57866
+ {
57867
+ "name": "field",
57868
+ "description": "Path to the offending input field. Empty when the error is global.",
57869
+ "args": [],
57870
+ "type": {
57871
+ "kind": "LIST",
57872
+ "name": null,
57873
+ "ofType": {
57874
+ "kind": "NON_NULL",
57875
+ "name": null,
57876
+ "ofType": {
57877
+ "kind": "SCALAR",
57878
+ "name": "String",
57879
+ "ofType": null
57880
+ }
57881
+ }
57882
+ },
57883
+ "isDeprecated": false,
57884
+ "deprecationReason": null
57885
+ },
57886
+ {
57887
+ "name": "message",
57888
+ "description": "Human-readable error message.",
57889
+ "args": [],
57890
+ "type": {
57891
+ "kind": "NON_NULL",
57892
+ "name": null,
57893
+ "ofType": {
57894
+ "kind": "SCALAR",
57895
+ "name": "String",
57896
+ "ofType": null
57897
+ }
57898
+ },
57899
+ "isDeprecated": false,
57900
+ "deprecationReason": null
57901
+ },
57902
+ {
57903
+ "name": "code",
57904
+ "description": "Machine-readable error code.",
57905
+ "args": [],
57906
+ "type": {
57907
+ "kind": "ENUM",
57908
+ "name": "CustomerViberErrorCode",
57909
+ "ofType": null
57910
+ },
57911
+ "isDeprecated": false,
57912
+ "deprecationReason": null
57913
+ }
57914
+ ],
57915
+ "inputFields": null,
57916
+ "interfaces": [],
57917
+ "enumValues": null,
57918
+ "possibleTypes": null
57919
+ },
57920
+ {
57921
+ "kind": "ENUM",
57922
+ "name": "CustomerViberErrorCode",
57923
+ "description": "Enumerated failure modes for sendCustomerViber.",
57924
+ "fields": null,
57925
+ "inputFields": null,
57926
+ "interfaces": null,
57927
+ "enumValues": [
57928
+ {
57929
+ "name": "NO_RECIPIENTS",
57930
+ "description": "No recipients could be resolved from the supplied targeting.",
57931
+ "isDeprecated": false,
57932
+ "deprecationReason": null
57933
+ },
57934
+ {
57935
+ "name": "MESSAGE_REQUIRED",
57936
+ "description": "message was empty or whitespace.",
57937
+ "isDeprecated": false,
57938
+ "deprecationReason": null
57939
+ },
57940
+ {
57941
+ "name": "MESSAGE_TOO_LONG",
57942
+ "description": "message exceeds the InfoBip 1000-character limit.",
57943
+ "isDeprecated": false,
57944
+ "deprecationReason": null
57945
+ },
57946
+ {
57947
+ "name": "TARGETING_REQUIRED",
57948
+ "description": "Neither customer_id, customer_ids, nor segment_id was supplied.",
57949
+ "isDeprecated": false,
57950
+ "deprecationReason": null
57951
+ },
57952
+ {
57953
+ "name": "TARGETING_EXCLUSIVE",
57954
+ "description": "More than one targeting mode was supplied; exactly one is allowed.",
57955
+ "isDeprecated": false,
57956
+ "deprecationReason": null
57957
+ },
57958
+ {
57959
+ "name": "BUTTON_FIELDS_INCOMPLETE",
57960
+ "description": "button_text is set but button_url is not (or vice-versa) — both are required together.",
57961
+ "isDeprecated": false,
57962
+ "deprecationReason": null
57963
+ },
57964
+ {
57965
+ "name": "INVALID_IMAGE_URL",
57966
+ "description": "image_url is not a valid URL.",
57967
+ "isDeprecated": false,
57968
+ "deprecationReason": null
57969
+ },
57970
+ {
57971
+ "name": "INVALID_BUTTON_URL",
57972
+ "description": "button_url is not a valid URL.",
57973
+ "isDeprecated": false,
57974
+ "deprecationReason": null
57975
+ },
57976
+ {
57977
+ "name": "VIBER_NOT_CONFIGURED",
57978
+ "description": "Viber channel is not installed or not configured on this store. Install via the admin apps marketplace first.",
57979
+ "isDeprecated": false,
57980
+ "deprecationReason": null
57981
+ }
57982
+ ],
57983
+ "possibleTypes": null
57984
+ },
57985
+ {
57986
+ "kind": "OBJECT",
57987
+ "name": "SendCustomerViberPayload",
57988
+ "description": "Response for sendCustomerViber.",
57989
+ "fields": [
57990
+ {
57991
+ "name": "job",
57992
+ "description": "Tracking record. Null when userErrors is non-empty (dispatch did not happen).",
57993
+ "args": [],
57994
+ "type": {
57995
+ "kind": "OBJECT",
57996
+ "name": "CustomerViberJob",
57997
+ "ofType": null
57998
+ },
57999
+ "isDeprecated": false,
58000
+ "deprecationReason": null
58001
+ },
58002
+ {
58003
+ "name": "skippedByConsent",
58004
+ "description": "Customers filtered out because they have not opted in to marketing (only applies when type = MARKETING).",
58005
+ "args": [],
58006
+ "type": {
58007
+ "kind": "NON_NULL",
58008
+ "name": null,
58009
+ "ofType": {
58010
+ "kind": "SCALAR",
58011
+ "name": "Int",
58012
+ "ofType": null
58013
+ }
58014
+ },
58015
+ "isDeprecated": false,
58016
+ "deprecationReason": null
58017
+ },
58018
+ {
58019
+ "name": "skippedByMissingPhone",
58020
+ "description": "Customers filtered out because they have no phone number on file (shipping / billing / alternative).",
58021
+ "args": [],
58022
+ "type": {
58023
+ "kind": "NON_NULL",
58024
+ "name": null,
58025
+ "ofType": {
58026
+ "kind": "SCALAR",
58027
+ "name": "Int",
58028
+ "ofType": null
58029
+ }
58030
+ },
58031
+ "isDeprecated": false,
58032
+ "deprecationReason": null
58033
+ },
58034
+ {
58035
+ "name": "complianceHint",
58036
+ "description": "Compliance reminder for MARKETING sends — reminds caller to include opt-out wording.",
58037
+ "args": [],
58038
+ "type": {
58039
+ "kind": "SCALAR",
58040
+ "name": "String",
58041
+ "ofType": null
58042
+ },
58043
+ "isDeprecated": false,
58044
+ "deprecationReason": null
58045
+ },
58046
+ {
58047
+ "name": "userErrors",
58048
+ "description": "Validation / precondition errors. Empty on success.",
58049
+ "args": [],
58050
+ "type": {
58051
+ "kind": "NON_NULL",
58052
+ "name": null,
58053
+ "ofType": {
58054
+ "kind": "LIST",
58055
+ "name": null,
58056
+ "ofType": {
58057
+ "kind": "NON_NULL",
58058
+ "name": null,
58059
+ "ofType": {
58060
+ "kind": "OBJECT",
58061
+ "name": "CustomerViberUserError",
58062
+ "ofType": null
58063
+ }
58064
+ }
58065
+ }
58066
+ },
58067
+ "isDeprecated": false,
58068
+ "deprecationReason": null
58069
+ }
58070
+ ],
58071
+ "inputFields": null,
58072
+ "interfaces": [],
58073
+ "enumValues": null,
58074
+ "possibleTypes": null
58075
+ },
58076
+ {
58077
+ "kind": "INPUT_OBJECT",
58078
+ "name": "SendCustomerViberInput",
58079
+ "description": "Targeting + content for sendCustomerViber. Exactly one of customer_id, customer_ids, segment_id must be supplied.",
58080
+ "fields": null,
58081
+ "inputFields": [
58082
+ {
58083
+ "name": "type",
58084
+ "description": "Delivery classification. Drives marketing-consent filtering. Shared enum with email.",
58085
+ "type": {
58086
+ "kind": "NON_NULL",
58087
+ "name": null,
58088
+ "ofType": {
58089
+ "kind": "ENUM",
58090
+ "name": "CustomerEmailType",
58091
+ "ofType": null
58092
+ }
58093
+ },
58094
+ "defaultValue": null
58095
+ },
58096
+ {
58097
+ "name": "message",
58098
+ "description": "Viber message body. Max 1000 characters (InfoBip Viber Business limit). Non-empty.",
58099
+ "type": {
58100
+ "kind": "NON_NULL",
58101
+ "name": null,
58102
+ "ofType": {
58103
+ "kind": "SCALAR",
58104
+ "name": "String",
58105
+ "ofType": null
58106
+ }
58107
+ },
58108
+ "defaultValue": null
58109
+ },
58110
+ {
58111
+ "name": "image_url",
58112
+ "description": "Optional image URL shown above the message.",
58113
+ "type": {
58114
+ "kind": "SCALAR",
58115
+ "name": "String",
58116
+ "ofType": null
58117
+ },
58118
+ "defaultValue": null
58119
+ },
58120
+ {
58121
+ "name": "button_text",
58122
+ "description": "Optional CTA button label. Must be paired with button_url.",
58123
+ "type": {
58124
+ "kind": "SCALAR",
58125
+ "name": "String",
58126
+ "ofType": null
58127
+ },
58128
+ "defaultValue": null
58129
+ },
58130
+ {
58131
+ "name": "button_url",
58132
+ "description": "Optional CTA button target URL. Must be paired with button_text.",
58133
+ "type": {
58134
+ "kind": "SCALAR",
58135
+ "name": "String",
58136
+ "ofType": null
58137
+ },
58138
+ "defaultValue": null
58139
+ },
58140
+ {
58141
+ "name": "customer_id",
58142
+ "description": "Single recipient by customer ID.",
58143
+ "type": {
58144
+ "kind": "SCALAR",
58145
+ "name": "ID",
58146
+ "ofType": null
58147
+ },
58148
+ "defaultValue": null
58149
+ },
58150
+ {
58151
+ "name": "customer_ids",
58152
+ "description": "Explicit list of customer IDs.",
58153
+ "type": {
58154
+ "kind": "LIST",
58155
+ "name": null,
58156
+ "ofType": {
58157
+ "kind": "NON_NULL",
58158
+ "name": null,
58159
+ "ofType": {
58160
+ "kind": "SCALAR",
58161
+ "name": "ID",
58162
+ "ofType": null
58163
+ }
58164
+ }
58165
+ },
58166
+ "defaultValue": null
58167
+ },
58168
+ {
58169
+ "name": "segment_id",
58170
+ "description": "Segment ID — resolves to all customers linked to subscribers in the segment.",
58171
+ "type": {
58172
+ "kind": "SCALAR",
58173
+ "name": "ID",
58174
+ "ofType": null
58175
+ },
58176
+ "defaultValue": null
58177
+ }
58178
+ ],
58179
+ "interfaces": null,
58180
+ "enumValues": null,
58181
+ "possibleTypes": null
58182
+ },
58183
+ {
58184
+ "kind": "ENUM",
58185
+ "name": "AnalyticsCompare",
58186
+ "description": "Period comparison mode.",
58187
+ "fields": null,
58188
+ "inputFields": null,
58189
+ "interfaces": null,
58190
+ "enumValues": [
58191
+ {
58192
+ "name": "none",
58193
+ "description": "No comparison — single period only.",
58194
+ "isDeprecated": false,
58195
+ "deprecationReason": null
58196
+ },
58197
+ {
58198
+ "name": "previous_period",
58199
+ "description": "Compare with the immediately preceding period of equal length.",
58200
+ "isDeprecated": false,
58201
+ "deprecationReason": null
58202
+ },
58203
+ {
58204
+ "name": "previous_year",
58205
+ "description": "Compare with the same dates from the previous year.",
58206
+ "isDeprecated": false,
58207
+ "deprecationReason": null
58208
+ }
58209
+ ],
58210
+ "possibleTypes": null
58211
+ },
58212
+ {
58213
+ "kind": "ENUM",
58214
+ "name": "AnalyticsGroup",
58215
+ "description": "Time-bucketing interval for data points.",
58216
+ "fields": null,
58217
+ "inputFields": null,
58218
+ "interfaces": null,
58219
+ "enumValues": [
58220
+ {
58221
+ "name": "auto",
58222
+ "description": "Server picks the best interval based on date-range length.",
58223
+ "isDeprecated": false,
58224
+ "deprecationReason": null
58225
+ },
58226
+ {
58227
+ "name": "hourly",
58228
+ "description": null,
58229
+ "isDeprecated": false,
58230
+ "deprecationReason": null
58231
+ },
58232
+ {
58233
+ "name": "daily",
58234
+ "description": null,
58235
+ "isDeprecated": false,
58236
+ "deprecationReason": null
58237
+ },
58238
+ {
58239
+ "name": "weekly",
58240
+ "description": null,
58241
+ "isDeprecated": false,
58242
+ "deprecationReason": null
58243
+ },
58244
+ {
58245
+ "name": "monthly",
58246
+ "description": null,
58247
+ "isDeprecated": false,
58248
+ "deprecationReason": null
58249
+ },
58250
+ {
58251
+ "name": "quarterly",
58252
+ "description": null,
58253
+ "isDeprecated": false,
58254
+ "deprecationReason": null
58255
+ },
58256
+ {
58257
+ "name": "yearly",
58258
+ "description": null,
58259
+ "isDeprecated": false,
58260
+ "deprecationReason": null
58261
+ },
58262
+ {
58263
+ "name": "none",
58264
+ "description": "No bucketing — aggregate the entire range into one value.",
58265
+ "isDeprecated": false,
58266
+ "deprecationReason": null
58267
+ }
58268
+ ],
58269
+ "possibleTypes": null
58270
+ },
58271
+ {
58272
+ "kind": "ENUM",
58273
+ "name": "AnalyticsLevel",
58274
+ "description": "Drill-down depth for an analytics report.",
58275
+ "fields": null,
58276
+ "inputFields": null,
58277
+ "interfaces": null,
58278
+ "enumValues": [
58279
+ {
58280
+ "name": "dashboard",
58281
+ "description": null,
58282
+ "isDeprecated": false,
58283
+ "deprecationReason": null
58284
+ },
58285
+ {
58286
+ "name": "details",
58287
+ "description": null,
58288
+ "isDeprecated": false,
58289
+ "deprecationReason": null
58290
+ },
58291
+ {
58292
+ "name": "view_more",
58293
+ "description": null,
58294
+ "isDeprecated": false,
58295
+ "deprecationReason": null
58296
+ },
58297
+ {
58298
+ "name": "sub_dashboard",
58299
+ "description": null,
58300
+ "isDeprecated": false,
58301
+ "deprecationReason": null
58302
+ },
58303
+ {
58304
+ "name": "sub_details",
58305
+ "description": null,
58306
+ "isDeprecated": false,
58307
+ "deprecationReason": null
58308
+ },
58309
+ {
58310
+ "name": "more_details",
58311
+ "description": null,
58312
+ "isDeprecated": false,
58313
+ "deprecationReason": null
58314
+ }
58315
+ ],
58316
+ "possibleTypes": null
58317
+ },
58318
+ {
58319
+ "kind": "ENUM",
58320
+ "name": "MetricType",
58321
+ "description": "Semantic data-type annotation for a column value.",
58322
+ "fields": null,
58323
+ "inputFields": null,
58324
+ "interfaces": null,
58325
+ "enumValues": [
58326
+ {
58327
+ "name": "integer",
58328
+ "description": null,
58329
+ "isDeprecated": false,
58330
+ "deprecationReason": null
58331
+ },
58332
+ {
58333
+ "name": "float",
58334
+ "description": null,
58335
+ "isDeprecated": false,
58336
+ "deprecationReason": null
58337
+ },
58338
+ {
58339
+ "name": "currency",
58340
+ "description": null,
58341
+ "isDeprecated": false,
58342
+ "deprecationReason": null
58343
+ },
58344
+ {
58345
+ "name": "percent",
58346
+ "description": null,
58347
+ "isDeprecated": false,
58348
+ "deprecationReason": null
58349
+ },
58350
+ {
58351
+ "name": "string",
58352
+ "description": null,
58353
+ "isDeprecated": false,
58354
+ "deprecationReason": null
58355
+ },
58356
+ {
58357
+ "name": "date",
58358
+ "description": null,
58359
+ "isDeprecated": false,
58360
+ "deprecationReason": null
58361
+ }
58362
+ ],
58363
+ "possibleTypes": null
58364
+ },
58365
+ {
58366
+ "kind": "OBJECT",
58367
+ "name": "AnalyticsReport",
58368
+ "description": "GA4-inspired analytics report envelope.",
58369
+ "fields": [
58370
+ {
58371
+ "name": "box",
58372
+ "description": "Report identifier (kebab-case, e.g. total-sales).",
58373
+ "args": [],
58374
+ "type": {
58375
+ "kind": "NON_NULL",
58376
+ "name": null,
58377
+ "ofType": {
58378
+ "kind": "SCALAR",
58379
+ "name": "String",
58380
+ "ofType": null
58381
+ }
58382
+ },
58383
+ "isDeprecated": false,
58384
+ "deprecationReason": null
58385
+ },
58386
+ {
58387
+ "name": "compare",
58388
+ "description": "Comparison mode that was applied.",
58389
+ "args": [],
58390
+ "type": {
58391
+ "kind": "NON_NULL",
58392
+ "name": null,
58393
+ "ofType": {
58394
+ "kind": "SCALAR",
58395
+ "name": "String",
58396
+ "ofType": null
58397
+ }
58398
+ },
58399
+ "isDeprecated": false,
58400
+ "deprecationReason": null
58401
+ },
58402
+ {
58403
+ "name": "groupBy",
58404
+ "description": "Effective grouping interval after auto-resolution.",
58405
+ "args": [],
58406
+ "type": {
58407
+ "kind": "NON_NULL",
58408
+ "name": null,
58409
+ "ofType": {
58410
+ "kind": "SCALAR",
58411
+ "name": "String",
58412
+ "ofType": null
58413
+ }
58414
+ },
58415
+ "isDeprecated": false,
58416
+ "deprecationReason": null
58417
+ },
58418
+ {
58419
+ "name": "daysDiff",
58420
+ "description": "Number of days in the primary date range.",
58421
+ "args": [],
58422
+ "type": {
58423
+ "kind": "NON_NULL",
58424
+ "name": null,
58425
+ "ofType": {
58426
+ "kind": "SCALAR",
58427
+ "name": "Int",
58428
+ "ofType": null
58429
+ }
58430
+ },
58431
+ "isDeprecated": false,
58432
+ "deprecationReason": null
58433
+ },
58434
+ {
58435
+ "name": "dateRanges",
58436
+ "description": "Resolved date ranges — first is current, second (if any) is comparison.",
58437
+ "args": [],
58438
+ "type": {
58439
+ "kind": "NON_NULL",
58440
+ "name": null,
58441
+ "ofType": {
58442
+ "kind": "LIST",
58443
+ "name": null,
58444
+ "ofType": {
58445
+ "kind": "NON_NULL",
58446
+ "name": null,
58447
+ "ofType": {
58448
+ "kind": "OBJECT",
58449
+ "name": "AnalyticsDateRange",
58450
+ "ofType": null
58451
+ }
58452
+ }
58453
+ }
58454
+ },
58455
+ "isDeprecated": false,
58456
+ "deprecationReason": null
58457
+ },
58458
+ {
58459
+ "name": "summary",
58460
+ "description": "Headline KPI with period-over-period change. Null for levels without a summary.",
58461
+ "args": [],
58462
+ "type": {
58463
+ "kind": "OBJECT",
58464
+ "name": "ReportSummary",
58465
+ "ofType": null
58466
+ },
58467
+ "isDeprecated": false,
58468
+ "deprecationReason": null
58469
+ },
58470
+ {
58471
+ "name": "columns",
58472
+ "description": "Typed column schema describing each position in `rows`.",
58473
+ "args": [],
58474
+ "type": {
58475
+ "kind": "NON_NULL",
58476
+ "name": null,
58477
+ "ofType": {
58478
+ "kind": "LIST",
58479
+ "name": null,
58480
+ "ofType": {
58481
+ "kind": "NON_NULL",
58482
+ "name": null,
58483
+ "ofType": {
58484
+ "kind": "OBJECT",
58485
+ "name": "ColumnHeader",
58486
+ "ofType": null
58487
+ }
58488
+ }
58489
+ }
58490
+ },
58491
+ "isDeprecated": false,
58492
+ "deprecationReason": null
58493
+ },
58494
+ {
58495
+ "name": "rows",
58496
+ "description": "Tabular data — each inner array maps positionally to `columns`. All values are strings (GA4 convention).",
58497
+ "args": [],
58498
+ "type": {
58499
+ "kind": "NON_NULL",
58500
+ "name": null,
58501
+ "ofType": {
58502
+ "kind": "LIST",
58503
+ "name": null,
58504
+ "ofType": {
58505
+ "kind": "NON_NULL",
58506
+ "name": null,
58507
+ "ofType": {
58508
+ "kind": "LIST",
58509
+ "name": null,
58510
+ "ofType": {
58511
+ "kind": "SCALAR",
58512
+ "name": "String"
58513
+ }
58514
+ }
58515
+ }
58516
+ }
58517
+ },
58518
+ "isDeprecated": false,
58519
+ "deprecationReason": null
58520
+ },
58521
+ {
58522
+ "name": "rowCount",
58523
+ "description": "Total row count before pagination (for offset-based paging).",
58524
+ "args": [],
58525
+ "type": {
58526
+ "kind": "NON_NULL",
58527
+ "name": null,
58528
+ "ofType": {
58529
+ "kind": "SCALAR",
58530
+ "name": "Int",
58531
+ "ofType": null
58532
+ }
58533
+ },
58534
+ "isDeprecated": false,
58535
+ "deprecationReason": null
58536
+ },
58537
+ {
58538
+ "name": "data",
58539
+ "description": "Complete formatter output — chart datasets, funnel stages, device breakdowns, etc.",
58540
+ "args": [],
58541
+ "type": {
58542
+ "kind": "NON_NULL",
58543
+ "name": null,
58544
+ "ofType": {
58545
+ "kind": "SCALAR",
58546
+ "name": "JSON",
58547
+ "ofType": null
58548
+ }
58549
+ },
58550
+ "isDeprecated": false,
58551
+ "deprecationReason": null
58552
+ }
58553
+ ],
58554
+ "inputFields": null,
58555
+ "interfaces": [],
58556
+ "enumValues": null,
58557
+ "possibleTypes": null
58558
+ },
58559
+ {
58560
+ "kind": "OBJECT",
58561
+ "name": "AnalyticsDateRange",
58562
+ "description": "A resolved (computed) date range.",
58563
+ "fields": [
58564
+ {
58565
+ "name": "startDate",
58566
+ "description": "Start date (ISO 8601).",
58567
+ "args": [],
58568
+ "type": {
58569
+ "kind": "NON_NULL",
58570
+ "name": null,
58571
+ "ofType": {
58572
+ "kind": "SCALAR",
58573
+ "name": "String",
58574
+ "ofType": null
58575
+ }
58576
+ },
58577
+ "isDeprecated": false,
58578
+ "deprecationReason": null
58579
+ },
58580
+ {
58581
+ "name": "endDate",
58582
+ "description": "End date (ISO 8601).",
58583
+ "args": [],
58584
+ "type": {
58585
+ "kind": "NON_NULL",
58586
+ "name": null,
58587
+ "ofType": {
58588
+ "kind": "SCALAR",
58589
+ "name": "String",
58590
+ "ofType": null
58591
+ }
58592
+ },
58593
+ "isDeprecated": false,
58594
+ "deprecationReason": null
58595
+ },
58596
+ {
58597
+ "name": "name",
58598
+ "description": "Label: current or previous.",
58599
+ "args": [],
58600
+ "type": {
58601
+ "kind": "NON_NULL",
58602
+ "name": null,
58603
+ "ofType": {
58604
+ "kind": "SCALAR",
58605
+ "name": "String",
58606
+ "ofType": null
58607
+ }
58608
+ },
58609
+ "isDeprecated": false,
58610
+ "deprecationReason": null
58611
+ }
58612
+ ],
58613
+ "inputFields": null,
58614
+ "interfaces": [],
58615
+ "enumValues": null,
58616
+ "possibleTypes": null
58617
+ },
58618
+ {
58619
+ "kind": "OBJECT",
58620
+ "name": "ReportSummary",
58621
+ "description": "Aggregated headline KPI with comparison.",
58622
+ "fields": [
58623
+ {
58624
+ "name": "current",
58625
+ "description": "Current-period headline value.",
58626
+ "args": [],
58627
+ "type": {
58628
+ "kind": "SCALAR",
58629
+ "name": "String",
58630
+ "ofType": null
58631
+ },
58632
+ "isDeprecated": false,
58633
+ "deprecationReason": null
58634
+ },
58635
+ {
58636
+ "name": "previous",
58637
+ "description": "Previous-period headline value (null when compare=none).",
58638
+ "args": [],
58639
+ "type": {
58640
+ "kind": "SCALAR",
58641
+ "name": "String",
58642
+ "ofType": null
58643
+ },
58644
+ "isDeprecated": false,
58645
+ "deprecationReason": null
58646
+ },
58647
+ {
58648
+ "name": "changePercent",
58649
+ "description": "Percentage change between periods.",
58650
+ "args": [],
58651
+ "type": {
58652
+ "kind": "SCALAR",
58653
+ "name": "Float",
58654
+ "ofType": null
58655
+ },
58656
+ "isDeprecated": false,
58657
+ "deprecationReason": null
58658
+ },
58659
+ {
58660
+ "name": "trend",
58661
+ "description": "Trend direction: up, down, or null when flat / no comparison.",
58662
+ "args": [],
58663
+ "type": {
58664
+ "kind": "SCALAR",
58665
+ "name": "String",
58666
+ "ofType": null
58667
+ },
58668
+ "isDeprecated": false,
58669
+ "deprecationReason": null
58670
+ }
58671
+ ],
58672
+ "inputFields": null,
58673
+ "interfaces": [],
58674
+ "enumValues": null,
58675
+ "possibleTypes": null
58676
+ },
58677
+ {
58678
+ "kind": "OBJECT",
58679
+ "name": "ColumnHeader",
58680
+ "description": "Describes one column in the `rows` array.",
58681
+ "fields": [
58682
+ {
58683
+ "name": "name",
58684
+ "description": "Machine-readable column identifier.",
58685
+ "args": [],
58686
+ "type": {
58687
+ "kind": "NON_NULL",
58688
+ "name": null,
58689
+ "ofType": {
58690
+ "kind": "SCALAR",
58691
+ "name": "String",
58692
+ "ofType": null
58693
+ }
58694
+ },
58695
+ "isDeprecated": false,
58696
+ "deprecationReason": null
58697
+ },
58698
+ {
58699
+ "name": "type",
58700
+ "description": "Semantic data type for parsing / formatting.",
58701
+ "args": [],
58702
+ "type": {
58703
+ "kind": "NON_NULL",
58704
+ "name": null,
58705
+ "ofType": {
58706
+ "kind": "ENUM",
58707
+ "name": "MetricType",
58708
+ "ofType": null
58709
+ }
58710
+ },
58711
+ "isDeprecated": false,
58712
+ "deprecationReason": null
58713
+ },
58714
+ {
58715
+ "name": "label",
58716
+ "description": "Human-readable label.",
58717
+ "args": [],
58718
+ "type": {
58719
+ "kind": "NON_NULL",
58720
+ "name": null,
58721
+ "ofType": {
58722
+ "kind": "SCALAR",
58723
+ "name": "String",
58724
+ "ofType": null
58725
+ }
58726
+ },
58727
+ "isDeprecated": false,
58728
+ "deprecationReason": null
58729
+ }
58730
+ ],
58731
+ "inputFields": null,
58732
+ "interfaces": [],
58733
+ "enumValues": null,
58734
+ "possibleTypes": null
58735
+ },
58736
+ {
58737
+ "kind": "OBJECT",
58738
+ "name": "AnalyticsMetadata",
58739
+ "description": "Catalogue of available analytics reports and their capabilities.",
58740
+ "fields": [
58741
+ {
58742
+ "name": "reports",
58743
+ "description": "All available report boxes.",
58744
+ "args": [],
58745
+ "type": {
58746
+ "kind": "NON_NULL",
58747
+ "name": null,
58748
+ "ofType": {
58749
+ "kind": "LIST",
58750
+ "name": null,
58751
+ "ofType": {
58752
+ "kind": "NON_NULL",
58753
+ "name": null,
58754
+ "ofType": {
58755
+ "kind": "OBJECT",
58756
+ "name": "ReportMeta",
58757
+ "ofType": null
58758
+ }
58759
+ }
58760
+ }
58761
+ },
58762
+ "isDeprecated": false,
58763
+ "deprecationReason": null
58764
+ }
58765
+ ],
58766
+ "inputFields": null,
58767
+ "interfaces": [],
58768
+ "enumValues": null,
58769
+ "possibleTypes": null
58770
+ },
58771
+ {
58772
+ "kind": "OBJECT",
58773
+ "name": "ReportMeta",
58774
+ "description": "Metadata for a single analytics report box.",
58775
+ "fields": [
58776
+ {
58777
+ "name": "id",
58778
+ "description": "Box identifier (kebab-case).",
58779
+ "args": [],
58780
+ "type": {
58781
+ "kind": "NON_NULL",
58782
+ "name": null,
58783
+ "ofType": {
58784
+ "kind": "SCALAR",
58785
+ "name": "String",
58786
+ "ofType": null
58787
+ }
58788
+ },
58789
+ "isDeprecated": false,
58790
+ "deprecationReason": null
58791
+ },
58792
+ {
58793
+ "name": "name",
58794
+ "description": "Human-readable report name.",
58795
+ "args": [],
58796
+ "type": {
58797
+ "kind": "NON_NULL",
58798
+ "name": null,
58799
+ "ofType": {
58800
+ "kind": "SCALAR",
58801
+ "name": "String",
58802
+ "ofType": null
58803
+ }
58804
+ },
58805
+ "isDeprecated": false,
58806
+ "deprecationReason": null
58807
+ },
58808
+ {
58809
+ "name": "type",
58810
+ "description": "Visualisation type: chart, table, funnel, bar.",
58811
+ "args": [],
58812
+ "type": {
58813
+ "kind": "NON_NULL",
58814
+ "name": null,
58815
+ "ofType": {
58816
+ "kind": "SCALAR",
58817
+ "name": "String",
58818
+ "ofType": null
58819
+ }
58820
+ },
58821
+ "isDeprecated": false,
58822
+ "deprecationReason": null
58823
+ },
58824
+ {
58825
+ "name": "visible",
58826
+ "description": "Whether visible on the dashboard by default.",
58827
+ "args": [],
58828
+ "type": {
58829
+ "kind": "NON_NULL",
58830
+ "name": null,
58831
+ "ofType": {
58832
+ "kind": "SCALAR",
58833
+ "name": "Boolean",
58834
+ "ofType": null
58835
+ }
58836
+ },
58837
+ "isDeprecated": false,
58838
+ "deprecationReason": null
58839
+ },
58840
+ {
58841
+ "name": "parent",
58842
+ "description": "Parent box id (null for top-level boxes).",
58843
+ "args": [],
58844
+ "type": {
58845
+ "kind": "SCALAR",
58846
+ "name": "String",
58847
+ "ofType": null
58848
+ },
58849
+ "isDeprecated": false,
58850
+ "deprecationReason": null
58851
+ },
58852
+ {
58853
+ "name": "index",
58854
+ "description": "Sort position within its level.",
58855
+ "args": [],
58856
+ "type": {
58857
+ "kind": "NON_NULL",
58858
+ "name": null,
58859
+ "ofType": {
58860
+ "kind": "SCALAR",
58861
+ "name": "Int",
58862
+ "ofType": null
58863
+ }
58864
+ },
58865
+ "isDeprecated": false,
58866
+ "deprecationReason": null
58867
+ },
58868
+ {
58869
+ "name": "children",
58870
+ "description": "Child reports nested under this one.",
58871
+ "args": [],
58872
+ "type": {
58873
+ "kind": "NON_NULL",
58874
+ "name": null,
58875
+ "ofType": {
58876
+ "kind": "LIST",
58877
+ "name": null,
58878
+ "ofType": {
56999
58879
  "kind": "NON_NULL",
57000
58880
  "name": null,
57001
58881
  "ofType": {
@@ -106833,12 +108713,55 @@
106833
108713
  },
106834
108714
  {
106835
108715
  "kind": "OBJECT",
106836
- "name": "ShippingService",
106837
- "description": "A shipping carrier service.",
108716
+ "name": "ShippingService",
108717
+ "description": "A shipping carrier service.",
108718
+ "fields": [
108719
+ {
108720
+ "name": "id",
108721
+ "description": "Service identifier.",
108722
+ "args": [],
108723
+ "type": {
108724
+ "kind": "NON_NULL",
108725
+ "name": null,
108726
+ "ofType": {
108727
+ "kind": "SCALAR",
108728
+ "name": "String",
108729
+ "ofType": null
108730
+ }
108731
+ },
108732
+ "isDeprecated": false,
108733
+ "deprecationReason": null
108734
+ },
108735
+ {
108736
+ "name": "name",
108737
+ "description": "Service display name.",
108738
+ "args": [],
108739
+ "type": {
108740
+ "kind": "NON_NULL",
108741
+ "name": null,
108742
+ "ofType": {
108743
+ "kind": "SCALAR",
108744
+ "name": "String",
108745
+ "ofType": null
108746
+ }
108747
+ },
108748
+ "isDeprecated": false,
108749
+ "deprecationReason": null
108750
+ }
108751
+ ],
108752
+ "inputFields": null,
108753
+ "interfaces": [],
108754
+ "enumValues": null,
108755
+ "possibleTypes": null
108756
+ },
108757
+ {
108758
+ "kind": "OBJECT",
108759
+ "name": "ShippingOffice",
108760
+ "description": "A carrier office or branch.",
106838
108761
  "fields": [
106839
108762
  {
106840
108763
  "name": "id",
106841
- "description": "Service identifier.",
108764
+ "description": "Office identifier.",
106842
108765
  "args": [],
106843
108766
  "type": {
106844
108767
  "kind": "NON_NULL",
@@ -106854,7 +108777,7 @@
106854
108777
  },
106855
108778
  {
106856
108779
  "name": "name",
106857
- "description": "Service display name.",
108780
+ "description": "Office name.",
106858
108781
  "args": [],
106859
108782
  "type": {
106860
108783
  "kind": "NON_NULL",
@@ -106867,53 +108790,34 @@
106867
108790
  },
106868
108791
  "isDeprecated": false,
106869
108792
  "deprecationReason": null
106870
- }
106871
- ],
106872
- "inputFields": null,
106873
- "interfaces": [],
106874
- "enumValues": null,
106875
- "possibleTypes": null
106876
- },
106877
- {
106878
- "kind": "OBJECT",
106879
- "name": "ShippingOffice",
106880
- "description": "A carrier office or branch.",
106881
- "fields": [
108793
+ },
106882
108794
  {
106883
- "name": "id",
106884
- "description": "Office identifier.",
108795
+ "name": "address",
108796
+ "description": "Full address string.",
106885
108797
  "args": [],
106886
108798
  "type": {
106887
- "kind": "NON_NULL",
106888
- "name": null,
106889
- "ofType": {
106890
- "kind": "SCALAR",
106891
- "name": "String",
106892
- "ofType": null
106893
- }
108799
+ "kind": "SCALAR",
108800
+ "name": "String",
108801
+ "ofType": null
106894
108802
  },
106895
108803
  "isDeprecated": false,
106896
108804
  "deprecationReason": null
106897
108805
  },
106898
108806
  {
106899
- "name": "name",
106900
- "description": "Office name.",
108807
+ "name": "city",
108808
+ "description": "City name.",
106901
108809
  "args": [],
106902
108810
  "type": {
106903
- "kind": "NON_NULL",
106904
- "name": null,
106905
- "ofType": {
106906
- "kind": "SCALAR",
106907
- "name": "String",
106908
- "ofType": null
106909
- }
108811
+ "kind": "SCALAR",
108812
+ "name": "String",
108813
+ "ofType": null
106910
108814
  },
106911
108815
  "isDeprecated": false,
106912
108816
  "deprecationReason": null
106913
108817
  },
106914
108818
  {
106915
- "name": "address",
106916
- "description": "Full address string.",
108819
+ "name": "zipcode",
108820
+ "description": "Postal/zip code.",
106917
108821
  "args": [],
106918
108822
  "type": {
106919
108823
  "kind": "SCALAR",
@@ -106924,8 +108828,8 @@
106924
108828
  "deprecationReason": null
106925
108829
  },
106926
108830
  {
106927
- "name": "city",
106928
- "description": "City name.",
108831
+ "name": "type",
108832
+ "description": "Office type.",
106929
108833
  "args": [],
106930
108834
  "type": {
106931
108835
  "kind": "SCALAR",
@@ -106936,8 +108840,8 @@
106936
108840
  "deprecationReason": null
106937
108841
  },
106938
108842
  {
106939
- "name": "zipcode",
106940
- "description": "Postal/zip code.",
108843
+ "name": "countryIso2",
108844
+ "description": "ISO 3166-1 alpha-2 country code (when the provider exposes it).",
106941
108845
  "args": [],
106942
108846
  "type": {
106943
108847
  "kind": "SCALAR",
@@ -106948,8 +108852,8 @@
106948
108852
  "deprecationReason": null
106949
108853
  },
106950
108854
  {
106951
- "name": "type",
106952
- "description": "Office type.",
108855
+ "name": "countryName",
108856
+ "description": "Localised country name (when the provider exposes it).",
106953
108857
  "args": [],
106954
108858
  "type": {
106955
108859
  "kind": "SCALAR",
@@ -107585,6 +109489,270 @@
107585
109489
  "enumValues": null,
107586
109490
  "possibleTypes": null
107587
109491
  },
109492
+ {
109493
+ "kind": "OBJECT",
109494
+ "name": "ChangeShippingProviderResult",
109495
+ "description": "Result of changing the shipping provider on an order.",
109496
+ "fields": [
109497
+ {
109498
+ "name": "success",
109499
+ "description": "Whether the provider was successfully changed.",
109500
+ "args": [],
109501
+ "type": {
109502
+ "kind": "NON_NULL",
109503
+ "name": null,
109504
+ "ofType": {
109505
+ "kind": "SCALAR",
109506
+ "name": "Boolean",
109507
+ "ofType": null
109508
+ }
109509
+ },
109510
+ "isDeprecated": false,
109511
+ "deprecationReason": null
109512
+ },
109513
+ {
109514
+ "name": "message",
109515
+ "description": "Human-readable message. Null on success.",
109516
+ "args": [],
109517
+ "type": {
109518
+ "kind": "SCALAR",
109519
+ "name": "String",
109520
+ "ofType": null
109521
+ },
109522
+ "isDeprecated": false,
109523
+ "deprecationReason": null
109524
+ },
109525
+ {
109526
+ "name": "requiresPickup",
109527
+ "description": "True if the new provider requires a pickup selection (office/locker/marketplace/address) and none was supplied. The agent should retrieve the pickup list and re-invoke the mutation with `pickupPointId`.",
109528
+ "args": [],
109529
+ "type": {
109530
+ "kind": "NON_NULL",
109531
+ "name": null,
109532
+ "ofType": {
109533
+ "kind": "SCALAR",
109534
+ "name": "Boolean",
109535
+ "ofType": null
109536
+ }
109537
+ },
109538
+ "isDeprecated": false,
109539
+ "deprecationReason": null
109540
+ },
109541
+ {
109542
+ "name": "pickupType",
109543
+ "description": "When `requiresPickup` is true, the type of pickup expected.",
109544
+ "args": [],
109545
+ "type": {
109546
+ "kind": "ENUM",
109547
+ "name": "ShippingProviderPickupType",
109548
+ "ofType": null
109549
+ },
109550
+ "isDeprecated": false,
109551
+ "deprecationReason": null
109552
+ },
109553
+ {
109554
+ "name": "newProviderKey",
109555
+ "description": "Key of the new provider (e.g. 'econt', 'speedy'). Null if swap did not happen.",
109556
+ "args": [],
109557
+ "type": {
109558
+ "kind": "SCALAR",
109559
+ "name": "String",
109560
+ "ofType": null
109561
+ },
109562
+ "isDeprecated": false,
109563
+ "deprecationReason": null
109564
+ },
109565
+ {
109566
+ "name": "shippingAmount",
109567
+ "description": "Resulting shipping amount on the order after the swap.",
109568
+ "args": [],
109569
+ "type": {
109570
+ "kind": "SCALAR",
109571
+ "name": "Float",
109572
+ "ofType": null
109573
+ },
109574
+ "isDeprecated": false,
109575
+ "deprecationReason": null
109576
+ },
109577
+ {
109578
+ "name": "previousShippingAmount",
109579
+ "description": "The shipping amount before the swap. Useful for diffing against `shippingAmount`.",
109580
+ "args": [],
109581
+ "type": {
109582
+ "kind": "SCALAR",
109583
+ "name": "Float",
109584
+ "ofType": null
109585
+ },
109586
+ "isDeprecated": false,
109587
+ "deprecationReason": null
109588
+ },
109589
+ {
109590
+ "name": "shippingAmountPreserved",
109591
+ "description": "Whether the shipping amount was preserved (keepShippingAmount flag).",
109592
+ "args": [],
109593
+ "type": {
109594
+ "kind": "NON_NULL",
109595
+ "name": null,
109596
+ "ofType": {
109597
+ "kind": "SCALAR",
109598
+ "name": "Boolean",
109599
+ "ofType": null
109600
+ }
109601
+ },
109602
+ "isDeprecated": false,
109603
+ "deprecationReason": null
109604
+ }
109605
+ ],
109606
+ "inputFields": null,
109607
+ "interfaces": [],
109608
+ "enumValues": null,
109609
+ "possibleTypes": null
109610
+ },
109611
+ {
109612
+ "kind": "ENUM",
109613
+ "name": "ShippingProviderPickupType",
109614
+ "description": "Type of pickup selection a shipping provider needs.",
109615
+ "fields": null,
109616
+ "inputFields": null,
109617
+ "interfaces": null,
109618
+ "enumValues": [
109619
+ {
109620
+ "name": "ADDRESS",
109621
+ "description": "Delivery to the customer's street address — no pickup needed.",
109622
+ "isDeprecated": false,
109623
+ "deprecationReason": null
109624
+ },
109625
+ {
109626
+ "name": "OFFICE",
109627
+ "description": "Delivery to one of the provider's physical offices.",
109628
+ "isDeprecated": false,
109629
+ "deprecationReason": null
109630
+ },
109631
+ {
109632
+ "name": "LOCKER",
109633
+ "description": "Delivery to a parcel locker / automatic terminal.",
109634
+ "isDeprecated": false,
109635
+ "deprecationReason": null
109636
+ },
109637
+ {
109638
+ "name": "MARKETPLACE",
109639
+ "description": "Delivery to a partner marketplace pickup point.",
109640
+ "isDeprecated": false,
109641
+ "deprecationReason": null
109642
+ }
109643
+ ],
109644
+ "possibleTypes": null
109645
+ },
109646
+ {
109647
+ "kind": "OBJECT",
109648
+ "name": "ShippingCountry",
109649
+ "description": "A country supported by a shipping provider. Populated by the provider's `listCountries()` — what each carrier actually services.",
109650
+ "fields": [
109651
+ {
109652
+ "name": "id",
109653
+ "description": "Country ID (provider-specific, usually matches the local cities database).",
109654
+ "args": [],
109655
+ "type": {
109656
+ "kind": "SCALAR",
109657
+ "name": "String",
109658
+ "ofType": null
109659
+ },
109660
+ "isDeprecated": false,
109661
+ "deprecationReason": null
109662
+ },
109663
+ {
109664
+ "name": "iso2",
109665
+ "description": "ISO 3166-1 alpha-2 country code (e.g. BG, RO, GR).",
109666
+ "args": [],
109667
+ "type": {
109668
+ "kind": "SCALAR",
109669
+ "name": "String",
109670
+ "ofType": null
109671
+ },
109672
+ "isDeprecated": false,
109673
+ "deprecationReason": null
109674
+ },
109675
+ {
109676
+ "name": "iso3",
109677
+ "description": "ISO 3166-1 alpha-3 country code (e.g. BGR, ROU, GRC).",
109678
+ "args": [],
109679
+ "type": {
109680
+ "kind": "SCALAR",
109681
+ "name": "String",
109682
+ "ofType": null
109683
+ },
109684
+ "isDeprecated": false,
109685
+ "deprecationReason": null
109686
+ },
109687
+ {
109688
+ "name": "name",
109689
+ "description": "Localised country name (language follows the current admin locale).",
109690
+ "args": [],
109691
+ "type": {
109692
+ "kind": "SCALAR",
109693
+ "name": "String",
109694
+ "ofType": null
109695
+ },
109696
+ "isDeprecated": false,
109697
+ "deprecationReason": null
109698
+ },
109699
+ {
109700
+ "name": "phoneCode",
109701
+ "description": "Phone/calling code (e.g. 359 for Bulgaria), when the provider exposes it.",
109702
+ "args": [],
109703
+ "type": {
109704
+ "kind": "SCALAR",
109705
+ "name": "String",
109706
+ "ofType": null
109707
+ },
109708
+ "isDeprecated": false,
109709
+ "deprecationReason": null
109710
+ }
109711
+ ],
109712
+ "inputFields": null,
109713
+ "interfaces": [],
109714
+ "enumValues": null,
109715
+ "possibleTypes": null
109716
+ },
109717
+ {
109718
+ "kind": "OBJECT",
109719
+ "name": "ShippingPdfFormat",
109720
+ "description": "A PDF output format supported by a shipping provider for waybill printing.",
109721
+ "fields": [
109722
+ {
109723
+ "name": "type",
109724
+ "description": "Machine identifier to pass as `type` to `getShippingWaybillPdf` (e.g. `A4`, `A6`, `label`, `printer`, `sticker`).",
109725
+ "args": [],
109726
+ "type": {
109727
+ "kind": "NON_NULL",
109728
+ "name": null,
109729
+ "ofType": {
109730
+ "kind": "SCALAR",
109731
+ "name": "String",
109732
+ "ofType": null
109733
+ }
109734
+ },
109735
+ "isDeprecated": false,
109736
+ "deprecationReason": null
109737
+ },
109738
+ {
109739
+ "name": "label",
109740
+ "description": "Human-readable label describing the format.",
109741
+ "args": [],
109742
+ "type": {
109743
+ "kind": "SCALAR",
109744
+ "name": "String",
109745
+ "ofType": null
109746
+ },
109747
+ "isDeprecated": false,
109748
+ "deprecationReason": null
109749
+ }
109750
+ ],
109751
+ "inputFields": null,
109752
+ "interfaces": [],
109753
+ "enumValues": null,
109754
+ "possibleTypes": null
109755
+ },
107588
109756
  {
107589
109757
  "kind": "OBJECT",
107590
109758
  "name": "GlovoShop",
@@ -108755,6 +110923,16 @@
108755
110923
  "ofType": null
108756
110924
  },
108757
110925
  "defaultValue": null
110926
+ },
110927
+ {
110928
+ "name": "provider_options",
110929
+ "description": "Provider-specific options as a JSON object. Keys are the provider's own waybill-request field names (e.g. for Econt: priority_time, priority_type, priority_hour, pay_after_accept, back_documents, instruction). Call shippingWaybillSchema(key: <provider>) first to discover the supported keys, their types, required-if dependencies and mutually-exclusive pairs.",
110930
+ "type": {
110931
+ "kind": "SCALAR",
110932
+ "name": "JSON",
110933
+ "ofType": null
110934
+ },
110935
+ "defaultValue": null
108758
110936
  }
108759
110937
  ],
108760
110938
  "interfaces": null,
@@ -109031,8 +111209,28 @@
109031
111209
  "fields": null,
109032
111210
  "inputFields": [
109033
111211
  {
109034
- "name": "query",
109035
- "description": "Search query.",
111212
+ "name": "query",
111213
+ "description": "Search query (office name fragment).",
111214
+ "type": {
111215
+ "kind": "SCALAR",
111216
+ "name": "String",
111217
+ "ofType": null
111218
+ },
111219
+ "defaultValue": null
111220
+ },
111221
+ {
111222
+ "name": "city",
111223
+ "description": "Filter by city name (plain text).",
111224
+ "type": {
111225
+ "kind": "SCALAR",
111226
+ "name": "String",
111227
+ "ofType": null
111228
+ },
111229
+ "defaultValue": null
111230
+ },
111231
+ {
111232
+ "name": "city_id",
111233
+ "description": "Filter by city ID (from the provider's city catalogue). Takes precedence over when both are supplied.",
109036
111234
  "type": {
109037
111235
  "kind": "SCALAR",
109038
111236
  "name": "String",
@@ -109041,8 +111239,8 @@
109041
111239
  "defaultValue": null
109042
111240
  },
109043
111241
  {
109044
- "name": "city",
109045
- "description": "Filter by city.",
111242
+ "name": "type",
111243
+ "description": "Filter by office type (e.g. office, locker, apt).",
109046
111244
  "type": {
109047
111245
  "kind": "SCALAR",
109048
111246
  "name": "String",
@@ -109051,8 +111249,8 @@
109051
111249
  "defaultValue": null
109052
111250
  },
109053
111251
  {
109054
- "name": "city_id",
109055
- "description": "Filter by city ID.",
111252
+ "name": "provider_id",
111253
+ "description": "Provider ID (for multi-provider setups).",
109056
111254
  "type": {
109057
111255
  "kind": "SCALAR",
109058
111256
  "name": "String",
@@ -109061,8 +111259,8 @@
109061
111259
  "defaultValue": null
109062
111260
  },
109063
111261
  {
109064
- "name": "type",
109065
- "description": "Filter by type (office, locker, etc.).",
111262
+ "name": "country",
111263
+ "description": "Filter by country ISO2 code (e.g. BG, RO, GR). Post-filters the office list against each office's country.",
109066
111264
  "type": {
109067
111265
  "kind": "SCALAR",
109068
111266
  "name": "String",
@@ -109071,11 +111269,11 @@
109071
111269
  "defaultValue": null
109072
111270
  },
109073
111271
  {
109074
- "name": "provider_id",
109075
- "description": "Provider ID (for multi-provider setups).",
111272
+ "name": "limit",
111273
+ "description": "Max results to return (safety cap). Defaults to 200.",
109076
111274
  "type": {
109077
111275
  "kind": "SCALAR",
109078
- "name": "String",
111276
+ "name": "Int",
109079
111277
  "ofType": null
109080
111278
  },
109081
111279
  "defaultValue": null
@@ -109351,6 +111549,576 @@
109351
111549
  "enumValues": null,
109352
111550
  "possibleTypes": null
109353
111551
  },
111552
+ {
111553
+ "kind": "OBJECT",
111554
+ "name": "ShippingWaybillFieldDescriptor",
111555
+ "description": "Describes a single field on the waybill-creation input for a specific shipping provider.",
111556
+ "fields": [
111557
+ {
111558
+ "name": "name",
111559
+ "description": "Machine name of the field (camelCase, e.g. 'priorityType').",
111560
+ "args": [],
111561
+ "type": {
111562
+ "kind": "NON_NULL",
111563
+ "name": null,
111564
+ "ofType": {
111565
+ "kind": "SCALAR",
111566
+ "name": "String",
111567
+ "ofType": null
111568
+ }
111569
+ },
111570
+ "isDeprecated": false,
111571
+ "deprecationReason": null
111572
+ },
111573
+ {
111574
+ "name": "path",
111575
+ "description": "Dot-path of the field inside the request payload (e.g. 'waybill.priority_type'). Use this when mapping into `providerOptions` JSON.",
111576
+ "args": [],
111577
+ "type": {
111578
+ "kind": "NON_NULL",
111579
+ "name": null,
111580
+ "ofType": {
111581
+ "kind": "SCALAR",
111582
+ "name": "String",
111583
+ "ofType": null
111584
+ }
111585
+ },
111586
+ "isDeprecated": false,
111587
+ "deprecationReason": null
111588
+ },
111589
+ {
111590
+ "name": "label",
111591
+ "description": "Human-readable label (translated when available).",
111592
+ "args": [],
111593
+ "type": {
111594
+ "kind": "SCALAR",
111595
+ "name": "String",
111596
+ "ofType": null
111597
+ },
111598
+ "isDeprecated": false,
111599
+ "deprecationReason": null
111600
+ },
111601
+ {
111602
+ "name": "type",
111603
+ "description": "Data type of the field.",
111604
+ "args": [],
111605
+ "type": {
111606
+ "kind": "NON_NULL",
111607
+ "name": null,
111608
+ "ofType": {
111609
+ "kind": "ENUM",
111610
+ "name": "ShippingFieldType",
111611
+ "ofType": null
111612
+ }
111613
+ },
111614
+ "isDeprecated": false,
111615
+ "deprecationReason": null
111616
+ },
111617
+ {
111618
+ "name": "required",
111619
+ "description": "Whether the field is always required.",
111620
+ "args": [],
111621
+ "type": {
111622
+ "kind": "NON_NULL",
111623
+ "name": null,
111624
+ "ofType": {
111625
+ "kind": "SCALAR",
111626
+ "name": "Boolean",
111627
+ "ofType": null
111628
+ }
111629
+ },
111630
+ "isDeprecated": false,
111631
+ "deprecationReason": null
111632
+ },
111633
+ {
111634
+ "name": "requiredIf",
111635
+ "description": "Conditional-requirement expression derived from `required_if` / `required_with` rules, e.g. 'waybill.cod=1'.",
111636
+ "args": [],
111637
+ "type": {
111638
+ "kind": "SCALAR",
111639
+ "name": "String",
111640
+ "ofType": null
111641
+ },
111642
+ "isDeprecated": false,
111643
+ "deprecationReason": null
111644
+ },
111645
+ {
111646
+ "name": "description",
111647
+ "description": "Human-readable description explaining the purpose of the field (from lang/messages).",
111648
+ "args": [],
111649
+ "type": {
111650
+ "kind": "SCALAR",
111651
+ "name": "String",
111652
+ "ofType": null
111653
+ },
111654
+ "isDeprecated": false,
111655
+ "deprecationReason": null
111656
+ },
111657
+ {
111658
+ "name": "enumValues",
111659
+ "description": "For ENUM types: the list of allowed raw values.",
111660
+ "args": [],
111661
+ "type": {
111662
+ "kind": "LIST",
111663
+ "name": null,
111664
+ "ofType": {
111665
+ "kind": "NON_NULL",
111666
+ "name": null,
111667
+ "ofType": {
111668
+ "kind": "SCALAR",
111669
+ "name": "String",
111670
+ "ofType": null
111671
+ }
111672
+ }
111673
+ },
111674
+ "isDeprecated": false,
111675
+ "deprecationReason": null
111676
+ },
111677
+ {
111678
+ "name": "enumLabels",
111679
+ "description": "For ENUM types: optional human-readable labels, positionally aligned with `enumValues`.",
111680
+ "args": [],
111681
+ "type": {
111682
+ "kind": "LIST",
111683
+ "name": null,
111684
+ "ofType": {
111685
+ "kind": "NON_NULL",
111686
+ "name": null,
111687
+ "ofType": {
111688
+ "kind": "SCALAR",
111689
+ "name": "String",
111690
+ "ofType": null
111691
+ }
111692
+ }
111693
+ },
111694
+ "isDeprecated": false,
111695
+ "deprecationReason": null
111696
+ },
111697
+ {
111698
+ "name": "min",
111699
+ "description": "For NUMBER/INTEGER types: minimum value (inclusive).",
111700
+ "args": [],
111701
+ "type": {
111702
+ "kind": "SCALAR",
111703
+ "name": "Float",
111704
+ "ofType": null
111705
+ },
111706
+ "isDeprecated": false,
111707
+ "deprecationReason": null
111708
+ },
111709
+ {
111710
+ "name": "max",
111711
+ "description": "For NUMBER/INTEGER types: maximum value (inclusive).",
111712
+ "args": [],
111713
+ "type": {
111714
+ "kind": "SCALAR",
111715
+ "name": "Float",
111716
+ "ofType": null
111717
+ },
111718
+ "isDeprecated": false,
111719
+ "deprecationReason": null
111720
+ },
111721
+ {
111722
+ "name": "minLength",
111723
+ "description": "For STRING types: minimum length.",
111724
+ "args": [],
111725
+ "type": {
111726
+ "kind": "SCALAR",
111727
+ "name": "Int",
111728
+ "ofType": null
111729
+ },
111730
+ "isDeprecated": false,
111731
+ "deprecationReason": null
111732
+ },
111733
+ {
111734
+ "name": "maxLength",
111735
+ "description": "For STRING types: maximum length.",
111736
+ "args": [],
111737
+ "type": {
111738
+ "kind": "SCALAR",
111739
+ "name": "Int",
111740
+ "ofType": null
111741
+ },
111742
+ "isDeprecated": false,
111743
+ "deprecationReason": null
111744
+ },
111745
+ {
111746
+ "name": "mutuallyExclusiveWith",
111747
+ "description": "Other field paths that cannot be set simultaneously with this one (e.g. 'dc' and 'back_documents' in Econt).",
111748
+ "args": [],
111749
+ "type": {
111750
+ "kind": "LIST",
111751
+ "name": null,
111752
+ "ofType": {
111753
+ "kind": "NON_NULL",
111754
+ "name": null,
111755
+ "ofType": {
111756
+ "kind": "SCALAR",
111757
+ "name": "String",
111758
+ "ofType": null
111759
+ }
111760
+ }
111761
+ },
111762
+ "isDeprecated": false,
111763
+ "deprecationReason": null
111764
+ },
111765
+ {
111766
+ "name": "dependentFields",
111767
+ "description": "Other field paths that become required or relevant when this field is set.",
111768
+ "args": [],
111769
+ "type": {
111770
+ "kind": "LIST",
111771
+ "name": null,
111772
+ "ofType": {
111773
+ "kind": "NON_NULL",
111774
+ "name": null,
111775
+ "ofType": {
111776
+ "kind": "SCALAR",
111777
+ "name": "String",
111778
+ "ofType": null
111779
+ }
111780
+ }
111781
+ },
111782
+ "isDeprecated": false,
111783
+ "deprecationReason": null
111784
+ },
111785
+ {
111786
+ "name": "itemFields",
111787
+ "description": "For ARRAY types: schema of a single element.",
111788
+ "args": [],
111789
+ "type": {
111790
+ "kind": "LIST",
111791
+ "name": null,
111792
+ "ofType": {
111793
+ "kind": "NON_NULL",
111794
+ "name": null,
111795
+ "ofType": {
111796
+ "kind": "OBJECT",
111797
+ "name": "ShippingWaybillFieldDescriptor",
111798
+ "ofType": null
111799
+ }
111800
+ }
111801
+ },
111802
+ "isDeprecated": false,
111803
+ "deprecationReason": null
111804
+ },
111805
+ {
111806
+ "name": "example",
111807
+ "description": "Example value as a JSON-encoded string (e.g. '\"BEFORE\"', '14', '[{\"name\":\"box\",\"weight\":1}]').",
111808
+ "args": [],
111809
+ "type": {
111810
+ "kind": "SCALAR",
111811
+ "name": "String",
111812
+ "ofType": null
111813
+ },
111814
+ "isDeprecated": false,
111815
+ "deprecationReason": null
111816
+ },
111817
+ {
111818
+ "name": "default",
111819
+ "description": "Default value as a JSON-encoded string (if a default is known).",
111820
+ "args": [],
111821
+ "type": {
111822
+ "kind": "SCALAR",
111823
+ "name": "String",
111824
+ "ofType": null
111825
+ },
111826
+ "isDeprecated": false,
111827
+ "deprecationReason": null
111828
+ }
111829
+ ],
111830
+ "inputFields": null,
111831
+ "interfaces": [],
111832
+ "enumValues": null,
111833
+ "possibleTypes": null
111834
+ },
111835
+ {
111836
+ "kind": "ENUM",
111837
+ "name": "ShippingFieldType",
111838
+ "description": "High-level data type of a waybill field.",
111839
+ "fields": null,
111840
+ "inputFields": null,
111841
+ "interfaces": null,
111842
+ "enumValues": [
111843
+ {
111844
+ "name": "STRING",
111845
+ "description": "Plain string value.",
111846
+ "isDeprecated": false,
111847
+ "deprecationReason": null
111848
+ },
111849
+ {
111850
+ "name": "NUMBER",
111851
+ "description": "Floating-point number.",
111852
+ "isDeprecated": false,
111853
+ "deprecationReason": null
111854
+ },
111855
+ {
111856
+ "name": "INTEGER",
111857
+ "description": "Whole number.",
111858
+ "isDeprecated": false,
111859
+ "deprecationReason": null
111860
+ },
111861
+ {
111862
+ "name": "BOOLEAN",
111863
+ "description": "True/false.",
111864
+ "isDeprecated": false,
111865
+ "deprecationReason": null
111866
+ },
111867
+ {
111868
+ "name": "ENUM",
111869
+ "description": "One of a fixed set of string values.",
111870
+ "isDeprecated": false,
111871
+ "deprecationReason": null
111872
+ },
111873
+ {
111874
+ "name": "DATE",
111875
+ "description": "Date or datetime value.",
111876
+ "isDeprecated": false,
111877
+ "deprecationReason": null
111878
+ },
111879
+ {
111880
+ "name": "ARRAY",
111881
+ "description": "An array of sub-objects (see itemFields for the element schema).",
111882
+ "isDeprecated": false,
111883
+ "deprecationReason": null
111884
+ },
111885
+ {
111886
+ "name": "OBJECT",
111887
+ "description": "A nested object (see itemFields for its fields).",
111888
+ "isDeprecated": false,
111889
+ "deprecationReason": null
111890
+ },
111891
+ {
111892
+ "name": "JSON",
111893
+ "description": "Free-form JSON — the structure is not statically described.",
111894
+ "isDeprecated": false,
111895
+ "deprecationReason": null
111896
+ }
111897
+ ],
111898
+ "possibleTypes": null
111899
+ },
111900
+ {
111901
+ "kind": "OBJECT",
111902
+ "name": "ShippingServiceOption",
111903
+ "description": "Service option offered by a shipping provider for a given order (e.g. office-to-office, to-address).",
111904
+ "fields": [
111905
+ {
111906
+ "name": "id",
111907
+ "description": "Machine identifier of the service as used by the provider API.",
111908
+ "args": [],
111909
+ "type": {
111910
+ "kind": "NON_NULL",
111911
+ "name": null,
111912
+ "ofType": {
111913
+ "kind": "SCALAR",
111914
+ "name": "String",
111915
+ "ofType": null
111916
+ }
111917
+ },
111918
+ "isDeprecated": false,
111919
+ "deprecationReason": null
111920
+ },
111921
+ {
111922
+ "name": "name",
111923
+ "description": "Human-readable name of the service.",
111924
+ "args": [],
111925
+ "type": {
111926
+ "kind": "SCALAR",
111927
+ "name": "String",
111928
+ "ofType": null
111929
+ },
111930
+ "isDeprecated": false,
111931
+ "deprecationReason": null
111932
+ },
111933
+ {
111934
+ "name": "deliveryDeadline",
111935
+ "description": "Optional delivery deadline label.",
111936
+ "args": [],
111937
+ "type": {
111938
+ "kind": "SCALAR",
111939
+ "name": "String",
111940
+ "ofType": null
111941
+ },
111942
+ "isDeprecated": false,
111943
+ "deprecationReason": null
111944
+ },
111945
+ {
111946
+ "name": "pickupDate",
111947
+ "description": "Optional pickup date label.",
111948
+ "args": [],
111949
+ "type": {
111950
+ "kind": "SCALAR",
111951
+ "name": "String",
111952
+ "ofType": null
111953
+ },
111954
+ "isDeprecated": false,
111955
+ "deprecationReason": null
111956
+ },
111957
+ {
111958
+ "name": "price",
111959
+ "description": "Calculated price for this service in the order's currency (if available).",
111960
+ "args": [],
111961
+ "type": {
111962
+ "kind": "SCALAR",
111963
+ "name": "Float",
111964
+ "ofType": null
111965
+ },
111966
+ "isDeprecated": false,
111967
+ "deprecationReason": null
111968
+ }
111969
+ ],
111970
+ "inputFields": null,
111971
+ "interfaces": [],
111972
+ "enumValues": null,
111973
+ "possibleTypes": null
111974
+ },
111975
+ {
111976
+ "kind": "OBJECT",
111977
+ "name": "ShippingWaybillSchema",
111978
+ "description": "Complete waybill-input description for a shipping provider. Agents call this first to discover what to submit to `createShippingWaybill`.",
111979
+ "fields": [
111980
+ {
111981
+ "name": "key",
111982
+ "description": "Provider app key (e.g. 'econt', 'speedy', 'dpdbulgaria').",
111983
+ "args": [],
111984
+ "type": {
111985
+ "kind": "NON_NULL",
111986
+ "name": null,
111987
+ "ofType": {
111988
+ "kind": "SCALAR",
111989
+ "name": "String",
111990
+ "ofType": null
111991
+ }
111992
+ },
111993
+ "isDeprecated": false,
111994
+ "deprecationReason": null
111995
+ },
111996
+ {
111997
+ "name": "name",
111998
+ "description": "Provider display name.",
111999
+ "args": [],
112000
+ "type": {
112001
+ "kind": "SCALAR",
112002
+ "name": "String",
112003
+ "ofType": null
112004
+ },
112005
+ "isDeprecated": false,
112006
+ "deprecationReason": null
112007
+ },
112008
+ {
112009
+ "name": "commonFields",
112010
+ "description": "Fields that are always part of the top-level ShippingWaybillInput (service_id, weight, packages, cod, insurance, content, etc.).",
112011
+ "args": [],
112012
+ "type": {
112013
+ "kind": "NON_NULL",
112014
+ "name": null,
112015
+ "ofType": {
112016
+ "kind": "LIST",
112017
+ "name": null,
112018
+ "ofType": {
112019
+ "kind": "NON_NULL",
112020
+ "name": null,
112021
+ "ofType": {
112022
+ "kind": "OBJECT",
112023
+ "name": "ShippingWaybillFieldDescriptor",
112024
+ "ofType": null
112025
+ }
112026
+ }
112027
+ }
112028
+ },
112029
+ "isDeprecated": false,
112030
+ "deprecationReason": null
112031
+ },
112032
+ {
112033
+ "name": "providerOptions",
112034
+ "description": "Provider-specific fields expected inside `providerOptions` JSON blob.",
112035
+ "args": [],
112036
+ "type": {
112037
+ "kind": "NON_NULL",
112038
+ "name": null,
112039
+ "ofType": {
112040
+ "kind": "LIST",
112041
+ "name": null,
112042
+ "ofType": {
112043
+ "kind": "NON_NULL",
112044
+ "name": null,
112045
+ "ofType": {
112046
+ "kind": "OBJECT",
112047
+ "name": "ShippingWaybillFieldDescriptor",
112048
+ "ofType": null
112049
+ }
112050
+ }
112051
+ }
112052
+ },
112053
+ "isDeprecated": false,
112054
+ "deprecationReason": null
112055
+ },
112056
+ {
112057
+ "name": "businessRules",
112058
+ "description": "Human-readable list of business-rule guards enforced before waybill creation (e.g. order must not be archived).",
112059
+ "args": [],
112060
+ "type": {
112061
+ "kind": "NON_NULL",
112062
+ "name": null,
112063
+ "ofType": {
112064
+ "kind": "LIST",
112065
+ "name": null,
112066
+ "ofType": {
112067
+ "kind": "NON_NULL",
112068
+ "name": null,
112069
+ "ofType": {
112070
+ "kind": "SCALAR",
112071
+ "name": "String",
112072
+ "ofType": null
112073
+ }
112074
+ }
112075
+ }
112076
+ },
112077
+ "isDeprecated": false,
112078
+ "deprecationReason": null
112079
+ },
112080
+ {
112081
+ "name": "services",
112082
+ "description": "Service options available for the provided order (populated only when `orderId` is passed).",
112083
+ "args": [],
112084
+ "type": {
112085
+ "kind": "NON_NULL",
112086
+ "name": null,
112087
+ "ofType": {
112088
+ "kind": "LIST",
112089
+ "name": null,
112090
+ "ofType": {
112091
+ "kind": "NON_NULL",
112092
+ "name": null,
112093
+ "ofType": {
112094
+ "kind": "OBJECT",
112095
+ "name": "ShippingServiceOption",
112096
+ "ofType": null
112097
+ }
112098
+ }
112099
+ }
112100
+ },
112101
+ "isDeprecated": false,
112102
+ "deprecationReason": null
112103
+ },
112104
+ {
112105
+ "name": "exampleInput",
112106
+ "description": "Example complete ShippingWaybillInput as a JSON-encoded string (agents can use this as a starting template).",
112107
+ "args": [],
112108
+ "type": {
112109
+ "kind": "SCALAR",
112110
+ "name": "String",
112111
+ "ofType": null
112112
+ },
112113
+ "isDeprecated": false,
112114
+ "deprecationReason": null
112115
+ }
112116
+ ],
112117
+ "inputFields": null,
112118
+ "interfaces": [],
112119
+ "enumValues": null,
112120
+ "possibleTypes": null
112121
+ },
109354
112122
  {
109355
112123
  "kind": "OBJECT",
109356
112124
  "name": "NitroStorefront",