@cloudcart/dev-mcp 0.2.13 → 0.2.14

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
@@ -17803,6 +17803,128 @@
17803
17803
  "isDeprecated": false,
17804
17804
  "deprecationReason": null
17805
17805
  },
17806
+ {
17807
+ "name": "productsBulkAttachBrandModels",
17808
+ "description": "Attach additional brand-models to N products WITHOUT touching the rest. Use when the merchant wants to ADD a model to existing pinnings — e.g. 'also tag these tires as Audi A4' without removing the BMW M3 pinning they already have. Existing brand-model attachments are preserved; the supplied ids are added on top. Same validation as `productsBulkSetBrandModels` — invalid ids surface in `bulkOperationStatus.extra.invalidBrandModelIds`, all-invalid fails with `not_found`.",
17809
+ "args": [
17810
+ {
17811
+ "name": "ids",
17812
+ "description": "Product IDs.",
17813
+ "type": {
17814
+ "kind": "NON_NULL",
17815
+ "name": null,
17816
+ "ofType": {
17817
+ "kind": "LIST",
17818
+ "name": null,
17819
+ "ofType": {
17820
+ "kind": "NON_NULL",
17821
+ "name": null,
17822
+ "ofType": {
17823
+ "kind": "SCALAR",
17824
+ "name": "ID",
17825
+ "ofType": null
17826
+ }
17827
+ }
17828
+ }
17829
+ },
17830
+ "defaultValue": null
17831
+ },
17832
+ {
17833
+ "name": "brandModelIds",
17834
+ "description": "Brand-model ROW IDs (the `BrandModelItem.id` field) to ADD. Resolve via `brand(id) { models { id } }` or `brandModels(brandId)`. Ids already attached on a product are no-ops for that product.",
17835
+ "type": {
17836
+ "kind": "NON_NULL",
17837
+ "name": null,
17838
+ "ofType": {
17839
+ "kind": "LIST",
17840
+ "name": null,
17841
+ "ofType": {
17842
+ "kind": "NON_NULL",
17843
+ "name": null,
17844
+ "ofType": {
17845
+ "kind": "SCALAR",
17846
+ "name": "ID",
17847
+ "ofType": null
17848
+ }
17849
+ }
17850
+ }
17851
+ },
17852
+ "defaultValue": null
17853
+ }
17854
+ ],
17855
+ "type": {
17856
+ "kind": "NON_NULL",
17857
+ "name": null,
17858
+ "ofType": {
17859
+ "kind": "OBJECT",
17860
+ "name": "BulkOperationJob",
17861
+ "ofType": null
17862
+ }
17863
+ },
17864
+ "isDeprecated": false,
17865
+ "deprecationReason": null
17866
+ },
17867
+ {
17868
+ "name": "productsBulkDetachBrandModels",
17869
+ "description": "Detach specific brand-models from N products WITHOUT touching the rest. Use when the merchant wants to REMOVE one pinning while keeping others — e.g. 'untag these tires from Audi A4' but leave BMW M3 alone. Only the supplied ids are removed; ids not currently attached are no-ops for that product. Same validation as `productsBulkSetBrandModels`.",
17870
+ "args": [
17871
+ {
17872
+ "name": "ids",
17873
+ "description": "Product IDs.",
17874
+ "type": {
17875
+ "kind": "NON_NULL",
17876
+ "name": null,
17877
+ "ofType": {
17878
+ "kind": "LIST",
17879
+ "name": null,
17880
+ "ofType": {
17881
+ "kind": "NON_NULL",
17882
+ "name": null,
17883
+ "ofType": {
17884
+ "kind": "SCALAR",
17885
+ "name": "ID",
17886
+ "ofType": null
17887
+ }
17888
+ }
17889
+ }
17890
+ },
17891
+ "defaultValue": null
17892
+ },
17893
+ {
17894
+ "name": "brandModelIds",
17895
+ "description": "Brand-model ROW IDs to REMOVE. Resolve via `product(id) { brandModels { id } }` to see what's currently attached.",
17896
+ "type": {
17897
+ "kind": "NON_NULL",
17898
+ "name": null,
17899
+ "ofType": {
17900
+ "kind": "LIST",
17901
+ "name": null,
17902
+ "ofType": {
17903
+ "kind": "NON_NULL",
17904
+ "name": null,
17905
+ "ofType": {
17906
+ "kind": "SCALAR",
17907
+ "name": "ID",
17908
+ "ofType": null
17909
+ }
17910
+ }
17911
+ }
17912
+ },
17913
+ "defaultValue": null
17914
+ }
17915
+ ],
17916
+ "type": {
17917
+ "kind": "NON_NULL",
17918
+ "name": null,
17919
+ "ofType": {
17920
+ "kind": "OBJECT",
17921
+ "name": "BulkOperationJob",
17922
+ "ofType": null
17923
+ }
17924
+ },
17925
+ "isDeprecated": false,
17926
+ "deprecationReason": null
17927
+ },
17806
17928
  {
17807
17929
  "name": "productsBulkAttachCategories",
17808
17930
  "description": "Attach N additional categories to N products (multi-category pivot — `Product.categories`). Existing categories on the products are kept; the supplied ids are added on top. Use `productsBulkSetCategory` for the SINGLE main category (`category_id` column).",
@@ -30268,7 +30390,7 @@
30268
30390
  },
30269
30391
  {
30270
30392
  "name": "createBrand",
30271
- "description": "Create a new brand.",
30393
+ "description": "Create a new brand. On success `data` contains `{ id }` (the new brand id) — capture it to avoid an extra brands() lookup. The created brand can be re-read via `brand(id) { ... }`.",
30272
30394
  "args": [
30273
30395
  {
30274
30396
  "name": "input",
@@ -30375,7 +30497,7 @@
30375
30497
  },
30376
30498
  {
30377
30499
  "name": "createBrandModel",
30378
- "description": "Create a new model under a brand.",
30500
+ "description": "Create a new model under a brand. On success `data` contains `{ id }` (the new model id) — capture it for subsequent `productsBulkSetBrandModels` calls without re-querying `brandModels`.",
30379
30501
  "args": [
30380
30502
  {
30381
30503
  "name": "brandId",
@@ -30522,6 +30644,82 @@
30522
30644
  "isDeprecated": false,
30523
30645
  "deprecationReason": null
30524
30646
  },
30647
+ {
30648
+ "name": "deleteBrand",
30649
+ "description": "Delete a single brand. Synchronous — returns immediately with success/error instead of queueing a job. Refuses with `dependency_blocked` when the brand still has products attached. Use the bulk variant `brandsBulkDelete` only for batch / async deletes.",
30650
+ "args": [
30651
+ {
30652
+ "name": "id",
30653
+ "description": "Brand ID.",
30654
+ "type": {
30655
+ "kind": "NON_NULL",
30656
+ "name": null,
30657
+ "ofType": {
30658
+ "kind": "SCALAR",
30659
+ "name": "ID",
30660
+ "ofType": null
30661
+ }
30662
+ },
30663
+ "defaultValue": null
30664
+ }
30665
+ ],
30666
+ "type": {
30667
+ "kind": "NON_NULL",
30668
+ "name": null,
30669
+ "ofType": {
30670
+ "kind": "OBJECT",
30671
+ "name": "AdminAppMutationResult",
30672
+ "ofType": null
30673
+ }
30674
+ },
30675
+ "isDeprecated": false,
30676
+ "deprecationReason": null
30677
+ },
30678
+ {
30679
+ "name": "deleteBrandModel",
30680
+ "description": "Delete a single brand model. Synchronous — returns immediately with success/error instead of queueing a job. Refuses with `dependency_blocked` when the model still has products attached. Use the bulk variant `brandModelsBulkDelete` only for batch / async deletes.",
30681
+ "args": [
30682
+ {
30683
+ "name": "brandId",
30684
+ "description": "Brand ID.",
30685
+ "type": {
30686
+ "kind": "NON_NULL",
30687
+ "name": null,
30688
+ "ofType": {
30689
+ "kind": "SCALAR",
30690
+ "name": "ID",
30691
+ "ofType": null
30692
+ }
30693
+ },
30694
+ "defaultValue": null
30695
+ },
30696
+ {
30697
+ "name": "modelId",
30698
+ "description": "Model ID.",
30699
+ "type": {
30700
+ "kind": "NON_NULL",
30701
+ "name": null,
30702
+ "ofType": {
30703
+ "kind": "SCALAR",
30704
+ "name": "ID",
30705
+ "ofType": null
30706
+ }
30707
+ },
30708
+ "defaultValue": null
30709
+ }
30710
+ ],
30711
+ "type": {
30712
+ "kind": "NON_NULL",
30713
+ "name": null,
30714
+ "ofType": {
30715
+ "kind": "OBJECT",
30716
+ "name": "AdminAppMutationResult",
30717
+ "ofType": null
30718
+ }
30719
+ },
30720
+ "isDeprecated": false,
30721
+ "deprecationReason": null
30722
+ },
30525
30723
  {
30526
30724
  "name": "brandsBulkDelete",
30527
30725
  "description": "Bulk-delete brands. Mirrors the admin Brand & Model listing's Delete bulk action. Refuses with `dependency_blocked` when any of the supplied brands still has products attached.",
@@ -100286,7 +100484,7 @@
100286
100484
  },
100287
100485
  {
100288
100486
  "name": "data",
100289
- "description": "Additional data (app-specific).",
100487
+ "description": "Additional data (app-specific). Conventions across the admin mutations: `createBrand` / `createBrandModel` populate `{ id }` of the new entity here; `updateBrand` / `updateBrandModel` echo `{ id }` of the touched row; `toggleBrandStatus` / `toggleBrandModelStatus` return `{ active }` so callers can read the new state without re-querying. When `success: false`, `data` is usually null and the failure detail is in `message`.",
100290
100488
  "args": [],
100291
100489
  "type": {
100292
100490
  "kind": "SCALAR",
Binary file