@salesforce/afv-skills 1.65.0 → 1.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-offline-experimentation-run/SKILL.md +16 -15
  3. package/skills/agentforce-offline-experimentation-run/scripts/sfap_replay.py +3 -245
  4. package/skills/dx-devops-work-item-manage/SKILL.md +34 -17
  5. package/skills/dx-devops-work-item-manage/examples/common-workflows.md +49 -0
  6. package/skills/dx-devops-work-item-manage/references/commit-api.md +116 -0
  7. package/skills/experience-lwc-widget-assess/SKILL.md +79 -0
  8. package/skills/experience-lwc-widget-migrate/SKILL.md +50 -0
  9. package/skills/field-service-data-capture-form-deployer-configure/SKILL.md +2 -23
  10. package/skills/field-service-data-capture-form-designer-configure/SKILL.md +3 -13
  11. package/skills/field-service-mobile-branding-configure/SKILL.md +3 -17
  12. package/skills/field-service-objective-designer-configure/SKILL.md +379 -72
  13. package/skills/field-service-prework-brief-deployer-configure/SKILL.md +537 -10
  14. package/skills/field-service-scheduling-policy-designer-query/SKILL.md +1093 -65
  15. package/skills/field-service-sobject-create-configure/SKILL.md +213 -13
  16. package/skills/field-service-voice-to-form-configure/SKILL.md +11 -40
  17. package/skills/field-service-work-rule-designer-configure/SKILL.md +95 -121
  18. package/skills/platform-role-hierarchy-apply/SKILL.md +177 -0
  19. package/skills/platform-widget-generate/SKILL.md +58 -41
  20. package/skills/platform-widget-generate/references/widget-bundle-validation.md +14 -0
  21. package/skills/service-agentforce-contact-center-coordinate/SKILL.md +1 -1
  22. package/skills/service-agentforce-contact-center-coordinate/references/number_management_api.md +11 -1
  23. package/skills/service-agentforce-contact-center-coordinate/scripts/fetch-numbers.sh +12 -6
  24. package/skills/service-agentforce-contact-center-coordinate/scripts/lib.sh +16 -0
  25. package/skills/service-agentforce-contact-center-coordinate/scripts/procure-number.sh +2 -1
  26. package/skills/service-concierge-portal-generate/references/portal-deploy-runbook.md +24 -11
  27. package/skills/service-digital-engagement-channel-configure/SKILL.md +25 -14
  28. package/skills/service-digital-engagement-channel-configure/references/onboarding_contract.md +143 -0
  29. package/skills/service-digital-engagement-deployment-configure/SKILL.md +61 -12
  30. package/skills/service-digital-engagement-deployment-configure/references/connect_api_creation.md +14 -5
  31. package/skills/service-digital-engagement-deployment-configure/references/onboarding_contract.md +146 -0
  32. package/skills/service-itsm-agentic-setup-incident-management/SKILL.md +23 -13
  33. package/skills/service-itsm-agentic-setup-incident-management/references/incident-persona-psg.md +7 -6
  34. package/skills/service-itsm-agentic-setup-incident-management/references/incident-preferences.md +9 -10
  35. package/skills/service-itsm-agentic-setup-incident-management/references/major-incident-management.md +6 -6
  36. package/skills/service-itsm-agentic-setup-incident-management/references/service-mgmt-privilege.md +1 -1
  37. package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +34 -25
  38. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +1 -1
  39. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +90 -86
  40. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/workflow.md +63 -38
  41. package/skills/agentforce-gpt-email-generation-configure/SKILL.md +0 -312
  42. package/skills/agentforce-wizard-ui-forecasting-analytics-components-configure/SKILL.md +0 -64
  43. package/skills/agentforce-wizard-ui-sales-einstein-components-configure/SKILL.md +0 -46
  44. package/skills/automation-company-profile-info-query/SKILL.md +0 -51
  45. package/skills/automation-digital-wallet-configure/SKILL.md +0 -689
  46. package/skills/automation-flow-coordinate/SKILL.md +0 -95
  47. package/skills/automation-flow-coordinate/references/elements/action-call/action-call.md +0 -1569
  48. package/skills/automation-flow-coordinate/references/elements/action-call/conversation-messaging.md +0 -96
  49. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-sms-message.json +0 -23
  50. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-to-journey-no-fields.json +0 -31
  51. package/skills/automation-flow-coordinate/references/elements/action-call/send-to-journey.md +0 -179
  52. package/skills/automation-flow-coordinate/references/elements/exit-rule/examples/event-email-link-click.json +0 -13
  53. package/skills/automation-flow-coordinate/references/elements/exit-rule/exit-rule.md +0 -83
  54. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/examples/forward-to-bot-or-agent.json +0 -69
  55. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/forward-to-bot-or-agent.md +0 -274
  56. package/skills/automation-flow-coordinate/references/elements/start/audience-common.md +0 -192
  57. package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md +0 -130
  58. package/skills/automation-flow-coordinate/references/elements/start/data-cloud-data-change-triggered.md +0 -92
  59. package/skills/automation-flow-coordinate/references/elements/start/form-submission-triggered.md +0 -88
  60. package/skills/automation-flow-coordinate/references/elements/start/segment-triggered.md +0 -152
  61. package/skills/automation-flow-coordinate/references/elements/start/start.md +0 -539
  62. package/skills/automation-flow-coordinate/references/elements/subflow/subflow.md +0 -152
  63. package/skills/automation-flow-coordinate/references/elements/wait/wait.md +0 -497
  64. package/skills/automation-flow-coordinate/references/recipes/author/author.md +0 -868
  65. package/skills/automation-flow-coordinate/references/recipes/summarize/element-generic.md +0 -300
  66. package/skills/automation-flow-coordinate/references/recipes/summarize/reference-resolution.md +0 -292
  67. package/skills/automation-flow-coordinate/references/recipes/summarize/summarize.md +0 -323
  68. package/skills/automation-flow-coordinate/references/recipes/testing/examples/debug-output-template.md +0 -109
  69. package/skills/automation-flow-coordinate/references/recipes/testing/shape.md +0 -219
  70. package/skills/automation-flow-coordinate/references/recipes/testing/shared-stages/intent-analyzer.md +0 -180
  71. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/debug.md +0 -175
  72. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/promote.md +0 -255
  73. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/save-debug.md +0 -212
  74. package/skills/automation-flow-coordinate/references/resources/variable/variable.md +0 -171
  75. package/skills/automation-flow-coordinate/references/shared/anti-patterns.md +0 -786
  76. package/skills/automation-flow-coordinate/references/shared/end/end.md +0 -267
  77. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/README.md +0 -69
  78. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/predictions.jsonl +0 -80
  79. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/prompts.jsonl +0 -116
  80. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/flow-type-resolver.md +0 -321
  81. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/taxonomy.json +0 -320
  82. package/skills/automation-flow-coordinate/references/shared/server-functions.md +0 -597
  83. package/skills/automotive-cloud-appraisal-management-settings-configure/SKILL.md +0 -69
  84. package/skills/automotive-cloud-dealer-essentials-configure/SKILL.md +0 -78
  85. package/skills/automotive-cloud-ground-agent-data-pipelines-configure/SKILL.md +0 -373
  86. package/skills/automotive-cloud-ground-mfg-agent-data-pipelines-configure/SKILL.md +0 -273
  87. package/skills/automotive-cloud-mfg-agent-data-pipelines-configure/SKILL.md +0 -259
  88. package/skills/automotive-cloud-mfg-sales-concierge-agent-create/SKILL.md +0 -369
  89. package/skills/automotive-cloud-mfg-sales-concierge-foundation-configure/SKILL.md +0 -542
  90. package/skills/automotive-cloud-mfg-sales-concierge-foundation-coordinate/SKILL.md +0 -159
  91. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-agent-create/SKILL.md +0 -349
  92. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-configure/SKILL.md +0 -505
  93. package/skills/automotive-cloud-sales-concierge-agent-create/SKILL.md +0 -380
  94. package/skills/automotive-cloud-sales-concierge-foundation-configure/SKILL.md +0 -567
  95. package/skills/automotive-cloud-sales-concierge-foundation-coordinate/SKILL.md +0 -159
  96. package/skills/automotive-cloud-sales-concierge-orchestrator-agent-create/SKILL.md +0 -360
  97. package/skills/automotive-cloud-sales-concierge-orchestrator-configure/SKILL.md +0 -539
  98. package/skills/automotive-cloud-sales-concierge-search-grounding-configure/SKILL.md +0 -358
  99. package/skills/commerce-b2b-merchant-quote-configure/SKILL.md +0 -602
  100. package/skills/commerce-b2b-store-configure/SKILL.md +0 -251
  101. package/skills/commerce-credit-memo-create/SKILL.md +0 -139
  102. package/skills/commerce-delivery-business-hours-configure/SKILL.md +0 -277
  103. package/skills/commerce-delivery-estimation-apply/SKILL.md +0 -155
  104. package/skills/commerce-delivery-estimation-configure/SKILL.md +0 -377
  105. package/skills/commerce-delivery-routing-specs-integrate/SKILL.md +0 -174
  106. package/skills/commerce-estimate-bopis-query/SKILL.md +0 -279
  107. package/skills/commerce-estimate-delivery-date-query/SKILL.md +0 -349
  108. package/skills/commerce-fees-apply/SKILL.md +0 -227
  109. package/skills/commerce-fulfillment-routing-analyze/SKILL.md +0 -200
  110. package/skills/commerce-guest-buyer-create/SKILL.md +0 -173
  111. package/skills/commerce-location-bopis-configure/SKILL.md +0 -378
  112. package/skills/commerce-location-business-hours-configure/SKILL.md +0 -235
  113. package/skills/commerce-location-delivery-processing-time-configure/SKILL.md +0 -309
  114. package/skills/commerce-location-graph-integrate/SKILL.md +0 -131
  115. package/skills/commerce-location-shipping-carrier-method-configure/SKILL.md +0 -755
  116. package/skills/commerce-location-temporary-operating-hours-configure/SKILL.md +0 -331
  117. package/skills/commerce-merchant-buyer-groups-configure/SKILL.md +0 -579
  118. package/skills/commerce-merchant-buyer-user-onboarding-create/SKILL.md +0 -626
  119. package/skills/commerce-merchant-catalog-configure/SKILL.md +0 -614
  120. package/skills/commerce-merchant-extension-provider-configure/SKILL.md +0 -368
  121. package/skills/commerce-merchant-insights-account-health-churn-analyze/SKILL.md +0 -118
  122. package/skills/commerce-merchant-insights-inventory-returns-analyze/SKILL.md +0 -65
  123. package/skills/commerce-merchant-insights-order-shopper-get/SKILL.md +0 -90
  124. package/skills/commerce-merchant-insights-product-performance-analyze/SKILL.md +0 -72
  125. package/skills/commerce-merchant-insights-query/SKILL.md +0 -279
  126. package/skills/commerce-merchant-storefront-guest-access-configure/SKILL.md +0 -656
  127. package/skills/commerce-order-summary-change-apply/SKILL.md +0 -375
  128. package/skills/commerce-product-details-get/SKILL.md +0 -363
  129. package/skills/commerce-product-search/SKILL.md +0 -563
  130. package/skills/commerce-react-storefront-create/SKILL.md +0 -350
  131. package/skills/commerce-return-order-summary-create/SKILL.md +0 -513
  132. package/skills/commerce-search-relevance-analyze/SKILL.md +0 -757
  133. package/skills/commerce-temporary-processing-time-override-create/SKILL.md +0 -274
  134. package/skills/communications-initial-setup-configure/SKILL.md +0 -630
  135. package/skills/communications-multisite-configure/SKILL.md +0 -571
  136. package/skills/communications-revenue-cloud-settings-configure/SKILL.md +0 -74
  137. package/skills/communications-smb-fiber-catalog-create/SKILL.md +0 -413
  138. package/skills/communications-tmf-integrate/SKILL.md +0 -1368
  139. package/skills/consumer-goods-visit-activity-act4-questions-assign/SKILL.md +0 -448
  140. package/skills/consumer-goods-visit-activity-act5-standard-create/SKILL.md +0 -269
  141. package/skills/consumer-goods-visit-activity-act6-assortment-configure/SKILL.md +0 -271
  142. package/skills/consumer-goods-visit-activity-act7-account-scoping-create/SKILL.md +0 -382
  143. package/skills/consumer-goods-visit-activity-act8-plan-attach-create/SKILL.md +0 -373
  144. package/skills/consumer-goods-visit-activity-act9-proof-validate/SKILL.md +0 -389
  145. package/skills/consumer-goods-visit-and-activity-act1-specification-create/SKILL.md +0 -338
  146. package/skills/consumer-goods-visit-and-activity-act2-template-create/SKILL.md +0 -547
  147. package/skills/consumer-goods-visit-and-activity-act3-definition-create/SKILL.md +0 -346
  148. package/skills/consumer-goods-visit-and-activity-configure/SKILL.md +0 -1110
  149. package/skills/crm-analytics-adoption-insights-configure/SKILL.md +0 -224
  150. package/skills/crm-analytics-custom-report-type-lightning-configure/SKILL.md +0 -418
  151. package/skills/crm-analytics-dashboards-configure/SKILL.md +0 -731
  152. package/skills/crm-analytics-operational-analytics-metadata-bridge-migrate/SKILL.md +0 -233
  153. package/skills/crm-analytics-report-notifications-ui-configure/SKILL.md +0 -184
  154. package/skills/crm-analytics-sharing-inheritance-coverage-analyze/SKILL.md +0 -167
  155. package/skills/crm-analytics-sonic-getting-started-configure/SKILL.md +0 -55
  156. package/skills/crm-analytics-tableau-next-app-deploy/SKILL.md +0 -1350
  157. package/skills/crm-analytics-tableau-next-c360-basemodel-validate/SKILL.md +0 -1862
  158. package/skills/crm-analytics-tableau-next-datacloud-validate/SKILL.md +0 -83
  159. package/skills/crm-analytics-tableau-next-provisioning-validate/SKILL.md +0 -81
  160. package/skills/data360-activation-create/SKILL.md +0 -104
  161. package/skills/data360-activation-external-platform-get/SKILL.md +0 -49
  162. package/skills/data360-activation-target-create/SKILL.md +0 -93
  163. package/skills/data360-activation-v2-create/SKILL.md +0 -456
  164. package/skills/data360-audience-dmo-get/SKILL.md +0 -38
  165. package/skills/data360-calculated-affinity-create/SKILL.md +0 -82
  166. package/skills/data360-calculated-insight-create/SKILL.md +0 -148
  167. package/skills/data360-catalog-metadata-create/SKILL.md +0 -183
  168. package/skills/data360-code-extension-create/SKILL.md +0 -115
  169. package/skills/data360-communication-capping-create/SKILL.md +0 -227
  170. package/skills/data360-connection-create/SKILL.md +0 -491
  171. package/skills/data360-content-lens-create/SKILL.md +0 -181
  172. package/skills/data360-data-action-create/SKILL.md +0 -126
  173. package/skills/data360-data-action-target-create/SKILL.md +0 -181
  174. package/skills/data360-data-clean-room-create/SKILL.md +0 -238
  175. package/skills/data360-data-governance-create/SKILL.md +0 -746
  176. package/skills/data360-data-graph-create/SKILL.md +0 -82
  177. package/skills/data360-data-harmonized-model-object-reference-create/SKILL.md +0 -38
  178. package/skills/data360-data-lake-object-create/SKILL.md +0 -207
  179. package/skills/data360-data-model-object-catalog-get/SKILL.md +0 -49
  180. package/skills/data360-data-model-object-create/SKILL.md +0 -128
  181. package/skills/data360-data-model-object-mapping-create/SKILL.md +0 -106
  182. package/skills/data360-data-space-create/SKILL.md +0 -161
  183. package/skills/data360-data-streams-create/SKILL.md +0 -324
  184. package/skills/data360-engagement-signal-get/SKILL.md +0 -38
  185. package/skills/data360-experiment-create/SKILL.md +0 -82
  186. package/skills/data360-goal-based-campaign-create/SKILL.md +0 -192
  187. package/skills/data360-harmonization-process-history-get/SKILL.md +0 -38
  188. package/skills/data360-harmonized-unstructured-dmo-create/SKILL.md +0 -84
  189. package/skills/data360-identity-resolution-create/SKILL.md +0 -115
  190. package/skills/data360-intelligent-document-processing-create/SKILL.md +0 -148
  191. package/skills/data360-knowledge-graph-construction-create/SKILL.md +0 -93
  192. package/skills/data360-knowledge-graph-create/SKILL.md +0 -216
  193. package/skills/data360-knowledge-space-mcp-configure/SKILL.md +0 -475
  194. package/skills/data360-machine-learning-mcp-configure/SKILL.md +0 -697
  195. package/skills/data360-multi-org-mcp-configure/SKILL.md +0 -117
  196. package/skills/data360-secondary-index-mcp-configure/SKILL.md +0 -126
  197. package/skills/data360-segment-mcp-configure/SKILL.md +0 -159
  198. package/skills/data360-semantic-calculated-dimension-mcp-configure/SKILL.md +0 -93
  199. package/skills/data360-semantic-calculated-measurement-mcp-configure/SKILL.md +0 -93
  200. package/skills/data360-semantic-data-object-mcp-configure/SKILL.md +0 -93
  201. package/skills/data360-semantic-dimension-mcp-configure/SKILL.md +0 -38
  202. package/skills/data360-semantic-engine-mcp-configure/SKILL.md +0 -62
  203. package/skills/data360-semantic-measurement-mcp-configure/SKILL.md +0 -38
  204. package/skills/data360-semantic-metric-mcp-configure/SKILL.md +0 -93
  205. package/skills/data360-semantic-model-mcp-configure/SKILL.md +0 -115
  206. package/skills/data360-standard-mapping-mcp-configure/SKILL.md +0 -38
  207. package/skills/data360-tenant-lifecycle-mcp-configure/SKILL.md +0 -73
  208. package/skills/experience-afv-query/SKILL.md +0 -234
  209. package/skills/experience-agentforce-vibes-in-react-configure/SKILL.md +0 -63
  210. package/skills/experience-apex-components-configure/SKILL.md +0 -69
  211. package/skills/experience-apex-pages-configure/SKILL.md +0 -107
  212. package/skills/experience-app-home-configure/SKILL.md +0 -76
  213. package/skills/experience-aura-lightning-out-access-configure/SKILL.md +0 -58
  214. package/skills/experience-briefcase-configure/SKILL.md +0 -287
  215. package/skills/experience-community-flexi-page-list-create/SKILL.md +0 -74
  216. package/skills/experience-community-template-definition-list-query/SKILL.md +0 -48
  217. package/skills/experience-community-theme-definition-list-query/SKILL.md +0 -38
  218. package/skills/experience-content-assets-configure/SKILL.md +0 -86
  219. package/skills/experience-custom-domain-create/SKILL.md +0 -727
  220. package/skills/experience-defer-rendering-workspace-page-setup-configure/SKILL.md +0 -41
  221. package/skills/experience-field-service-app-builder-configure/SKILL.md +0 -187
  222. package/skills/experience-flow-category-configure/SKILL.md +0 -117
  223. package/skills/experience-formula-configure/SKILL.md +0 -358
  224. package/skills/experience-global-actions-configure/SKILL.md +0 -69
  225. package/skills/experience-global-publisher-layouts-configure/SKILL.md +0 -79
  226. package/skills/experience-instrumentation-configure/SKILL.md +0 -64
  227. package/skills/experience-lex-engagement-configure/SKILL.md +0 -50
  228. package/skills/experience-lightning-bolt-open/SKILL.md +0 -12
  229. package/skills/experience-lightning-out-configure/SKILL.md +0 -129
  230. package/skills/experience-lightning-preview-configure/SKILL.md +0 -67
  231. package/skills/experience-lightning-types-query/SKILL.md +0 -98
  232. package/skills/experience-malware-scan-configure/SKILL.md +0 -71
  233. package/skills/experience-my-salesforce-configure/SKILL.md +0 -126
  234. package/skills/experience-navigation-menus-configure/SKILL.md +0 -235
  235. package/skills/experience-notification-types-configure/SKILL.md +0 -206
  236. package/skills/experience-notifications-configure/SKILL.md +0 -75
  237. package/skills/experience-record-discovery-query/SKILL.md +0 -227
  238. package/skills/experience-regenerate-previews-open/SKILL.md +0 -94
  239. package/skills/experience-sales-cloud-mab-configure/SKILL.md +0 -254
  240. package/skills/experience-schema-builder-open/SKILL.md +0 -38
  241. package/skills/experience-simple-record-home-configure/SKILL.md +0 -110
  242. package/skills/experience-static-resources-configure/SKILL.md +0 -74
  243. package/skills/field-service-setup-coordinate/SKILL.md +0 -62
  244. package/skills/field-service-work-plan-configure/SKILL.md +0 -253
  245. package/skills/fsc-actionable-segmentation-settings-configure/SKILL.md +0 -180
  246. package/skills/fsc-digital-origination-bre-decision-matrix-foundation-create/SKILL.md +0 -196
  247. package/skills/fsc-digital-origination-bre-disclosures-consent-configure/SKILL.md +0 -106
  248. package/skills/fsc-digital-origination-bre-document-upload-configure/SKILL.md +0 -96
  249. package/skills/fsc-digital-origination-bre-permissions-assign/SKILL.md +0 -111
  250. package/skills/fsc-digital-origination-bre-setup-coordinate/SKILL.md +0 -250
  251. package/skills/fsc-digital-origination-bre-stp-eligibility-configure/SKILL.md +0 -122
  252. package/skills/fsc-digital-origination-coordinate/SKILL.md +0 -653
  253. package/skills/fsc-digital-origination-demo-run/SKILL.md +0 -225
  254. package/skills/fsc-digital-origination-execution-guardrails-validate/SKILL.md +0 -112
  255. package/skills/fsc-digital-origination-initial-setup-configure/SKILL.md +0 -396
  256. package/skills/fsc-digital-origination-pricing-setup-coordinate/SKILL.md +0 -336
  257. package/skills/fsc-digital-origination-pricing-setup-data-foundation-create/SKILL.md +0 -208
  258. package/skills/fsc-digital-origination-pricing-setup-procedure-create/SKILL.md +0 -375
  259. package/skills/fsc-digital-origination-product-setup-act1-permissions-assign/SKILL.md +0 -83
  260. package/skills/fsc-digital-origination-product-setup-coordinate/SKILL.md +0 -248
  261. package/skills/fsc-digital-origination-sample-data-create/SKILL.md +0 -206
  262. package/skills/fsc-document-checklist-settings-configure/SKILL.md +0 -57
  263. package/skills/fsc-flexible-hierarchy-configure/SKILL.md +0 -148
  264. package/skills/fsc-flexible-hierarchy-foundation-configure/SKILL.md +0 -1430
  265. package/skills/fsc-flexible-hierarchy-graph-config-create/SKILL.md +0 -471
  266. package/skills/fsc-flexible-hierarchy-rule-based-graph-deploy/SKILL.md +0 -429
  267. package/skills/fsc-pricing-product-configurator-configure/SKILL.md +0 -150
  268. package/skills/fsc-pricing-salesforce-omnistudio-switch/SKILL.md +0 -123
  269. package/skills/fsc-product-act2-catalog-categories-create/SKILL.md +0 -82
  270. package/skills/fsc-product-act3-attributes-create/SKILL.md +0 -249
  271. package/skills/fsc-product-act4-classification-assignment-create/SKILL.md +0 -196
  272. package/skills/fsc-product-act5-considerations-get/SKILL.md +0 -44
  273. package/skills/fsc-stage-management-apex-flow-deploy/SKILL.md +0 -384
  274. package/skills/fsc-stage-management-compliant-data-sharing-configure/SKILL.md +0 -144
  275. package/skills/fsc-stage-management-decision-matrices-create/SKILL.md +0 -107
  276. package/skills/fsc-stage-management-definition-assignments-create/SKILL.md +0 -189
  277. package/skills/fsc-stage-management-definition-create/SKILL.md +0 -108
  278. package/skills/fsc-stage-management-permissions-assign/SKILL.md +0 -143
  279. package/skills/fsc-stage-management-transitions-configure/SKILL.md +0 -139
  280. package/skills/health-cloud-appt-booking-config-configure/SKILL.md +0 -135
  281. package/skills/health-cloud-appt-booking-url-config-configure/SKILL.md +0 -134
  282. package/skills/health-cloud-care-provider-affl-role-config-configure/SKILL.md +0 -136
  283. package/skills/health-cloud-care-provider-search-config-configure/SKILL.md +0 -134
  284. package/skills/health-cloud-care-requests-create/SKILL.md +0 -178
  285. package/skills/health-cloud-initial-configure/SKILL.md +0 -511
  286. package/skills/health-cloud-patient-appointment-scheduling-configure/SKILL.md +0 -1374
  287. package/skills/health-cloud-provider-search-settings-configure/SKILL.md +0 -924
  288. package/skills/health-cloud-referral-management-coordinate/SKILL.md +0 -513
  289. package/skills/health-cloud-timeline-configure/SKILL.md +0 -622
  290. package/skills/health-cloud-virtual-visit-config-configure/SKILL.md +0 -135
  291. package/skills/industries-account-score-settings-query/SKILL.md +0 -78
  292. package/skills/industries-actionable-list-data-sources-dmo-configure/SKILL.md +0 -177
  293. package/skills/industries-ad-product-availability-search/SKILL.md +0 -399
  294. package/skills/industries-advanced-account-forecast-settings-configure/SKILL.md +0 -628
  295. package/skills/industries-advanced-therapy-management-settings-configure/SKILL.md +0 -73
  296. package/skills/industries-atm-settings-starter-configure/SKILL.md +0 -76
  297. package/skills/industries-batch-document-ai-configure/SKILL.md +0 -196
  298. package/skills/industries-behavioral-health-app-settings-configure/SKILL.md +0 -71
  299. package/skills/industries-branch-management-settings-configure/SKILL.md +0 -89
  300. package/skills/industries-bre-decision-table-access-configure/SKILL.md +0 -367
  301. package/skills/industries-brokerage-settings-configure/SKILL.md +0 -41
  302. package/skills/industries-calendar-sync-settings-configure/SKILL.md +0 -89
  303. package/skills/industries-care-request-settings-configure/SKILL.md +0 -218
  304. package/skills/industries-case-management-intelligence-settings-configure/SKILL.md +0 -54
  305. package/skills/industries-catalog-process-attributes-products-configure/SKILL.md +0 -380
  306. package/skills/industries-catalog-process-fulfillment-configure/SKILL.md +0 -216
  307. package/skills/industries-catalog-process-intake-configure/SKILL.md +0 -219
  308. package/skills/industries-catalog-process-knowledge-configure/SKILL.md +0 -153
  309. package/skills/industries-catalog-process-preprocessor-configure/SKILL.md +0 -168
  310. package/skills/industries-cds-general-settings-configure/SKILL.md +0 -69
  311. package/skills/industries-claim-financial-settings-configure/SKILL.md +0 -169
  312. package/skills/industries-clinical-data-model-settings-configure/SKILL.md +0 -136
  313. package/skills/industries-clinical-data-model-settings-starter-configure/SKILL.md +0 -105
  314. package/skills/industries-collection-plan-settings-configure/SKILL.md +0 -132
  315. package/skills/industries-comms-service-console-settings-configure/SKILL.md +0 -159
  316. package/skills/industries-compliance-configure/SKILL.md +0 -102
  317. package/skills/industries-compliance-document-extraction-setup-configure/SKILL.md +0 -76
  318. package/skills/industries-contact-center-app-layout-configure/SKILL.md +0 -88
  319. package/skills/industries-contact-center-components-configure/SKILL.md +0 -96
  320. package/skills/industries-contact-center-path-knowledge-configure/SKILL.md +0 -95
  321. package/skills/industries-contact-center-user-access-assign/SKILL.md +0 -96
  322. package/skills/industries-course-waitlist-config-configure/SKILL.md +0 -162
  323. package/skills/industries-crisis-center-settings-configure/SKILL.md +0 -84
  324. package/skills/industries-custom-object-settings-configure/SKILL.md +0 -94
  325. package/skills/industries-data-cloud-integration-configure/SKILL.md +0 -88
  326. package/skills/industries-data-space-feature-mappings-configure/SKILL.md +0 -245
  327. package/skills/industries-decision-matrix-builder-configure/SKILL.md +0 -78
  328. package/skills/industries-decision-table-hbase-configure/SKILL.md +0 -87
  329. package/skills/industries-decision-table-version-configure/SKILL.md +0 -74
  330. package/skills/industries-decision-tables-builder-configure/SKILL.md +0 -253
  331. package/skills/industries-decision-tables-configure/SKILL.md +0 -439
  332. package/skills/industries-energy-utilities-configure/SKILL.md +0 -251
  333. package/skills/industries-eu-cloud-multisite-configure/SKILL.md +0 -1008
  334. package/skills/industries-eu-new-connections-configure/SKILL.md +0 -30
  335. package/skills/industries-explainability-msg-template-configure/SKILL.md +0 -135
  336. package/skills/industries-expression-set-message-token-configure/SKILL.md +0 -135
  337. package/skills/industries-field-service-settings-configure/SKILL.md +0 -82
  338. package/skills/industries-form-framework-settings-configure/SKILL.md +0 -30
  339. package/skills/industries-fsc-ai-settings-configure/SKILL.md +0 -57
  340. package/skills/industries-fsc-association-engine-settings-configure/SKILL.md +0 -172
  341. package/skills/industries-fsc-b2b-settings-configure/SKILL.md +0 -61
  342. package/skills/industries-fsc-insurance-settings-configure/SKILL.md +0 -58
  343. package/skills/industries-fsc-visa-fulfillment-setup-configure/SKILL.md +0 -103
  344. package/skills/industries-fsc-wealth-agent-settings-configure/SKILL.md +0 -117
  345. package/skills/industries-fsc-wealth-settings-configure/SKILL.md +0 -99
  346. package/skills/industries-fundraising-gift-entry-settings-configure/SKILL.md +0 -120
  347. package/skills/industries-fundraising-rfm-configure/SKILL.md +0 -128
  348. package/skills/industries-fundraising-settings-configure/SKILL.md +0 -145
  349. package/skills/industries-fundraising-source-code-gen-configure/SKILL.md +0 -299
  350. package/skills/industries-google-maps-api-key-settings-configure/SKILL.md +0 -87
  351. package/skills/industries-grantmaking-intelligence-settings-open/SKILL.md +0 -58
  352. package/skills/industries-hc-score-category-settings-configure/SKILL.md +0 -167
  353. package/skills/industries-health-engagement-settings-configure/SKILL.md +0 -218
  354. package/skills/industries-home-health-agentforce-setup-configure/SKILL.md +0 -131
  355. package/skills/industries-home-health-bundling-policy-create/SKILL.md +0 -50
  356. package/skills/industries-home-health-entity-labels-configure/SKILL.md +0 -29
  357. package/skills/industries-home-health-fsl-package-deploy/SKILL.md +0 -71
  358. package/skills/industries-home-health-fsl-settings-validate/SKILL.md +0 -27
  359. package/skills/industries-home-health-guided-setup-care-and-skill-get/SKILL.md +0 -80
  360. package/skills/industries-home-health-guided-setup-configure/SKILL.md +0 -836
  361. package/skills/industries-home-health-guided-setup-enable-org-fsl-get/SKILL.md +0 -55
  362. package/skills/industries-home-health-guided-setup-get-org-ready-get/SKILL.md +0 -61
  363. package/skills/industries-home-health-licenses-assign/SKILL.md +0 -27
  364. package/skills/industries-home-health-operating-hours-create/SKILL.md +0 -40
  365. package/skills/industries-home-health-scheduling-policy-create/SKILL.md +0 -41
  366. package/skills/industries-home-health-service-objective-create/SKILL.md +0 -22
  367. package/skills/industries-home-health-skills-create/SKILL.md +0 -31
  368. package/skills/industries-home-health-users-create/SKILL.md +0 -29
  369. package/skills/industries-icm-act3-toggles-configure/SKILL.md +0 -198
  370. package/skills/industries-icm-act5-genai-suggested-assessments-configure/SKILL.md +0 -361
  371. package/skills/industries-icm-act6-mcg-integration-configure/SKILL.md +0 -550
  372. package/skills/industries-integrated-care-management-configure/SKILL.md +0 -168
  373. package/skills/industries-object-enablement-configure/SKILL.md +0 -86
  374. package/skills/industries-tpm-system-processing-service-configure/SKILL.md +0 -64
  375. package/skills/integration-apex-settings-configure/SKILL.md +0 -61
  376. package/skills/marketing-e360-email-archiving-configure/SKILL.md +0 -73
  377. package/skills/platform-custom-permissions-configure/SKILL.md +0 -687
  378. package/skills/platform-label-workbench-import-create/SKILL.md +0 -67
  379. package/skills/platform-privacy-agent-settings-configure/SKILL.md +0 -752
@@ -1,614 +0,0 @@
1
- ---
2
- name: commerce-merchant-catalog-configure
3
- description: "Use this skill when users want to merchant admin quick-adds a product (pricing/category/entitlement/image atomic), sets up variants (parent + Color/Size/Material children), bulk-imports/exports via CSV, or manages categories (add root/leaf/mid-branch, rename, delete). Trigger when users mention merchant, catalog, management."
4
- metadata:
5
- version: "1.0"
6
- accessCheck: "(Commerce.b2bProductVariantsEnabled) || (Commerce.externalProductMediaEnabled) || (Commerce.orgHasCommerceB2BOrB2CEnabled) || (Commerce.webStoreExists) || (Files.csvReadable) || (User.hasApiEnabledPermission) || (User.hasCommerceAdminPermset)"
7
- ---
8
-
9
- # Managing Merchant Catalog Management
10
-
11
- ## When to Use This Skill
12
-
13
- Merchant admin quick-adds a product (pricing/category/entitlement/image atomic), sets up variants (parent + Color/Size/Material children), bulk-imports/exports via CSV, or manages categories (add root/leaf/mid-branch, rename, delete). Caps — 5 attrs/set, 200 variants/parent, 100 sets. Import async — fire + auto-poll 15/30/60/120/180s.
14
-
15
- ## Workflow
16
-
17
- 1. NO PATHS. ONE clarifying q: singular→quick-add; CSV→bulk-import; "variants/sizes/colors"→variants. Never quote SOR/skill/step names.
18
-
19
- 2. QUICK-ADD IS ONE ATOMIC CALL. name+SKU+price+category+optional image URL → ONE creation. URL present → SILENT register-product-image-url first, mediaId → productMedia[]. NEVER add-product-media as follow-up (EXISTING products only).
20
-
21
- 3. URL→mediaId SILENT + AUTOMATIC. Branch A (ExternalMedia,2em) vs B (CMS,20Y) chosen ONCE/session from ExternalProductMediaEnabled. MUTUALLY EXCLUSIVE — no A→B fallback on 404; never expose which ran.
22
-
23
- 4. VOCAB WALL. Never surface:
24
- - Wire: /services/data/…, connect/…, commerce/management/…, /headless/invoke, composite-products, sObject, dispatcher, controller, Aura, className, v66/v67/v69.
25
- - Records: Product2, PricebookEntry, Pricebook2, ProductCategory(Product), ProductCatalog, CommerceEntitlementProduct/Policy, BuyerGroup, WebStore, ProductMedia, ProductAttribute(Set), ExternalMedia, ManagedContent, ContentVersion/Document, ElectronicMedia/Group, FieldPermissions.
26
- - Ids: any 15/18-char prefix (01t/0ZG/0ZE/0ZC/01s/0YT/0DB/20Y/2em/068/069/0iY/0iU/0iX/05f/2mg/2pm).
27
- - Feature-gate/SOR/step/skill/phase names.
28
- Merchant vocab: WebStore→"your store"; ProductCategory→"category"; Product2→"product"; unitPrice→"sell price"; listPrice→"was-price"; *Media→"product image"; ProductAttributeSet→"variant options"; use product name ("family"/"parent" only if merchant leads).
29
-
30
- 5. PLAIN CONFIRMS + RECAPS. Pre-fire: "I'll add '{Name}' to your '{storeName}' store at ${price} (was ${listPrice}), in '{categoryName}', with the image. Proceed?" Post: "'{Name}' is live in your '{storeName}' store — ${price} (was ${listPrice}), in '{categoryName}', with the image." BANNED: JSON, ids, endpoint/record names, per-step narration, bulleted recaps, "Product Id:", tables.
31
-
32
- 6. ERROR TRANSLATION. On 422 use quick-add-product field→noun map; ONE plain sentence + action. No errorCode/fieldName/endpoint/record leak.
33
-
34
- 7. STORAGE-BRANCH INTERNAL. "How are images stored?" → "Stored with the product — update/replace anytime from the product page." Never surface ExternalMedia/ManagedContent/preference.
35
-
36
- 8. AMBIGUITY. ONE clarifying q, never a menu.
37
-
38
- 9. QUICK-ADD CHECKLIST. Solicit EVERY input before firing. Silent omission = bug.
39
- REQUIRED: Store • Name • SKU • Sell price+currency • Category.
40
- OPTIONAL (one grouped prompt): Was-price • Image URL • Description.
41
- Confirmation MUST name the category. Post-success, offer skipped items in ONE plain sentence.
42
-
43
- Category resolution (quick-add + variants):
44
- a. Merchant NAMED → resolve silently against store's catalog.
45
- b. Else SOQL LEAF only. Leaf = no children (`count() FROM ProductCategory WHERE ParentCategoryId='<cand>'`=0). Childless root IS a leaf. NEVER auto-assign to a container.
46
- c. 1 leaf → use silently.
47
- d. 2+ leaves → "Which section of your store should {productName} show up in? Options: {name1}, {name2}."
48
- e. 0 leaves → offer to add one: "the store doesn't have a category set up yet — want me to add one first?" If merchant says yes → delegate to create-category (rule 13). Do NOT create silently on the fly.
49
- Word mismatch: "'{word}' isn't a category in your store yet — want to create it, or use '{default}' for now?" If create → delegate to create-category. Explicit list: render hierarchically.
50
-
51
- 10. ADD-LATER ALWAYS. Image/Price/Category/Description all patchable in one plain sentence.
52
-
53
- 11. VARIANTS: SILENT SET REUSE + EXTEND. See list-product-attribute-sets for EXACT/SUPERSET/PARTIAL/NONE + extend-vs-fork. Surface: "Tshirt is live with Color × Size × Material variants."
54
-
55
- 11a. LIMIT GUARDS. MaxAttrSets=100, MaxItemsPerAttrSet=5, MaxVariationParentProducts=500000, MaxVariationsPerParent=200. Never narrate; surface only on block.
56
-
57
- 11b. FLS ON NEW CUSTOM FIELDS. See create-product-attribute-custom-field — admin silent FLS POST+poll vs non-admin STOP + admin-gap sentence. Never surface FieldPermissions/PermissionSet/describe/poll.
58
-
59
- 11c. MAKE-PURCHASABLE + POST-RECAP SILENCE. assign-entitlement-to-variant-family OWNS the ONE recap sentence + HARD ANTI-PATTERNS + POST-RECAP SILENCE + degraded variant. Everything before it is silent progress.
60
-
61
- 12. BULK-IMPORT CONTRACT. EVERYTHING between file-question (rule 12) and terminal recap (rule 12c) is SILENT except the ONE mapping-table gate (rule 12b). NO per-step narration ("uploading now", "found the catalog", "polling"), NO id/path readouts, NO framework/tool leaks ("task tool", "the SOR says"), NO "I'll do X then Y". If merchant DIDN'T give a file path/attachment, ONE plain q: "Where's the file?" (drag/drop OR path). If merchant already provided it, skip the q — proceed straight to silent upload → derive catalog → list pricebooks/currencies/locales → auto-map (rule 12a) → STOP for mapping gate (rule 12b) → silent import fire + auto-poll ladder → ONE terminal recap sentence (rule 12c → rule 12d).
62
-
63
- 12a. AUTO-MAP HEURISTICS (get-import-mapper-config). Case-insensitive exact → fuzzy on label. Price cols /price|cost|amount|MSRP/i → pricebooks[] rows; parse currency substring, match list-store-pricebooks. Slug cols /slug|permalink|seo-url/i → slugs[] with list-store-locales default. Category/entitlement cols → arrays. Media cols grouped by trailing digit. Variation cols → variation* sections. Zero price cols → skip pricebooks silently. Zero slug cols → skip slugs silently.
64
-
65
- 12b. HARD GATE — MAPPING CONFIRMATION. After auto-map, agent MUST print the mapping table AND stop. Do NOT fire import-products-csv until merchant explicitly approves ("looks good", "go ahead", "yes", "proceed", equivalent). Print-and-fire in the same turn is a BUG. Merchant vocab only: "SKU → Product SKU"; "Price (sale) USD → Pricebook 'B2B USD' (USD) [N others]"; "Slug en_US → Slug (en_US)"; "Media URL 1 / Title 1 → Product image 1". Merchant edits by naming column. Re-render only affected rows on edit. NEVER print section names (product/pricebooks/slugs/media_*), SF field names (StockKeepingUnit, IsActive, ContentVersion), or ids (068/01s/1Ce/0Zu/0ZG/0ZS/704/750). Close the table with exactly: "Okay to import, or want to change anything?"
66
-
67
- 12c. TERMINAL RECAP — ONE SENTENCE. Success template (exact): "Imported {N} products into your '{storeName}' store{, {M} skipped — I can pull the details}." Failure: "Import didn't complete — {reason}. Want me to retry with the same file?" Errors fetched ON DEMAND (importErrorsResource), never eagerly. POST-RECAP SILENCE — no follow-ups.
68
- GOOD: "Imported 3 products into your 'Acme B2B Store' store, no issues."
69
- BAD (all rule 12d violations): bullet-list breakdowns, ContentVersion/Job/Product ids, "product page: /lightning/r/…", "1 product updated (SKU 6010007 — Alpine Supply CO2 Cartridge)", quoted CSV headers in the recap, "2 pricebook entries updated", "if you want Insert next time change X", ANY sentence after the recap sentence.
70
-
71
- 12d. RECAP BAN LIST. In the terminal recap sentence, NEVER include: any 15/18-char id (068/01s/1Ce/0Zu/0ZG/0ZS/704/750/01t/2em/20Y/069), any endpoint/URL/path (/lightning/…, /services/…, connect/…, commerce/…), any framework/tool name ("task tool", "the SOR", "Codey", "MCP"), any API field name ("importOperationType", "Upsert", "ContentVersion", "PricebookEntry"), any quoted existing record ("SKU 6010007 — Alpine Supply CO2 Cartridge"), any bullet list / row count / follow-up tip / "next time try X" / "product page:" link. Recap is ONE sentence in merchant vocab. Anything else is a bug.
72
-
73
- 13. CATEGORY MANAGEMENT (add/rename/delete). Merchant vocab only — "category", "section", "group of products". Never surface ProductCategory / CatalogId / ParentCategoryId / 0ZG / 0ZS.
74
-
75
- Store's catalog is derived silently from the store (derive-catalog-from-webstore). Merchant never picks/names the catalog.
76
-
77
- 13a. ADD (create-category). Any level supported — top-level (root) OR nested (under an existing category). Solicit BOTH inputs before firing:
78
- - Name (required).
79
- - Parent — ONE plain question: "Should '{name}' be a top-level category, or nested under an existing one? If nested, which one?"
80
- • "top-level" / "root" / no parent → ParentCategoryId=null.
81
- • Nested → resolve merchant's parent word against store's catalog SILENTLY. Multiple matches → "There's more than one '{word}' — which one? {name1} (under {parent1}), {name2} (top-level)." Zero matches → "'{word}' isn't a category yet — want that as a top-level category, or under something else?" One match → use silently.
82
- Confirm ONCE: "I'll add '{name}' {as a top-level category | under '{parentName}'}. Proceed?" Post: "'{name}' is live {as a top-level category | under '{parentName}'} — you can now put products in it."
83
-
84
- 13b. RENAME (update-category). Rename only. Rule-0 confirmation gate with current+new name: "I'll rename '{currentName}' to '{newName}'. Proceed?" Post: "Renamed to '{newName}'." Never surface Name/PATCH/sObject.
85
-
86
- 13c. DELETE (delete-category). DESTRUCTIVE-OP HARD GATE — server does NOT block. Deleting a category with products silently drops those products' category assignments; buyers stop seeing them under that section. Pre-check product count SILENTLY (list-categories query returns NumberOfProducts). Gate templates:
87
- - 0 products AND no child categories → single confirm: "I'll delete the '{name}' category. Proceed?" Post: "Deleted '{name}'."
88
- - N products (>0) → "Heads up — '{name}' has {N} product{s} in it. If I delete it, {those products stay live but lose their spot in this section | that product stays live but loses its spot in this section}. Want me to move {them|it} to another category first, or go ahead and delete?" If merchant asks to move → delegate to assign-product-to-category. If merchant confirms delete → fire.
89
- - Has child categories → BLOCK. "'{name}' has other categories nested under it ({childCount}). Delete or move those first, then I can delete '{name}'." NEVER auto-cascade — the platform will, but the merchant hasn't consented to losing the whole subtree.
90
- Never surface: 0ZG ids, ProductCategoryProduct, cascade, DELETE verb, sObject.
91
-
92
- 13d. LIST-FOR-BROWSING (list-categories). Merchant asks "what categories do I have?" / "show my sections" → single hierarchical readout with product counts. Format: parent categories at top-level with "({N} products)" suffix, children indented one level with "({M} products)". Empty catalog → "This store doesn't have any categories yet — want to add one?" Never surface ids/CatalogId/NumberOfProducts field name.
93
-
94
- ## Critical Constraints
95
-
96
- **Preconditions:**
97
-
98
- - CommerceAdmin permset. (check: `User.hasCommerceAdminPermset`)
99
- - B2B Commerce enabled. (check: `Commerce B2B or B2C enabled`)
100
- - Caller knows a B2B WebStore id (0ZE). (check: `Commerce.webStoreExists`)
101
- - Bulk-import only — CSV available (drag/drop OR path); agent uploads via upload-csv-to-files. (check: `Files.csvReadable`)
102
- - Variants only — B2BProductVariants ON + Product2 Sharing=Public. (check: `Commerce.b2bProductVariantsEnabled`)
103
- - External-media only — ExternalProductMediaEnabled ON. (check: `Commerce.externalProductMediaEnabled`)
104
- - API Enabled permission. (check: `API Enabled permission`)
105
-
106
- **Operational rules:**
107
-
108
- - INTERNAL — never quote. Capability blurb only.
109
-
110
- **Destructive operations — require explicit user confirmation:**
111
-
112
- - **`delete-category`** — Delete a category from the store's catalog. Destructive-op hard gate — server does NOT block on assigned products; cascade drops ProductCategoryProduct rows silently.
113
- - Rollback: {'operation': 'none_available', 'note': 'DELETE on ProductCategory is IRREVERSIBLE. ProductCategoryProduct junction rows are cascade-dropped by the platform, not recoverable via sObject POST (would need re-insert per (Product,Category) pair). Merchant re-creates via create-category + re-assigns via assign-product-to-category.'}
114
-
115
- ## Verification Checklist
116
-
117
- After every write operation, confirm the effect by re-reading state:
118
-
119
- - After `export-products-csv`: call `poll-export-job` (`GET /commerce/management/export/product/jobs`)
120
-
121
- ## Operations Reference
122
-
123
- Operations grouped by purpose. Use these as the building blocks for the workflows above.
124
-
125
- ### Summary
126
-
127
- | Operation | Purpose | Status | Call | Depends on |
128
- |-----------|---------|--------|------|------------|
129
- | `upload-csv-to-files` | write | implemented | `POST /sobjects/ContentVersion` | — |
130
- | `derive-catalog-from-webstore` | read | implemented | `GET /query` | — |
131
- | `list-store-pricebooks` | read | implemented | `GET /query` | — |
132
- | `list-org-currencies` | read | implemented | `GET /query` | — |
133
- | `list-store-locales` | read | implemented | `GET /query` | — |
134
- | `get-import-mapper-config` | read | implemented | `GET /commerce/management/custom/import/mapper-config/{importObjectType}` | — |
135
- | `import-products-csv` | write | implemented | `POST /commerce/management/custom/import/product/jobs` | `upload-csv-to-files`, `derive-catalog-from-webstore`, `get-import-mapper-config` |
136
- | `poll-import-job` | read | implemented | `GET /commerce/management/custom/import/product/jobs/{jobId}` | `import-products-csv` |
137
- | `register-product-image-url` | write | implemented | `POST /sobjects/ExternalMedia` | — |
138
- | `quick-add-product` | write | implemented | `POST /commerce/management/webstore/{webstoreId}/composite-products` | — |
139
- | `assign-product-to-category` | write | implemented | `POST /sobjects/ProductCategoryProduct` | — |
140
- | `list-categories` | read | implemented | `GET /query` | — |
141
- | `create-category` | write | implemented | `POST /sobjects/ProductCategory` | `derive-catalog-from-webstore`, `list-categories` |
142
- | `update-category` | write | implemented | `PATCH /sobjects/ProductCategory/{id}` | `list-categories` |
143
- | `delete-category` | delete | implemented | `DELETE /sobjects/ProductCategory/{id}` | `list-categories` |
144
- | `list-product-attribute-sets` | read | implemented | `GET /query` | — |
145
- | `create-product-attribute-custom-field` | write | implemented | `POST /tooling/sobjects/CustomField` | — |
146
- | `create-product-attribute-set` | write | implemented | `POST /composite` | `create-product-attribute-custom-field` |
147
- | `add-attribute-to-existing-set` | write | implemented | `POST /sobjects/ProductAttributeSetItem` | — |
148
- | `backfill-variant-attribute-value` | write | implemented | `PATCH /sobjects/ProductAttribute/{id} (after GET /query for target ids)` | — |
149
- | `create-master-product` | write | implemented | `POST /composite` | `create-product-attribute-set` |
150
- | `create-variant-product` | write | implemented | `POST /composite` | `create-master-product` |
151
- | `set-variant-family-pricing` | write | implemented | `POST /composite` | `create-master-product`, `create-variant-product` |
152
- | `assign-entitlement-to-variant-family` | write | implemented | `POST /composite` | `create-master-product`, `create-variant-product` |
153
- | `add-product-media` | write | implemented | `POST /sobjects/ProductMedia` | — |
154
- | `export-products-csv` | write | implemented | `POST /commerce/management/export/product/jobs` | `derive-catalog-from-webstore` |
155
- | `poll-export-job` | verify | implemented | `GET /commerce/management/export/product/jobs` | `export-products-csv` |
156
-
157
- ### Dependency graph
158
-
159
- ```mermaid
160
- graph TD
161
- upload_csv_to_files["upload-csv-to-files (write)"]
162
- derive_catalog_from_webstore["derive-catalog-from-webstore (read)"]
163
- list_store_pricebooks["list-store-pricebooks (read)"]
164
- list_org_currencies["list-org-currencies (read)"]
165
- list_store_locales["list-store-locales (read)"]
166
- get_import_mapper_config["get-import-mapper-config (read)"]
167
- import_products_csv["import-products-csv (write)"]
168
- poll_import_job["poll-import-job (read)"]
169
- register_product_image_url["register-product-image-url (write)"]
170
- quick_add_product["quick-add-product (write)"]
171
- assign_product_to_category["assign-product-to-category (write)"]
172
- list_categories["list-categories (read)"]
173
- create_category["create-category (write)"]
174
- update_category["update-category (write)"]
175
- delete_category["delete-category (delete)"]
176
- list_product_attribute_sets["list-product-attribute-sets (read)"]
177
- create_product_attribute_custom_field["create-product-attribute-custom-field (write)"]
178
- create_product_attribute_set["create-product-attribute-set (write)"]
179
- add_attribute_to_existing_set["add-attribute-to-existing-set (write)"]
180
- backfill_variant_attribute_value["backfill-variant-attribute-value (write)"]
181
- create_master_product["create-master-product (write)"]
182
- create_variant_product["create-variant-product (write)"]
183
- set_variant_family_pricing["set-variant-family-pricing (write)"]
184
- assign_entitlement_to_variant_family["assign-entitlement-to-variant-family (write)"]
185
- add_product_media["add-product-media (write)"]
186
- export_products_csv["export-products-csv (write)"]
187
- poll_export_job["poll-export-job (verify)"]
188
- upload_csv_to_files --> import_products_csv
189
- derive_catalog_from_webstore --> import_products_csv
190
- get_import_mapper_config --> import_products_csv
191
- import_products_csv --> poll_import_job
192
- derive_catalog_from_webstore --> create_category
193
- list_categories --> create_category
194
- list_categories --> update_category
195
- list_categories --> delete_category
196
- create_product_attribute_custom_field --> create_product_attribute_set
197
- create_product_attribute_set --> create_master_product
198
- create_master_product --> create_variant_product
199
- create_master_product --> set_variant_family_pricing
200
- create_variant_product --> set_variant_family_pricing
201
- create_master_product --> assign_entitlement_to_variant_family
202
- create_variant_product --> assign_entitlement_to_variant_family
203
- derive_catalog_from_webstore --> export_products_csv
204
- export_products_csv --> poll_export_job
205
- ```
206
-
207
- ### Read operations
208
-
209
- #### `derive-catalog-from-webstore`
210
-
211
- Bulk-import prep — resolves the store's ProductCatalogId silently.
212
-
213
- **Call:** `GET /query` — status: `implemented`
214
-
215
- **Inputs:**
216
-
217
- - `webstoreId` *(`String`)* — 0ZE.
218
-
219
- **Rollback:** {'operation': 'none_needed', 'note': 'Read-only.'}
220
-
221
- #### `list-store-pricebooks`
222
-
223
- Bulk-import prep — active pricebooks attached to the store (mapping-table picker).
224
-
225
- **Call:** `GET /query` — status: `implemented`
226
-
227
- **Inputs:**
228
-
229
- - `webstoreId` *(`String`)* — 0ZE.
230
-
231
- **Rollback:** {'operation': 'none_needed', 'note': 'Read-only.'}
232
-
233
- #### `list-org-currencies`
234
-
235
- Bulk-import prep — active currencies (multi-currency picker).
236
-
237
- **Call:** `GET /query` — status: `implemented`
238
-
239
- **Rollback:** {'operation': 'none_needed', 'note': 'Read-only.'}
240
-
241
- #### `list-store-locales`
242
-
243
- Bulk-import prep — supported languages for slug mapping.
244
-
245
- **Call:** `GET /query` — status: `implemented`
246
-
247
- **Inputs:**
248
-
249
- - `webstoreId` *(`String`)* — 0ZE.
250
-
251
- **Rollback:** {'operation': 'none_needed', 'note': 'Read-only.'}
252
-
253
- #### `get-import-mapper-config`
254
-
255
- Bulk-import prep — fetches column catalog for CSV mapping.
256
-
257
- **Call:** `GET /commerce/management/custom/import/mapper-config/{importObjectType}` — status: `implemented`
258
-
259
- **Inputs:**
260
-
261
- - `importObjectType` *(`String`)* — Always "Product". Category/Pricing → UNSUPPORTED_MODE.
262
- - `storeId` *(`String`)* — 0ZE. Omit → org-wide defaults (wrong store risk).
263
-
264
- **Rollback:** {'operation': 'none_needed', 'note': 'N/A.'}
265
-
266
- #### `poll-import-job`
267
-
268
- Import job status. Poll ladder 15/30/60/120/180s until endTime.
269
-
270
- **Call:** `GET /commerce/management/custom/import/product/jobs/{jobId}` — status: `implemented`
271
-
272
- **Inputs:**
273
-
274
- - `jobId` *(`String`)* — Job id. Lost → GET /last-job.
275
-
276
- **Depends on:** `import-products-csv`
277
-
278
- **Rollback:** {'operation': 'none_needed', 'note': 'Read-only op. No rollback.'}
279
-
280
- #### `list-categories`
281
-
282
- Store's category tree with product counts. Powers rule 13a parent resolution, rule 13c delete gate, rule 13d readout, and rule 11c leaf resolution.
283
-
284
- **Call:** `GET /query` — status: `implemented`
285
-
286
- **Inputs:**
287
-
288
- - `webstoreId` *(`String`)* — 0ZE. Drives the catalog subquery — never asked directly.
289
-
290
- **Rollback:** {'operation': 'none_needed', 'note': 'Read-only.'}
291
-
292
- #### `list-product-attribute-sets`
293
-
294
- Variants discovery (silent). Lists sets+items ONCE to drive rule-11.
295
-
296
- **Call:** `GET /query` — status: `implemented`
297
-
298
- ### Write operations
299
-
300
- #### `upload-csv-to-files`
301
-
302
- Bulk-import prep — uploads merchant CSV to Files, returns 068 ContentVersionId.
303
-
304
- **Call:** `POST /sobjects/ContentVersion` — status: `implemented`
305
-
306
- **Inputs:**
307
-
308
- - `fileName` *(`String`)* — CSV file name (Title + PathOnClient).
309
- - `fileContentBase64` *(`String`)* — base64-encoded CSV bytes → VersionData.
310
-
311
- **Rollback:** {'operation': 'sobject_delete', 'note': 'DELETE ContentDocument (parent) if job never fires. Terminal job → keep for audit.'}
312
-
313
- #### `import-products-csv`
314
-
315
- Async (10s-5min). Kicks import; poll-import-job auto-follows.
316
-
317
- **Call:** `POST /commerce/management/custom/import/product/jobs` — status: `implemented`
318
-
319
- **Inputs:**
320
-
321
- - `importContext` *(`String (enum)`)* — "Api" for direct REST callers.
322
- - `importOperationType` *(`String (enum)`)* — Insert/Update/Upsert (Upsert recommended).
323
- - `columnMappings` *(`Object`)* — Nested per-section object. product/variationAttributeSet/variationParentInfo → OBJECT {sfField:csvHeader}. categories/entitlementPolicies/media_*/variationAttributes → ARRAY of per-row objects (cap maxAllowed). pricebooks → ARRAY [{Price:csvHeader,PricebookId:01s,CurrencyCode:ISO}]. slugs → ARRAY [{Slug:csvHeader,LanguageCode:code}]. product MUST include Name + one of Id/ExternalId/StockKeepingUnit.
324
- - `webstoreId` *(`String`)* — 0ZE → globalImportParameters.webstoreId (NOT storeId).
325
- - `productCatalogId` *(`String`)* — 0ZS — derived from WebStoreCatalog, not asked.
326
- - `entitlementPolicyId` *(`String`)* — 1Ce — from mapper `defaults.entitlementPolicy.id`.
327
- - `cmsWorkspaceId` *(`String`)* — 0Zu — from mapper `defaults.CMSWorkspace.id`.
328
- - `contentVersionId` *(`String`)* — 068 ContentVersion id (from upload-csv-to-files).
329
- - **Source:** output of `upload-csv-to-files`
330
- - `delimiter` *(`String`)* — CSV delimiter (default comma).
331
-
332
- **Depends on:** `upload-csv-to-files`, `derive-catalog-from-webstore`, `get-import-mapper-config`
333
-
334
- **Rollback:** {'operation': 'cancel-import-job', 'note': 'PATCH `{"status":"Cancelled"}` while running. Terminal = no-op. Created rows must be deleted manually.'}
335
-
336
- #### `register-product-image-url`
337
-
338
- INTERNAL. URL→mediaId for composite-products. A (v69 ExternalMedia→2em) or B (v67 cms/contents→20Y). Both feed same slot.
339
-
340
- **Call:** `POST /sobjects/ExternalMedia` — status: `implemented`
341
-
342
- **Inputs:**
343
-
344
- - `imageUrl` *(`String`)* — https URL ≤1000 chars.
345
- - `productName` *(`String`)* — Title + AlternateText.
346
- - `contentSpaceId` *(`String`)* — Branch B only. 0Zu (once/session).
347
- - `apiName` *(`String`)* — Branch B only.
348
-
349
- **Rollback:** {'operation': 'sobject_delete', 'note': 'A → DELETE ExternalMedia/{2em}. B → DELETE cms/contents/{20Y}.'}
350
-
351
- #### `quick-add-product`
352
-
353
- Atomic — Product2 + Standard PBE + Strikethrough PBE + PCP/category + ProductMedia in ONE POST. 201/productId or 422/errorDetails.
354
-
355
- **Call:** `POST /commerce/management/webstore/{webstoreId}/composite-products` — status: `implemented`
356
-
357
- **Inputs:**
358
-
359
- - `webstoreId` *(`String`)* — 0ZE WebStore id (path).
360
- - `productFields` *(`Object`)* — Nested object — Name, ProductCode (SKU), StockKeepingUnit=SKU, Family, IsActive=true.
361
- - `categoryIds` *(`Array<String>`)* — 0ZG ids. First=primary. Rule-11c.
362
- - `productPricing` *(`Object`)* — Nested object {currencyISOCode,unitPrice,listPrice}. unitPrice→Standard PBE; listPrice→Strikethrough PBE.
363
- - `productMedia` *(`Array<Object>`)* — Optional array of {developerName,mediaId}. developerName MUST be "productListImage" or "productDetailImage" (ElectronicMediaGroup.DeveloperName — NOT an arbitrary label). Emit BOTH entries with same mediaId. 2em/20Y interchangeable.
364
- - `attributeSetInfo` *(`Object`)* — Variation flow only.
365
-
366
- **Rollback:** {'operation': 'sobject_delete', 'note': 'DELETE Product2/{productId} cascades to PBE/PCP/ProductMedia. Irreversible.'}
367
-
368
- #### `assign-product-to-category`
369
-
370
- POST ProductCategoryProduct (IsPrimaryCategory=FALSE for quick-add). Reassign = DELETE prior PCP.
371
-
372
- **Call:** `POST /sobjects/ProductCategoryProduct` — status: `implemented`
373
-
374
- **Inputs:**
375
-
376
- - `productId` *(`String`)* — 01t. Variants → MASTER only.
377
- - `categoryId` *(`String`)* — 0ZG. Must be in store's catalog; never a root container.
378
- - `isPrimaryCategory` *(`Boolean`)* — Default true.
379
-
380
- **Rollback:** {'operation': 'sobject_delete', 'note': 'DELETE ProductCategoryProduct/{pcp_id}. 404 on retry OK.'}
381
-
382
- #### `create-category`
383
-
384
- Add a category to the store's catalog. Supports any hierarchy level — top-level (ParentCategoryId=null), leaf (ParentCategoryId=leaf-parent), or mid-branch (ParentCategoryId=intermediate).
385
-
386
- **Call:** `POST /sobjects/ProductCategory` — status: `implemented`
387
-
388
- **Inputs:**
389
-
390
- - `name` *(`String`)* — Category display name (Name field, ≤200 chars).
391
- - `webstoreId` *(`String`)* — 0ZE. Drives catalogId derivation — never asked.
392
- - `productCatalogId` *(`String`)* — 0ZS. Silent — never surfaced.
393
- - `parentCategoryId` *(`String`)* — 0ZG parent Id, or null/omitted for top-level. Rule 13a resolves merchant's parent word silently.
394
-
395
- **Depends on:** `derive-catalog-from-webstore`, `list-categories`
396
-
397
- **Rollback:** {'operation': 'sobject_delete', 'note': 'DELETE ProductCategory/{category_id}. Note — if products already assigned via ProductCategoryProduct, deletion cascades those junction rows silently.'}
398
-
399
- #### `update-category`
400
-
401
- Rename a category. PATCH Name only — no other field changes in scope.
402
-
403
- **Call:** `PATCH /sobjects/ProductCategory/{id}` — status: `implemented`
404
-
405
- **Inputs:**
406
-
407
- - `categoryId` *(`String`)* — 0ZG target category Id. Merchant names the category; agent resolves silently.
408
- - `newName` *(`String`)* — New display name (≤200 chars).
409
-
410
- **Depends on:** `list-categories`
411
-
412
- **Rollback:** {'operation': 'sobject_update', 'note': 'PATCH Name back to prior value. Note — no server-side undo.'}
413
-
414
- #### `create-product-attribute-custom-field`
415
-
416
- Variants picklist CustomField on ProductAttribute. Returns Tooling Id.
417
-
418
- **Call:** `POST /tooling/sobjects/CustomField` — status: `implemented`
419
-
420
- **Inputs:**
421
-
422
- - `FullName` *(`String`)* — ProductAttribute.<apiName>__c
423
- - `label` *(`String`)* — Label.
424
- - `type` *(`String (enum)`)* — Picklist.
425
- - `values` *(`Array<String>`)* — Values (locked at create).
426
- - `restricted` *(`Boolean`)* — true.
427
-
428
- **Rollback:** {'operation': 'metadata_delete', 'note': 'DELETE Tooling CustomField/{id}. Access errors = silent no-op.'}
429
-
430
- #### `create-product-attribute-set`
431
-
432
- Variants ProductAttributeSet grouping the parent CFs. Max 5 items; 1 set/parent.
433
-
434
- **Call:** `POST /composite` — status: `implemented`
435
-
436
- **Inputs:**
437
-
438
- - `name` *(`String`)* — Set name.
439
- - `description` *(`String`)* — Optional.
440
- - `assignedAttributeFieldIds` *(`Array<String>`)* — 00N Tooling Ids ≤5. Field=ID not apiName.
441
- - `groupedByAttributeId` *(`String`)* — One id gets IsGroupedBy=true.
442
-
443
- **Depends on:** `create-product-attribute-custom-field`
444
-
445
- **Rollback:** {'operation': 'sobject_delete', 'note': 'DELETE ProductAttributeSet/{id} — cascades to items. Not reversible.'}
446
-
447
- #### `add-attribute-to-existing-set`
448
-
449
- Rule-11 EXTEND. Adds one attr to existing set. After custom-field, before backfill.
450
-
451
- **Call:** `POST /sobjects/ProductAttributeSetItem` — status: `implemented`
452
-
453
- **Inputs:**
454
-
455
- - `ProductAttributeSetId` *(`String`)* — 0iY set Id.
456
- - `Field` *(`String`)* — Tooling CustomField Id (00Nxxx), NOT apiName. Passing apiName → INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST.
457
- - `Sequence` *(`Integer`)* — Display order.
458
-
459
- #### `backfill-variant-attribute-value`
460
-
461
- Rule-11 EXTEND. Backfills existing variants with a default value. HARD GATE — prompt for default up front.
462
-
463
- **Call:** `PATCH /sobjects/ProductAttribute/{id} (after GET /query for target ids)` — status: `implemented`
464
-
465
- **Inputs:**
466
-
467
- - `ProductAttributeSetId` *(`String`)* — Extended set.
468
- - `fieldApiName` *(`String`)* — e.g. Material__c (include __c).
469
- - `defaultValue` *(`String`)* — Default applied to ALL existing children. Must match one of the picklist values. HARD GATE.
470
-
471
- #### `create-master-product`
472
-
473
- Variants parent. Composite — Product2 Type=Base + ProductAttributeSetProduct.
474
-
475
- **Call:** `POST /composite` — status: `implemented`
476
-
477
- **Inputs:**
478
-
479
- - `Name` *(`String`)* — Parent name.
480
- - `ProductCode` *(`String`)* — Parent SKU (org-unique).
481
- - `StockKeepingUnit` *(`String`)* — =ProductCode.
482
- - `Family` *(`String`)* — Optional.
483
- - `attributeSetId` *(`String`)* — 0iY set id.
484
-
485
- **Depends on:** `create-product-attribute-set`
486
-
487
- **Rollback:** {'operation': 'sobject_delete', 'note': 'DELETE master Product2 (variants FIRST — VariantParentId blocks master).'}
488
-
489
- #### `create-variant-product`
490
-
491
- Variants children. Composite — Product2 + ProductAttribute per child.
492
-
493
- **Call:** `POST /composite` — status: `implemented`
494
-
495
- **Inputs:**
496
-
497
- - `masterProductId` *(`String`)* — 01t master.
498
- - `variants` *(`Array<Object>`)* — {Name,ProductCode,StockKeepingUnit,Family,attributes:{Color__c,…}} per variant. Attr keys=picklist fields in master set.
499
-
500
- **Depends on:** `create-master-product`
501
-
502
- **Rollback:** {'operation': 'sobject_delete', 'note': 'DELETE each variant Product2. BEFORE master (VariantParentId blocks).'}
503
-
504
- #### `set-variant-family-pricing`
505
-
506
- Variants pricing. Standard PBEs then Store PBEs — order matters.
507
-
508
- **Call:** `POST /composite` — status: `implemented`
509
-
510
- **Inputs:**
511
-
512
- - `masterProductId` *(`String`)* — 01t master.
513
- - `variantProductIds` *(`Array<String>`)* — 01t variant ids.
514
- - `unitPrice` *(`Number`)* — Sell price.
515
- - `listPrice` *(`Number`)* — Optional was-price.
516
- - `storePricebookIds` *(`Array<String>`)* — 01s store pricebooks.
517
- - `standardPricebookId` *(`String`)* — 01s Standard PB (first).
518
-
519
- **Depends on:** `create-master-product`, `create-variant-product`
520
-
521
- **Rollback:** {'operation': 'sobject_delete', 'note': 'DELETE each PBE Id. Standard first → cascades custom entries.'}
522
-
523
- #### `assign-entitlement-to-variant-family`
524
-
525
- Variants entitlement. CommerceEntitlementProduct across master+variants × policies. Without this buyers see nothing.
526
-
527
- **Call:** `POST /composite` — status: `implemented`
528
-
529
- **Inputs:**
530
-
531
- - `masterProductId` *(`String`)* — 01t master.
532
- - `variantProductIds` *(`Array<String>`)* — 01t variant ids.
533
- - `entitlementPolicyIds` *(`Array<String>`)* — 2rt policy ids.
534
-
535
- **Depends on:** `create-master-product`, `create-variant-product`
536
-
537
- **Rollback:** {'operation': 'sobject_delete', 'note': 'DELETE each CommerceEntitlementProduct Id.'}
538
-
539
- #### `add-product-media`
540
-
541
- Attach image URL to EXISTING product. Silent — 2× ProductMedia (List+Detail). NOT for quick-add.
542
-
543
- **Call:** `POST /sobjects/ProductMedia` — status: `implemented`
544
-
545
- **Inputs:**
546
-
547
- - `productId` *(`String`)* — 01t.
548
- - `imageUrl` *(`String`)* — HTTPS URL.
549
- - `altText` *(`String`)* — Screen-reader text. Skippable.
550
- - `title` *(`String`)* — Optional; defaults to Name.
551
-
552
- **Rollback:** {'operation': 'sobject_delete', 'note': 'DELETE each ProductMedia (2pm). Underlying media record NOT deleted.'}
553
-
554
- #### `export-products-csv`
555
-
556
- Async export (10s-2min). Store-scoped SOQL over Product2 → CSV in Files.
557
-
558
- **Call:** `POST /commerce/management/export/product/jobs` — status: `implemented`
559
-
560
- **Inputs:**
561
-
562
- - `productsInCompositeList` *(`String`)* — Source: output of derive-catalog-from-webstore (for the store-wide 0ZS catalog id), merchant.confirmedColumns
563
- (from the pre-fire columns gate, see agent_guidance rule 1), and merchant.exportScope (either "catalog"
564
- default or "category" with a merchant-picked 0ZG).
565
-
566
- Despite the wire field name, this is a SOQL SELECT string against Product2 (LIMIT 300000), NOT a
567
- CompositeList Id. The SELECT list becomes the CSV column headers; the WHERE clause scopes the export
568
- via a subquery on ProductCategoryProduct.CatalogId (store-wide) or ProductCategoryProduct.ProductCategoryId
569
- (category-scoped). Agent composes the full string just before firing. Raw product ids in the WHERE clause
570
- fail accept-stage validation — always route through the ProductCategoryProduct join.
571
-
572
- **Depends on:** `derive-catalog-from-webstore`
573
-
574
- **Rollback:** {'operation': 'none_available', 'note': 'Export cannot be cancelled. Post-run — DELETE ContentDocument.'}
575
-
576
- ### Verify operations
577
-
578
- #### `poll-export-job`
579
-
580
- Verify + poll — export job status. Ladder 15/30/60/120/180s until endTime populates. Confirms the export-products-csv write landed.
581
-
582
- **Call:** `GET /commerce/management/export/product/jobs` — status: `implemented`
583
-
584
- **Inputs:**
585
-
586
- - `jobId` *(`String`)* — Job id captured from the export POST. Used client-side to filter the collection response.
587
-
588
- **Depends on:** `export-products-csv`
589
-
590
- **Rollback:** {'operation': 'none_needed', 'note': 'Read-only op. No rollback.'}
591
-
592
- ### Destructive operations
593
-
594
- #### `delete-category`
595
-
596
- Delete a category from the store's catalog. Destructive-op hard gate — server does NOT block on assigned products; cascade drops ProductCategoryProduct rows silently.
597
-
598
- **Call:** `DELETE /sobjects/ProductCategory/{id}` — status: `implemented`
599
-
600
- **Inputs:**
601
-
602
- - `categoryId` *(`String`)* — 0ZG target category Id. Merchant names the category; agent resolves silently.
603
-
604
- **Depends on:** `list-categories`
605
-
606
- **Rollback:** {'operation': 'none_available', 'note': 'DELETE on ProductCategory is IRREVERSIBLE. ProductCategoryProduct junction rows are cascade-dropped by the platform, not recoverable via sObject POST (would need re-insert per (Product,Category) pair). Merchant re-creates via create-category + re-assigns via assign-product-to-category.'}
607
-
608
- ## Notes
609
-
610
- Act 2 of b2b-store-setup. Consumes a WebStore from merchant-storefront-lifecycle.
611
-
612
- Recovery: import timeout → GET .../import/product/last-job; resume or retry. 500 "another import in progress" → wait 60-120s+retry. Poll 404 → jobId expired (~7d). create-variant 500 UNABLE_TO_LOCK_ROW → serialize+retry. 401 re-auth. 403 = missing CommerceAdmin/userIsStoreMerchandiser.
613
-
614
- Out of scope: CSV upload, product deletion, catalog/pricebook creation, cross-catalog moves, moving a category to a new parent (rename-in-place only), category image (ProductCategoryMedia). Category ADD/RENAME/DELETE are in scope (rule 13, create-category / update-category / delete-category).