@cloudcart/dev-mcp 0.2.10 → 0.2.12

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
@@ -21569,6 +21569,72 @@
21569
21569
  "isDeprecated": false,
21570
21570
  "deprecationReason": null
21571
21571
  },
21572
+ {
21573
+ "name": "productsBulkCreate",
21574
+ "description": "Create up to ~10 000 products in a single GraphQL call. Async — returns a `BulkOperationJob` immediately\nwith the same shape as the other 23 `productsBulk*` mutations. Use `bulkOperationStatus(jobId)` to poll\nprogress and read final counts / errors.\n\nBacked by the existing JSON-import pipeline: payload is serialized to storage, a `JsonImport`\nrow is created, and the `JsonParser` job is dispatched on the `'import'` queue. Records are processed\nin chunks of 20 by the shared `Importer` worker — same code path that powers admin-panel JSON / CSV\nimports, so all features are supported: variants, images (via URL), category properties, tags, tabs,\nbrand-model linkage.\n\n**Replaces CSV / XML import for AI-agent use cases.** Instead of multi-step upload + column-mapping,\npass typed product objects directly.\n\n**Validation:** synchronous rules reject empty input and malformed fields. Per-product DB-level\nerrors (missing category id, duplicate sku, etc.) surface as `skippedIds` in the status payload.\n\n**Attribution:** the PAT-bound admin is captured at dispatch and re-bound inside the worker, so\n`Product.changeLog` entries are attributed to the caller — identical to the other `productsBulk*`\nmutations.\n\nExample:\n```graphql\nmutation {\n productsBulkCreate(products: [\n { name: \"Red T-Shirt\", price: 19.99, sku: \"TS-RED-001\",\n category_id: \"5\", images: [\"https://example.com/red.jpg\"],\n variants: [\n { v1: \"Red\", v2: \"M\", price: 19.99, quantity: 10 },\n { v1: \"Red\", v2: \"L\", price: 19.99, quantity: 5 }\n ],\n category_properties: [{ name: \"Material\", values: [\"Cotton\"] }],\n tags: [\"summer\", \"new\"] }\n ]) { jobId queuedCount message }\n}\n```",
21575
+ "args": [
21576
+ {
21577
+ "name": "products",
21578
+ "description": "Products to create. Hard cap at 10 000 per call — for larger imports, chunk client-side and dispatch multiple jobs.",
21579
+ "type": {
21580
+ "kind": "NON_NULL",
21581
+ "name": null,
21582
+ "ofType": {
21583
+ "kind": "LIST",
21584
+ "name": null,
21585
+ "ofType": {
21586
+ "kind": "NON_NULL",
21587
+ "name": null,
21588
+ "ofType": {
21589
+ "kind": "INPUT_OBJECT",
21590
+ "name": "JsonProductInput",
21591
+ "ofType": null
21592
+ }
21593
+ }
21594
+ }
21595
+ },
21596
+ "defaultValue": null
21597
+ }
21598
+ ],
21599
+ "type": {
21600
+ "kind": "NON_NULL",
21601
+ "name": null,
21602
+ "ofType": {
21603
+ "kind": "OBJECT",
21604
+ "name": "BulkOperationJob",
21605
+ "ofType": null
21606
+ }
21607
+ },
21608
+ "isDeprecated": false,
21609
+ "deprecationReason": null
21610
+ },
21611
+ {
21612
+ "name": "bulkOperationCancel",
21613
+ "description": "Cancel an in-flight bulk operation. Works for both backings:\n- Mongo-tracked productsBulk* jobs (productsBulkSetActive, BulkDuplicate, …): marks the `bulk_operations` doc as CANCELLED so the worker stops at the next chunk boundary. Already-processed records are kept (no rollback).\n- JsonImport-tracked productsBulkCreate jobs: deletes all pending SiteQueue + GlobalImportRecords rows so no further products are created, and marks the JsonImport row as cancelled. Products already created stay.\n\nIdempotent — calling on a job that's already in a terminal state (COMPLETED / FAILED / CANCELLED) is a no-op that returns the current status.\n\nReturns the same payload shape as `bulkOperationStatus(jobId)` so callers can read the final counts immediately.",
21614
+ "args": [
21615
+ {
21616
+ "name": "jobId",
21617
+ "description": "Job id originally returned by any `productsBulk*` mutation.",
21618
+ "type": {
21619
+ "kind": "NON_NULL",
21620
+ "name": null,
21621
+ "ofType": {
21622
+ "kind": "SCALAR",
21623
+ "name": "ID",
21624
+ "ofType": null
21625
+ }
21626
+ },
21627
+ "defaultValue": null
21628
+ }
21629
+ ],
21630
+ "type": {
21631
+ "kind": "OBJECT",
21632
+ "name": "BulkOperationStatus",
21633
+ "ofType": null
21634
+ },
21635
+ "isDeprecated": false,
21636
+ "deprecationReason": null
21637
+ },
21572
21638
  {
21573
21639
  "name": "createCustomer",
21574
21640
  "description": "Create a new customer.",
@@ -49747,6 +49813,12 @@
49747
49813
  "description": "Worker hit a fatal error before finishing.",
49748
49814
  "isDeprecated": false,
49749
49815
  "deprecationReason": null
49816
+ },
49817
+ {
49818
+ "name": "CANCELLED",
49819
+ "description": "Job was cancelled by a caller via `bulkOperationCancel(jobId)`. Already-processed work stays — only pending records are removed.",
49820
+ "isDeprecated": false,
49821
+ "deprecationReason": null
49750
49822
  }
49751
49823
  ],
49752
49824
  "possibleTypes": null
@@ -56769,6 +56841,686 @@
56769
56841
  "enumValues": null,
56770
56842
  "possibleTypes": null
56771
56843
  },
56844
+ {
56845
+ "kind": "INPUT_OBJECT",
56846
+ "name": "JsonProductInput",
56847
+ "description": "One product to create via productsBulkCreate. Field semantics match the existing JSON import format (Modules\\Importer\\DataFormat\\Product) — all fields except name are optional.",
56848
+ "fields": null,
56849
+ "inputFields": [
56850
+ {
56851
+ "name": "name",
56852
+ "description": "Product name (required, max 191 chars).",
56853
+ "type": {
56854
+ "kind": "NON_NULL",
56855
+ "name": null,
56856
+ "ofType": {
56857
+ "kind": "SCALAR",
56858
+ "name": "String",
56859
+ "ofType": null
56860
+ }
56861
+ },
56862
+ "defaultValue": null
56863
+ },
56864
+ {
56865
+ "name": "url_handle",
56866
+ "description": "URL-friendly handle. Auto-generated from name when omitted.",
56867
+ "type": {
56868
+ "kind": "SCALAR",
56869
+ "name": "String",
56870
+ "ofType": null
56871
+ },
56872
+ "defaultValue": null
56873
+ },
56874
+ {
56875
+ "name": "sku",
56876
+ "description": "Stock Keeping Unit. Stored on a synthesized default variant when variants[] is omitted; read it back via variants[0].sku (CloudCart puts sku on variants, not products).",
56877
+ "type": {
56878
+ "kind": "SCALAR",
56879
+ "name": "String",
56880
+ "ofType": null
56881
+ },
56882
+ "defaultValue": null
56883
+ },
56884
+ {
56885
+ "name": "barcode",
56886
+ "description": "Product barcode. Stored on a synthesized default variant when variants[] is omitted; read it back via variants[0].barcode.",
56887
+ "type": {
56888
+ "kind": "SCALAR",
56889
+ "name": "String",
56890
+ "ofType": null
56891
+ },
56892
+ "defaultValue": null
56893
+ },
56894
+ {
56895
+ "name": "price",
56896
+ "description": "Price. Stored on a synthesized default variant when variants[] is omitted; read it back via variants[0].price or price_from/price_to on the product (CloudCart prices live on variants).",
56897
+ "type": {
56898
+ "kind": "SCALAR",
56899
+ "name": "Float",
56900
+ "ofType": null
56901
+ },
56902
+ "defaultValue": null
56903
+ },
56904
+ {
56905
+ "name": "quantity",
56906
+ "description": "Initial stock quantity. Stored on a synthesized default variant when variants[] is omitted; read it back via variants[0].quantity.",
56907
+ "type": {
56908
+ "kind": "SCALAR",
56909
+ "name": "Int",
56910
+ "ofType": null
56911
+ },
56912
+ "defaultValue": null
56913
+ },
56914
+ {
56915
+ "name": "short_description",
56916
+ "description": "Short description (rich text, max 65000 chars).",
56917
+ "type": {
56918
+ "kind": "SCALAR",
56919
+ "name": "String",
56920
+ "ofType": null
56921
+ },
56922
+ "defaultValue": null
56923
+ },
56924
+ {
56925
+ "name": "description",
56926
+ "description": "Long description (rich text, max 250000 chars).",
56927
+ "type": {
56928
+ "kind": "SCALAR",
56929
+ "name": "String",
56930
+ "ofType": null
56931
+ },
56932
+ "defaultValue": null
56933
+ },
56934
+ {
56935
+ "name": "description_title",
56936
+ "description": "Description title (heading rendered above description).",
56937
+ "type": {
56938
+ "kind": "SCALAR",
56939
+ "name": "String",
56940
+ "ofType": null
56941
+ },
56942
+ "defaultValue": null
56943
+ },
56944
+ {
56945
+ "name": "seo_title",
56946
+ "description": "SEO meta title.",
56947
+ "type": {
56948
+ "kind": "SCALAR",
56949
+ "name": "String",
56950
+ "ofType": null
56951
+ },
56952
+ "defaultValue": null
56953
+ },
56954
+ {
56955
+ "name": "seo_description",
56956
+ "description": "SEO meta description.",
56957
+ "type": {
56958
+ "kind": "SCALAR",
56959
+ "name": "String",
56960
+ "ofType": null
56961
+ },
56962
+ "defaultValue": null
56963
+ },
56964
+ {
56965
+ "name": "active",
56966
+ "description": "Active flag — `yes` (default) or `no`.",
56967
+ "type": {
56968
+ "kind": "ENUM",
56969
+ "name": "YesNo",
56970
+ "ofType": null
56971
+ },
56972
+ "defaultValue": null
56973
+ },
56974
+ {
56975
+ "name": "digital",
56976
+ "description": "Digital product flag — `yes` or `no` (default).",
56977
+ "type": {
56978
+ "kind": "ENUM",
56979
+ "name": "YesNo",
56980
+ "ofType": null
56981
+ },
56982
+ "defaultValue": null
56983
+ },
56984
+ {
56985
+ "name": "shipping",
56986
+ "description": "Requires shipping — `yes` (default) or `no`.",
56987
+ "type": {
56988
+ "kind": "ENUM",
56989
+ "name": "YesNo",
56990
+ "ofType": null
56991
+ },
56992
+ "defaultValue": null
56993
+ },
56994
+ {
56995
+ "name": "tracking",
56996
+ "description": "Stock tracking flag.",
56997
+ "type": {
56998
+ "kind": "SCALAR",
56999
+ "name": "String",
57000
+ "ofType": null
57001
+ },
57002
+ "defaultValue": null
57003
+ },
57004
+ {
57005
+ "name": "draft",
57006
+ "description": "Draft mode — `yes` or `no` (default).",
57007
+ "type": {
57008
+ "kind": "ENUM",
57009
+ "name": "YesNo",
57010
+ "ofType": null
57011
+ },
57012
+ "defaultValue": null
57013
+ },
57014
+ {
57015
+ "name": "is_hidden",
57016
+ "description": "Hide from storefront listings.",
57017
+ "type": {
57018
+ "kind": "SCALAR",
57019
+ "name": "Boolean",
57020
+ "ofType": null
57021
+ },
57022
+ "defaultValue": null
57023
+ },
57024
+ {
57025
+ "name": "sale",
57026
+ "description": "On-sale badge — `yes` or `no` (default).",
57027
+ "type": {
57028
+ "kind": "ENUM",
57029
+ "name": "YesNo",
57030
+ "ofType": null
57031
+ },
57032
+ "defaultValue": null
57033
+ },
57034
+ {
57035
+ "name": "new",
57036
+ "description": "New badge — `yes` or `no` (default).",
57037
+ "type": {
57038
+ "kind": "ENUM",
57039
+ "name": "YesNo",
57040
+ "ofType": null
57041
+ },
57042
+ "defaultValue": null
57043
+ },
57044
+ {
57045
+ "name": "featured",
57046
+ "description": "Featured badge.",
57047
+ "type": {
57048
+ "kind": "SCALAR",
57049
+ "name": "Boolean",
57050
+ "ofType": null
57051
+ },
57052
+ "defaultValue": null
57053
+ },
57054
+ {
57055
+ "name": "continue_selling",
57056
+ "description": "Continue selling when out of stock — `yes` or `no` (default).",
57057
+ "type": {
57058
+ "kind": "ENUM",
57059
+ "name": "YesNo",
57060
+ "ofType": null
57061
+ },
57062
+ "defaultValue": null
57063
+ },
57064
+ {
57065
+ "name": "threshold",
57066
+ "description": "Low stock threshold.",
57067
+ "type": {
57068
+ "kind": "SCALAR",
57069
+ "name": "Int",
57070
+ "ofType": null
57071
+ },
57072
+ "defaultValue": null
57073
+ },
57074
+ {
57075
+ "name": "minimum",
57076
+ "description": "Minimum order quantity.",
57077
+ "type": {
57078
+ "kind": "SCALAR",
57079
+ "name": "Float",
57080
+ "ofType": null
57081
+ },
57082
+ "defaultValue": null
57083
+ },
57084
+ {
57085
+ "name": "category_id",
57086
+ "description": "Primary category id.",
57087
+ "type": {
57088
+ "kind": "SCALAR",
57089
+ "name": "ID",
57090
+ "ofType": null
57091
+ },
57092
+ "defaultValue": null
57093
+ },
57094
+ {
57095
+ "name": "categories_ids",
57096
+ "description": "All category ids to assign (primary + additional).",
57097
+ "type": {
57098
+ "kind": "LIST",
57099
+ "name": null,
57100
+ "ofType": {
57101
+ "kind": "NON_NULL",
57102
+ "name": null,
57103
+ "ofType": {
57104
+ "kind": "SCALAR",
57105
+ "name": "ID",
57106
+ "ofType": null
57107
+ }
57108
+ }
57109
+ },
57110
+ "defaultValue": null
57111
+ },
57112
+ {
57113
+ "name": "vendor_id",
57114
+ "description": "Vendor id.",
57115
+ "type": {
57116
+ "kind": "SCALAR",
57117
+ "name": "ID",
57118
+ "ofType": null
57119
+ },
57120
+ "defaultValue": null
57121
+ },
57122
+ {
57123
+ "name": "status_id",
57124
+ "description": "In-stock status id (overrides default).",
57125
+ "type": {
57126
+ "kind": "SCALAR",
57127
+ "name": "ID",
57128
+ "ofType": null
57129
+ },
57130
+ "defaultValue": null
57131
+ },
57132
+ {
57133
+ "name": "out_of_stock_id",
57134
+ "description": "Out-of-stock status id (overrides default).",
57135
+ "type": {
57136
+ "kind": "SCALAR",
57137
+ "name": "ID",
57138
+ "ofType": null
57139
+ },
57140
+ "defaultValue": null
57141
+ },
57142
+ {
57143
+ "name": "p1",
57144
+ "description": "Parameter axis name #1 (when using variants — e.g. 'Color').",
57145
+ "type": {
57146
+ "kind": "SCALAR",
57147
+ "name": "String",
57148
+ "ofType": null
57149
+ },
57150
+ "defaultValue": null
57151
+ },
57152
+ {
57153
+ "name": "p2",
57154
+ "description": "Parameter axis name #2 (e.g. 'Size').",
57155
+ "type": {
57156
+ "kind": "SCALAR",
57157
+ "name": "String",
57158
+ "ofType": null
57159
+ },
57160
+ "defaultValue": null
57161
+ },
57162
+ {
57163
+ "name": "p3",
57164
+ "description": "Parameter axis name #3.",
57165
+ "type": {
57166
+ "kind": "SCALAR",
57167
+ "name": "String",
57168
+ "ofType": null
57169
+ },
57170
+ "defaultValue": null
57171
+ },
57172
+ {
57173
+ "name": "tags",
57174
+ "description": "Tag names. New tags are created on the fly.",
57175
+ "type": {
57176
+ "kind": "LIST",
57177
+ "name": null,
57178
+ "ofType": {
57179
+ "kind": "NON_NULL",
57180
+ "name": null,
57181
+ "ofType": {
57182
+ "kind": "SCALAR",
57183
+ "name": "String",
57184
+ "ofType": null
57185
+ }
57186
+ }
57187
+ },
57188
+ "defaultValue": null
57189
+ },
57190
+ {
57191
+ "name": "images",
57192
+ "description": "Image URLs to download and attach. First URL becomes primary. Order preserved.",
57193
+ "type": {
57194
+ "kind": "LIST",
57195
+ "name": null,
57196
+ "ofType": {
57197
+ "kind": "NON_NULL",
57198
+ "name": null,
57199
+ "ofType": {
57200
+ "kind": "SCALAR",
57201
+ "name": "String",
57202
+ "ofType": null
57203
+ }
57204
+ }
57205
+ },
57206
+ "defaultValue": null
57207
+ },
57208
+ {
57209
+ "name": "variants",
57210
+ "description": "Variants. When provided, default-variant fields (price/sku/quantity) are ignored.",
57211
+ "type": {
57212
+ "kind": "LIST",
57213
+ "name": null,
57214
+ "ofType": {
57215
+ "kind": "NON_NULL",
57216
+ "name": null,
57217
+ "ofType": {
57218
+ "kind": "INPUT_OBJECT",
57219
+ "name": "JsonProductVariantInput",
57220
+ "ofType": null
57221
+ }
57222
+ }
57223
+ },
57224
+ "defaultValue": null
57225
+ },
57226
+ {
57227
+ "name": "category_properties",
57228
+ "description": "Category-property assignments (e.g. 'Material' → ['Cotton']).",
57229
+ "type": {
57230
+ "kind": "LIST",
57231
+ "name": null,
57232
+ "ofType": {
57233
+ "kind": "NON_NULL",
57234
+ "name": null,
57235
+ "ofType": {
57236
+ "kind": "INPUT_OBJECT",
57237
+ "name": "JsonProductPropertyInput",
57238
+ "ofType": null
57239
+ }
57240
+ }
57241
+ },
57242
+ "defaultValue": null
57243
+ },
57244
+ {
57245
+ "name": "tabs",
57246
+ "description": "Product tabs.",
57247
+ "type": {
57248
+ "kind": "LIST",
57249
+ "name": null,
57250
+ "ofType": {
57251
+ "kind": "NON_NULL",
57252
+ "name": null,
57253
+ "ofType": {
57254
+ "kind": "INPUT_OBJECT",
57255
+ "name": "CreateProductTabInput",
57256
+ "ofType": null
57257
+ }
57258
+ }
57259
+ },
57260
+ "defaultValue": null
57261
+ },
57262
+ {
57263
+ "name": "brand_model",
57264
+ "description": "Brand model assignment.",
57265
+ "type": {
57266
+ "kind": "INPUT_OBJECT",
57267
+ "name": "JsonProductBrandModelInput",
57268
+ "ofType": null
57269
+ },
57270
+ "defaultValue": null
57271
+ },
57272
+ {
57273
+ "name": "sort_order",
57274
+ "description": "Manual sort order in listings.",
57275
+ "type": {
57276
+ "kind": "SCALAR",
57277
+ "name": "Int",
57278
+ "ofType": null
57279
+ },
57280
+ "defaultValue": null
57281
+ },
57282
+ {
57283
+ "name": "publish_date",
57284
+ "description": "Publish date — product becomes visible at this time.",
57285
+ "type": {
57286
+ "kind": "SCALAR",
57287
+ "name": "DateTime",
57288
+ "ofType": null
57289
+ },
57290
+ "defaultValue": null
57291
+ },
57292
+ {
57293
+ "name": "active_to",
57294
+ "description": "Deactivation date — product becomes inactive at this time.",
57295
+ "type": {
57296
+ "kind": "SCALAR",
57297
+ "name": "DateTime",
57298
+ "ofType": null
57299
+ },
57300
+ "defaultValue": null
57301
+ },
57302
+ {
57303
+ "name": "unit_id",
57304
+ "description": "Unit id (for grocery / measured products).",
57305
+ "type": {
57306
+ "kind": "SCALAR",
57307
+ "name": "ID",
57308
+ "ofType": null
57309
+ },
57310
+ "defaultValue": null
57311
+ },
57312
+ {
57313
+ "name": "type_digital",
57314
+ "description": "Digital product type (page or file) — only relevant when `digital: yes`.",
57315
+ "type": {
57316
+ "kind": "ENUM",
57317
+ "name": "DigitalType",
57318
+ "ofType": null
57319
+ },
57320
+ "defaultValue": null
57321
+ }
57322
+ ],
57323
+ "interfaces": null,
57324
+ "enumValues": null,
57325
+ "possibleTypes": null
57326
+ },
57327
+ {
57328
+ "kind": "INPUT_OBJECT",
57329
+ "name": "JsonProductVariantInput",
57330
+ "description": "Variant for a product created via productsBulkCreate. `v1`/`v2`/`v3` are the values along the corresponding `p1`/`p2`/`p3` parameter axes.",
57331
+ "fields": null,
57332
+ "inputFields": [
57333
+ {
57334
+ "name": "v1",
57335
+ "description": "Value along the p1 axis (e.g. 'Red').",
57336
+ "type": {
57337
+ "kind": "SCALAR",
57338
+ "name": "String",
57339
+ "ofType": null
57340
+ },
57341
+ "defaultValue": null
57342
+ },
57343
+ {
57344
+ "name": "v2",
57345
+ "description": "Value along the p2 axis (e.g. 'Large').",
57346
+ "type": {
57347
+ "kind": "SCALAR",
57348
+ "name": "String",
57349
+ "ofType": null
57350
+ },
57351
+ "defaultValue": null
57352
+ },
57353
+ {
57354
+ "name": "v3",
57355
+ "description": "Value along the p3 axis.",
57356
+ "type": {
57357
+ "kind": "SCALAR",
57358
+ "name": "String",
57359
+ "ofType": null
57360
+ },
57361
+ "defaultValue": null
57362
+ },
57363
+ {
57364
+ "name": "sku",
57365
+ "description": "Variant SKU.",
57366
+ "type": {
57367
+ "kind": "SCALAR",
57368
+ "name": "String",
57369
+ "ofType": null
57370
+ },
57371
+ "defaultValue": null
57372
+ },
57373
+ {
57374
+ "name": "barcode",
57375
+ "description": "Variant barcode.",
57376
+ "type": {
57377
+ "kind": "SCALAR",
57378
+ "name": "String",
57379
+ "ofType": null
57380
+ },
57381
+ "defaultValue": null
57382
+ },
57383
+ {
57384
+ "name": "price",
57385
+ "description": "Variant price.",
57386
+ "type": {
57387
+ "kind": "SCALAR",
57388
+ "name": "Float",
57389
+ "ofType": null
57390
+ },
57391
+ "defaultValue": null
57392
+ },
57393
+ {
57394
+ "name": "quantity",
57395
+ "description": "Variant initial quantity.",
57396
+ "type": {
57397
+ "kind": "SCALAR",
57398
+ "name": "Int",
57399
+ "ofType": null
57400
+ },
57401
+ "defaultValue": null
57402
+ },
57403
+ {
57404
+ "name": "weight",
57405
+ "description": "Variant weight (for shipping calculation).",
57406
+ "type": {
57407
+ "kind": "SCALAR",
57408
+ "name": "Float",
57409
+ "ofType": null
57410
+ },
57411
+ "defaultValue": null
57412
+ },
57413
+ {
57414
+ "name": "minimum",
57415
+ "description": "Variant minimum order quantity.",
57416
+ "type": {
57417
+ "kind": "SCALAR",
57418
+ "name": "Float",
57419
+ "ofType": null
57420
+ },
57421
+ "defaultValue": null
57422
+ },
57423
+ {
57424
+ "name": "image_urls",
57425
+ "description": "Variant-specific image URLs.",
57426
+ "type": {
57427
+ "kind": "LIST",
57428
+ "name": null,
57429
+ "ofType": {
57430
+ "kind": "NON_NULL",
57431
+ "name": null,
57432
+ "ofType": {
57433
+ "kind": "SCALAR",
57434
+ "name": "String",
57435
+ "ofType": null
57436
+ }
57437
+ }
57438
+ },
57439
+ "defaultValue": null
57440
+ }
57441
+ ],
57442
+ "interfaces": null,
57443
+ "enumValues": null,
57444
+ "possibleTypes": null
57445
+ },
57446
+ {
57447
+ "kind": "INPUT_OBJECT",
57448
+ "name": "JsonProductPropertyInput",
57449
+ "description": "Category-property assignment for a product. Property must exist on one of the product's categories — otherwise it is skipped.",
57450
+ "fields": null,
57451
+ "inputFields": [
57452
+ {
57453
+ "name": "name",
57454
+ "description": "Property name (must match an existing categoryProperty.name on the product's category tree).",
57455
+ "type": {
57456
+ "kind": "NON_NULL",
57457
+ "name": null,
57458
+ "ofType": {
57459
+ "kind": "SCALAR",
57460
+ "name": "String",
57461
+ "ofType": null
57462
+ }
57463
+ },
57464
+ "defaultValue": null
57465
+ },
57466
+ {
57467
+ "name": "values",
57468
+ "description": "One or more values. Multi-value properties accept arrays; single-value properties take the first element.",
57469
+ "type": {
57470
+ "kind": "NON_NULL",
57471
+ "name": null,
57472
+ "ofType": {
57473
+ "kind": "LIST",
57474
+ "name": null,
57475
+ "ofType": {
57476
+ "kind": "NON_NULL",
57477
+ "name": null,
57478
+ "ofType": {
57479
+ "kind": "SCALAR",
57480
+ "name": "String",
57481
+ "ofType": null
57482
+ }
57483
+ }
57484
+ }
57485
+ },
57486
+ "defaultValue": null
57487
+ }
57488
+ ],
57489
+ "interfaces": null,
57490
+ "enumValues": null,
57491
+ "possibleTypes": null
57492
+ },
57493
+ {
57494
+ "kind": "INPUT_OBJECT",
57495
+ "name": "JsonProductBrandModelInput",
57496
+ "description": "Brand model assignment — pins the product to a specific (brand, model) pair.",
57497
+ "fields": null,
57498
+ "inputFields": [
57499
+ {
57500
+ "name": "brand_id",
57501
+ "description": "Brand id.",
57502
+ "type": {
57503
+ "kind": "SCALAR",
57504
+ "name": "ID",
57505
+ "ofType": null
57506
+ },
57507
+ "defaultValue": null
57508
+ },
57509
+ {
57510
+ "name": "model_id",
57511
+ "description": "Model id.",
57512
+ "type": {
57513
+ "kind": "SCALAR",
57514
+ "name": "ID",
57515
+ "ofType": null
57516
+ },
57517
+ "defaultValue": null
57518
+ }
57519
+ ],
57520
+ "interfaces": null,
57521
+ "enumValues": null,
57522
+ "possibleTypes": null
57523
+ },
56772
57524
  {
56773
57525
  "kind": "OBJECT",
56774
57526
  "name": "UserError",