@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,687 +0,0 @@
1
- ---
2
- name: platform-custom-permissions-configure
3
- description: "Use this skill when users want to manage Custom Permission definitions and grants. Trigger when users mention custom, permissions, custom permissions."
4
- metadata:
5
- version: "1.0"
6
- accessCheck: "Old.notME,Admin.userCanViewCustomPermissions"
7
- ---
8
-
9
- # Managing Custom Permissions
10
-
11
- ## When to Use This Skill
12
-
13
- Manage Custom Permission definitions and grants. READS use sObject REST
14
- (describe + SOQL). WRITES (create/update/delete the permission definition
15
- itself) MUST use Metadata API — sObject REST returns 400
16
- CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY. The primary admin workflow is
17
- GRANTING a custom permission to a PermissionSet — that uses sObject CRUD
18
- on SetupEntityAccess (POST with ParentId=PermissionSet, SetupEntityId=
19
- CustomPermission). KeyPrefix is 0CP (not 0PR).
20
-
21
- ## Workflow
22
-
23
- ## API access mechanics (CustomPermission)
24
-
25
- CustomPermission is a full Metadata API type, `minApiVersion` 190.
26
-
27
- ### Read path (works via sObject REST)
28
- - **describe**: `GET /sobjects/CustomPermission/describe`.
29
- - **list / get**: SOQL against the `CustomPermission` sObject (list, or filter by Id).
30
- - `/describe` reports `createable=false`, `updateable=false`, `deletable=false` (already noted on the `describe` step).
31
-
32
- ### Write path (must use Metadata API)
33
- - `POST` / `PATCH` / `DELETE` against `/sobjects/CustomPermission` are rejected — POST/PATCH return `400 CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY`, DELETE returns `INSUFFICIENT_ACCESS_OR_READONLY` (these specific error codes are already documented on the `create`/`update`/`delete` steps). Route create/update/delete through the Metadata API instead.
34
- - Tooling API describe for CustomPermission returns `404` — do not attempt the Tooling API path.
35
-
36
- ## Critical Constraints
37
-
38
- **Preconditions:**
39
-
40
- - User needs access to manage CustomPermission (CRUD on the CustomPermission sObject). (check: `Old.notME,Admin.userCanViewCustomPermissions`)
41
-
42
- **Destructive operations — require explicit user confirmation:**
43
-
44
- - **`revoke_custom_permission`** — Revoke a CustomPermission grant from a PermissionSet by deleting the
45
- SetupEntityAccess record. Resolve the Id via SOQL:
46
- SELECT Id FROM SetupEntityAccess WHERE ParentId='<permSetId>'
47
- AND SetupEntityId='<customPermId>'.
48
-
49
- ORDERING CONSTRAINT: if perm A depends on perm B (CustomPermissionDependency),
50
- both granted to the same PermissionSet, you cannot revoke B's grant while
51
- A's grant is still active — server returns 400 DEPENDENCY_EXISTS. Revoke
52
- dependent grants first (A), then the required-perm grant (B).
53
-
54
- - Rollback: No automatic rollback.
55
- - **`bulk_revoke_custom_permissions`** — Bulk-revoke CustomPermission grants via Composite sObjects DELETE.
56
- Pass up to 200 SetupEntityAccess record Ids as a comma-separated list
57
- in the ids query parameter. Use allOrNone=false for partial-success
58
- semantics.
59
-
60
- - Rollback: No automatic rollback.
61
-
62
- ## Operations Reference
63
-
64
- Operations grouped by purpose. Use these as the building blocks for the workflows above.
65
-
66
- ### Summary
67
-
68
- | Operation | Purpose | Status | Call | Depends on |
69
- |-----------|---------|--------|------|------------|
70
- | `describe` | read | — | `GET /services/data/v67.0/sobjects/CustomPermission/describe` | — |
71
- | `list` | read | — | `GET /services/data/v67.0/query` | — |
72
- | `get-by-id` | read | — | `GET /services/data/v67.0/sobjects/CustomPermission/{Id}` | `list` |
73
- | `create` | write | — | `POST /headless/metadata` | `describe` |
74
- | `update` | write | — | `PUT /headless/metadata` | `get-by-id` |
75
- | `delete` | write | — | `DELETE /headless/metadata` | `get-by-id` |
76
- | `query_user_effective_permissions` | read | — | `GET /services/data/v67.0/query` | — |
77
- | `grant_custom_permission` | write | — | `POST /services/data/v67.0/sobjects/SetupEntityAccess` | — |
78
- | `revoke_custom_permission` | delete | — | `DELETE /services/data/v67.0/sobjects/SetupEntityAccess/{id}` | `grant_custom_permission` |
79
- | `query_grants` | read | — | `GET /services/data/v67.0/query` | — |
80
- | `query_dependencies` | read | — | `GET /services/data/v67.0/query` | — |
81
- | `add_required_permission` | write | — | `PUT /headless/metadata` | `create`, `query_dependencies` |
82
- | `remove_required_permission` | write | — | `PUT /headless/metadata` | `add_required_permission`, `query_dependencies` |
83
- | `bulk_grant_custom_permissions` | write | — | `POST /services/data/v67.0/composite/sobjects` | `grant_custom_permission` |
84
- | `bulk_revoke_custom_permissions` | delete | — | `DELETE /services/data/v67.0/composite/sobjects` | `query_grants` |
85
- | `clone_custom_permission` | write | — | `POST /headless/metadata` | `describe`, `list` |
86
-
87
- ### Dependency graph
88
-
89
- ```mermaid
90
- graph TD
91
- describe["describe (read)"]
92
- list["list (read)"]
93
- get_by_id["get-by-id (read)"]
94
- create["create (write)"]
95
- update["update (write)"]
96
- delete["delete (write)"]
97
- query_user_effective_permissions["query_user_effective_permissions (read)"]
98
- grant_custom_permission["grant_custom_permission (write)"]
99
- revoke_custom_permission["revoke_custom_permission (delete)"]
100
- query_grants["query_grants (read)"]
101
- query_dependencies["query_dependencies (read)"]
102
- add_required_permission["add_required_permission (write)"]
103
- remove_required_permission["remove_required_permission (write)"]
104
- bulk_grant_custom_permissions["bulk_grant_custom_permissions (write)"]
105
- bulk_revoke_custom_permissions["bulk_revoke_custom_permissions (delete)"]
106
- clone_custom_permission["clone_custom_permission (write)"]
107
- list --> get_by_id
108
- describe --> create
109
- get_by_id --> update
110
- get_by_id --> delete
111
- grant_custom_permission --> revoke_custom_permission
112
- create --> add_required_permission
113
- query_dependencies --> add_required_permission
114
- add_required_permission --> remove_required_permission
115
- query_dependencies --> remove_required_permission
116
- grant_custom_permission --> bulk_grant_custom_permissions
117
- query_grants --> bulk_revoke_custom_permissions
118
- describe --> clone_custom_permission
119
- list --> clone_custom_permission
120
- ```
121
-
122
- ### Read operations
123
-
124
- #### `describe`
125
-
126
- Retrieve the CustomPermission sObject describe — fields, picklist values,
127
- FLS, createable/updateable flags. IMPORTANT: describe confirms
128
- createable=false, updateable=false, deletable=false — writes MUST go
129
- through Metadata API. KeyPrefix is 0CP (not 0PR as previously documented).
130
-
131
-
132
- **Call:** `GET /services/data/v67.0/sobjects/CustomPermission/describe`
133
-
134
- **Output:** DescribeSObjectResult for CustomPermission — use this to build the field list for list / create / update payloads.
135
-
136
- #### `list`
137
-
138
- List CustomPermission records. Pair this with /describe first to pick field names.
139
-
140
- **Call:** `GET /services/data/v67.0/query`
141
-
142
- **Inputs:**
143
-
144
- - `where` *(`String`)* — Optional SOQL WHERE clause to filter Custom Permission records.
145
- - `limit` *(`int`)* — Optional SOQL LIMIT value.
146
- - `q` *(`string`)* — The full SOQL query string sent as the `q` query parameter. Defaults to
147
- "SELECT Id FROM CustomPermission"; fold the optional where/limit guidance
148
- above into this query — they describe how to shape `q`, they are not sent
149
- as separate parameters.
150
-
151
-
152
- **Output:** Query response with records[] of CustomPermission — Id plus any SELECTed fields.
153
-
154
- #### `get-by-id`
155
-
156
- Retrieve a specific CustomPermission record by Id.
157
-
158
- **Call:** `GET /services/data/v67.0/sobjects/CustomPermission/{Id}`
159
-
160
- **Inputs:**
161
-
162
- - `Id` *(`ID`)* — Id of the CustomPermission record to fetch.
163
-
164
- **Depends on:** `list`
165
-
166
- **Output:** Single CustomPermission record with all readable fields per user FLS.
167
-
168
- #### `query_user_effective_permissions`
169
-
170
- Discover which CustomPermissions a User effectively has via assigned
171
- PermissionSets. Two-step pattern (single SOQL with sub-query is the
172
- cleanest form):
173
- (1) Find the user's assigned permsets:
174
- SELECT PermissionSetId FROM PermissionSetAssignment
175
- WHERE AssigneeId='<userId>'
176
- (2) Find granted custom perms on those permsets:
177
- SELECT SetupEntityId, Parent.Label,
178
- SetupEntityId
179
- FROM SetupEntityAccess
180
- WHERE SetupEntityType='CustomPermission'
181
- AND ParentId IN (<assigned permset ids>)
182
- Or as a single nested SOQL using the IN-subquery form.
183
- IMPORTANT: this only surfaces perms granted via PermissionSet
184
- assignment — perms inherited via Profile assignment require a
185
- different join (Profile → ParentId on Profile-derived PermissionSet
186
- → SetupEntityAccess). PermissionSetGroup membership requires
187
- querying PermissionSetGroupComponent then descending to
188
- SetupEntityAccess on each component permset.
189
-
190
- **Call:** `GET /services/data/v67.0/query`
191
-
192
- **Inputs:**
193
-
194
- - `q` *(`String`)* — Example (single nested query):
195
- SELECT SetupEntityId, Parent.Label FROM SetupEntityAccess
196
- WHERE SetupEntityType='CustomPermission' AND ParentId IN
197
- (SELECT PermissionSetId FROM PermissionSetAssignment
198
- WHERE AssigneeId='005xx0000000001')
199
-
200
- **Output:** {records[] with SetupEntityId (the CustomPermission Id),
201
- Parent.Label (the granting PermissionSet's label)}.
202
- Resolve SetupEntityId → DeveloperName via a follow-up
203
- SELECT Id, DeveloperName FROM CustomPermission WHERE Id IN (...).
204
-
205
- **Notes:** coverage_note: Profile-direct perm grants (rare — most orgs have moved to
206
- PermissionSet-based assignment) require querying the user's
207
- Profile-derived PermissionSet (the one with IsOwnedByProfile=true
208
- tied to their Profile) and joining the same way.; psg_membership: PermissionSetGroup expands at runtime; to surface PSG-derived
209
- perms, query PermissionSetGroupComponent.PermissionSetId for the
210
- user's assigned PSGs, then descend to SetupEntityAccess on each
211
- component permset.
212
-
213
- #### `query_grants`
214
-
215
- SOQL query against SetupEntityAccess to discover which PermissionSets
216
- have a given CustomPermission granted. Two common patterns:
217
- (a) "Which permsets have this perm?" — filter by SetupEntityId
218
- (b) "Which custom perms does this permset grant?" — filter by ParentId
219
- AND SetupEntityType='CustomPermission'
220
-
221
-
222
- **Call:** `GET /services/data/v67.0/query`
223
-
224
- **Inputs:**
225
-
226
- - `q` *(`String`)* — Example (all grants for one perm):
227
- SELECT Id, ParentId, Parent.Label FROM SetupEntityAccess
228
- WHERE SetupEntityId='0CPxx000000001' AND SetupEntityType='CustomPermission'
229
-
230
-
231
- **Output:** {records[] with Id (SetupEntityAccess — pass to revoke), ParentId
232
- (PermissionSet), SetupEntityId (CustomPermission), SetupEntityType}.
233
-
234
- #### `query_dependencies`
235
-
236
- SOQL query against CustomPermissionDependency to discover required-perm
237
- relationships. A CustomPermission can declare dependencies on other
238
- CustomPermissions — Salesforce does NOT auto-cascade grant required
239
- perms when you grant the dependent perm. Admins must manually ensure
240
- all required perms are also granted. Use this query to surface what
241
- needs to be co-granted.
242
-
243
-
244
- **Call:** `GET /services/data/v67.0/query`
245
-
246
- **Inputs:**
247
-
248
- - `q` *(`String`)* — Example (what does perm X require?):
249
- SELECT Id, CustomPermissionId, RequiredCustomPermissionId,
250
- RequiredCustomPermission.DeveloperName
251
- FROM CustomPermissionDependency
252
- WHERE CustomPermissionId='0CPxx000000001'
253
-
254
-
255
- **Output:** {records[] with CustomPermissionId (the dependent), RequiredCustomPermissionId
256
- (the dependency). SF does NOT auto-cascade — you must grant all
257
- RequiredCustomPermissionId values to the same PermissionSet or the
258
- grant is incomplete.}
259
-
260
-
261
- **Notes:** cascade_warning: Salesforce does NOT auto-cascade required permissions. If Perm A
262
- requires Perm B, granting A without also granting B means the feature
263
- gated by A+B will not function. Query this table before granting a
264
- complex perm, and ensure all RequiredCustomPermissionIds are also
265
- granted to the target PermissionSet.
266
-
267
- ### Write operations
268
-
269
- #### `create`
270
-
271
- ⚠️ BROKEN via sObject REST — POST /sobjects/CustomPermission returns 400
272
- CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY. To CREATE a CustomPermission, use the
273
- Metadata API via this step's endpoint: POST the {type, fullName, xmlRep}
274
- deploy envelope to /headless/metadata (type=CustomPermission,
275
- fullName=namespace__PermName, xmlRep=the serialized <CustomPermission>
276
- document carrying <label> and optional <description>). A single-component
277
- /headless/metadata deploy persists the definition in one call — not a
278
- multi-component package deploy.
279
-
280
-
281
- **Call:** `POST /headless/metadata`
282
-
283
- **Inputs:**
284
-
285
- - `type` *(`String`)* — The Metadata API type being created — always "CustomPermission" for
286
- this step. Names the metadata type in the {type, fullName, xmlRep}
287
- deploy envelope.
288
-
289
- - `fullName` *(`String`)* — DeveloperName for the new CustomPermission (namespace__PermName format
290
- for managed packages, or just PermName for unmanaged). Must be unique
291
- in the org. Carried as the envelope's fullName (the component key).
292
-
293
- - `xmlRep` *(`String`)* — Serialized CustomPermission metadata document — the full-record body the
294
- Metadata API deploys. Carries the human-readable <label> and, optionally,
295
- <description>:
296
- <CustomPermission xmlns="http://soap.sforce.com/2006/04/metadata">
297
- <label>Manage Widgets</label>
298
- <description>Grants access to the Widgets console</description>
299
- </CustomPermission>
300
- To also declare a required-permission dependency, add a
301
- <requiredPermission> block (see add_required_permission).
302
-
303
-
304
- **Depends on:** `describe`
305
-
306
- **Rollback:** Call delete with type=CustomPermission and the same fullName to undo the create.
307
-
308
- #### `update`
309
-
310
- ⚠️ BROKEN via sObject REST — PATCH /sobjects/CustomPermission/{Id} returns
311
- 400 CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY. To UPDATE a CustomPermission
312
- (e.g. change its label or description), retrieve the existing metadata
313
- component via MDAPI retrieve, modify the XML, and redeploy. The <fullName>
314
- (developer name) is immutable — to rename, delete + recreate.
315
-
316
-
317
- **Call:** `PUT /headless/metadata`
318
-
319
- **Inputs:**
320
-
321
- - `type` *(`String`)* — The Metadata API type being updated — always "CustomPermission" for
322
- this step. Names the metadata type in the {type, fullName, xmlRep}
323
- deploy envelope.
324
-
325
- - `fullName` *(`String`)* — DeveloperName of the existing CustomPermission to update. Identifies the
326
- component to retrieve, and is the envelope's fullName (the component key).
327
- Discover via SOQL:
328
- SELECT DeveloperName FROM CustomPermission WHERE Id='0CPxx...'
329
-
330
- - `xmlRep` *(`String`)* — Serialized CustomPermission metadata document — the FULL-RECORD body the
331
- update deploys (Metadata API update is a full PUT, not a partial patch).
332
- Retrieve the existing component, change <label> and/or <description>, and
333
- redeploy the whole document:
334
- <CustomPermission xmlns="http://soap.sforce.com/2006/04/metadata">
335
- <label>Manage Widgets</label>
336
- <description>Updated description</description>
337
- </CustomPermission>
338
- The <fullName> (DeveloperName) is immutable — to rename, delete + recreate.
339
-
340
-
341
- **Depends on:** `get-by-id`
342
-
343
- #### `delete`
344
-
345
- DELETE a CustomPermission directly via the hosted Metadata API:
346
- DELETE /headless/metadata?type=CustomPermission&fullName={fullName}
347
- (supply the CustomPermission's DeveloperName as {fullName})
348
- → 204 (record deleted). This requires the org permission
349
- FileBasedMetadataDelete to be enabled; without it the call returns
350
- 403 INSUFFICIENT_ACCESS from the access check. The CustomPermission type is
351
- allowlisted for CREATE/READ/UPDATE/DELETE on /headless/metadata via core
352
- PR #110662.
353
-
354
- Note: DELETE via sObject REST is NOT supported —
355
- DELETE /sobjects/CustomPermission/{Id} returns INSUFFICIENT_ACCESS_OR_READONLY
356
- and /describe reports deletable=false. The destructiveChanges.xml MDAPI deploy
357
- is a legacy fallback that is no longer required and must not be reintroduced on
358
- the hosted path — it needs a file-based metadata deploy that the hosted
359
- /headless/metadata surface does not provide. Prefer the direct DELETE above.
360
-
361
-
362
- **Call:** `DELETE /headless/metadata`
363
-
364
- **Inputs:**
365
-
366
- - `fullName` *(`String`)* — DeveloperName of the CustomPermission to delete. Passed as the fullName
367
- query parameter alongside type=CustomPermission on the DELETE call:
368
- DELETE /headless/metadata?type=CustomPermission&fullName={fullName}
369
- (the value to supply is the DeveloperName).
370
- Discover via SOQL:
371
- SELECT DeveloperName FROM CustomPermission WHERE Id='0CPxx...'
372
- (For the destructiveChanges fallback, the same fullName becomes a
373
- <members> entry under <name>CustomPermission</name> in the manifest.)
374
-
375
- - `type` *(`string`)* — The Metadata API type being deleted — always "CustomPermission" for
376
- this step. Passed as the type query parameter on the DELETE call:
377
- DELETE /headless/metadata?type=CustomPermission&fullName={fullName}
378
-
379
-
380
- **Depends on:** `get-by-id`
381
-
382
- #### `grant_custom_permission`
383
-
384
- Grant a CustomPermission to a PermissionSet by creating a SetupEntityAccess
385
- junction record. This is the PRIMARY admin workflow — more common than
386
- creating/editing the permission definition itself. Required fields:
387
- ParentId (PermissionSet Id) + SetupEntityId (CustomPermission Id).
388
- CONSTRAINTS:
389
- - ParentId accepts ONLY non-managed user PermissionSets. Managed permsets
390
- → INVALID_CROSS_REFERENCE_KEY. PermissionSetGroups → FIELD_INTEGRITY_EXCEPTION.
391
- Profile-derived permsets → FIELD_INTEGRITY_EXCEPTION.
392
- Filter: WHERE IsOwnedByProfile=false AND IsCustom=true
393
- - SetupEntityType is auto-derived from SetupEntityId's keyPrefix — do NOT
394
- POST it (createable=false for that field).
395
- - SetupEntityId is POLYMORPHIC across 11 entity types; for CustomPermission,
396
- the keyPrefix is 0CP.
397
-
398
-
399
- **Call:** `POST /services/data/v67.0/sobjects/SetupEntityAccess`
400
-
401
- **Inputs:**
402
-
403
- - `ParentId` *(`String`)* — PermissionSet Id to grant the permission to. Must be a non-managed,
404
- user-created PermissionSet (IsOwnedByProfile=false AND IsCustom=true).
405
- Managed permsets, PermissionSetGroups, and Profile-derived permsets
406
- are rejected. Discover eligible targets:
407
- SELECT Id, Label FROM PermissionSet WHERE IsOwnedByProfile=false
408
- AND IsCustom=true AND NamespacePrefix=null
409
-
410
- - `SetupEntityId` *(`String`)* — CustomPermission Id (keyPrefix 0CP). The permission to grant.
411
- Polymorphic across 11 entity types — SetupEntityType is auto-derived
412
- from the keyPrefix and MUST NOT be included in the POST body
413
- (createable=false).
414
-
415
-
416
- **Output:** 201 {id, success, errors[]}.
417
-
418
- **Rollback:** revoke_custom_permission
419
-
420
- **Notes:** error_contracts: 400 INVALID_CROSS_REFERENCE_KEY — ParentId is a managed PermissionSet
421
- (IsCustom=false) or a non-existent Id.
422
- 400 "id value of incorrect type" — ParentId is a PermissionSetGroup
423
- (different entity type, wrong keyPrefix for the FK field).
424
- 400 DUPLICATE_VALUE — this grant already exists.
425
- Note: Profile-derived PermissionSets (IsOwnedByProfile=true) may
426
- ACCEPT the grant on some orgs — behavior is org/release-dependent.
427
- Recommend filtering to IsOwnedByProfile=false for safety.
428
- ; polymorphic_note: SetupEntityId is polymorphic across 11 entity types (CustomPermission,
429
- ConnectedApplication, ExternalDataSource, CustomObject, etc.).
430
- SetupEntityType is derived from the keyPrefix — never POST it manually.
431
-
432
- #### `add_required_permission`
433
-
434
- Add a required-permission dependency to a CustomPermission. This is the
435
- API equivalent of the "Edit" button on the Required Custom Permissions
436
- section of the CustomPermission detail page.
437
-
438
- PRECONDITION: Both the parent CustomPermission AND the target required
439
- CustomPermission MUST already exist in the org. If either does not exist,
440
- create it first (see the create step). You need at least two distinct
441
- CustomPermission definitions to establish a dependency.
442
-
443
- CustomPermissionDependency sObject is READ-ONLY (createable=false,
444
- updateable=false, deletable=false) — the dependency is managed as a
445
- <requiredPermission> child element in the CustomPermission metadata XML.
446
- Steps (single-component /headless/metadata — no multi-component package
447
- or sf CLI required, as of the 262/patch framework fix; see notes):
448
- 1. Ensure the target required CustomPermission already exists in the org
449
- (create it via the create step first if it does not).
450
- 2. Send the PARENT's xmlRep carrying a <requiredPermission> block that
451
- references the target by DeveloperName:
452
- <requiredPermission>
453
- <customPermission>{RequiredPerm_DeveloperName}</customPermission>
454
- <dependency>true</dependency>
455
- </requiredPermission>
456
- Use PUT to amend an existing parent, or POST at parent create-time.
457
- The referenced target does NOT need to be included in the request —
458
- only the parent is sent; the framework resolves the reference against
459
- the perm already present in the org.
460
- After the call, CustomPermissionDependency sObject reflects the new
461
- relationship (queryable via query_dependencies step).
462
-
463
-
464
- **Call:** `PUT /headless/metadata`
465
-
466
- **Inputs:**
467
-
468
- - `parent_fullName` *(`String`)* — DeveloperName of the CustomPermission that will DEPEND on another.
469
- Discover via SOQL: SELECT DeveloperName FROM CustomPermission
470
- WHERE Id='0CPxx...'
471
-
472
- - `required_fullName` *(`String`)* — DeveloperName of the CustomPermission being added as a requirement.
473
- Must already exist in the org. After deploy, granting the parent perm
474
- to a PermissionSet will REQUIRE this perm to also be granted (SF
475
- enforces at grant time).
476
-
477
-
478
- **Depends on:** `create`, `query_dependencies`
479
-
480
- **Output:** Deploy Succeeded.
481
-
482
- **Rollback:** remove_required_permission
483
-
484
- **Notes:** single_component_supported: As of the 262/patch framework fix (W-23448962), single-component
485
- /headless/metadata create/update/delete requests behave like the
486
- synchronous create path, a SINGLE-COMPONENT request carrying only the
487
- PARENT's xmlRep with a <requiredPermission> block now correctly persists
488
- the dependency, provided the referenced target CustomPermission already
489
- exists in the org.
490
- HISTORICAL (pre-262/patch): the parent-only request returned 200 but the
491
- <requiredPermission> element was SILENTLY DROPPED — callers had to deploy
492
- both components in one multi-component package via sf CLI. That workaround
493
- is NO LONGER required and must not be reintroduced (hosted-MCP agents have
494
- no sf CLI). Re-verified on orgfarm-8b18a62938 (2026-07-27): single-component
495
- POST → dependency row created; PUT <dependency>false</dependency> → row removed.
496
- ; xml_structure: The <requiredPermission> element lives inside the parent
497
- CustomPermission's .customPermission-meta.xml:
498
- <CustomPermission xmlns="http://soap.sforce.com/2006/04/metadata">
499
- <isLicensed>false</isLicensed>
500
- <label>...</label>
501
- <requiredPermission>
502
- <customPermission>Required_Perm_DeveloperName</customPermission>
503
- <dependency>true</dependency>
504
- </requiredPermission>
505
- </CustomPermission>
506
- Multiple <requiredPermission> blocks can exist (one per dependency).
507
- ; enforcement: After adding, Salesforce enforces the dependency at grant time:
508
- attempting to grant the parent perm without the required perm already
509
- granted on the same PermissionSet will fail with "Custom permission X
510
- requires the following custom permission(s): Y".
511
-
512
- #### `remove_required_permission`
513
-
514
- Remove a required-permission dependency from a CustomPermission. This is
515
- the API equivalent of unchecking a requirement in the "Edit" UI on the
516
- Required Custom Permissions section.
517
-
518
- PRECONDITION: A dependency between the parent and the target
519
- CustomPermission MUST already exist (established via
520
- add_required_permission). Query CustomPermissionDependency first to
521
- confirm the relationship exists before attempting removal.
522
-
523
- Steps (single-component /headless/metadata — same as add; see the
524
- add_required_permission notes for the 262/patch fix that made this work):
525
- 1. Take the parent CustomPermission's xmlRep.
526
- 2. Set <dependency>false</dependency> on the target <requiredPermission>
527
- block (the one where <customPermission> = the target DeveloperName).
528
- NOTE: simply removing the element does NOT work (deploys are additive);
529
- you must explicitly set <dependency>false</dependency>.
530
- 3. PUT the parent only. The referenced target does NOT need to be included
531
- in the request (single-component request is sufficient post-262/patch).
532
- After the call, the CustomPermissionDependency row disappears and
533
- grant-time enforcement for that dependency is removed.
534
-
535
-
536
- **Call:** `PUT /headless/metadata`
537
-
538
- **Inputs:**
539
-
540
- - `parent_fullName` *(`String`)* — DeveloperName of the CustomPermission that currently depends on
541
- another (the one being edited).
542
-
543
- - `required_fullName` *(`String`)* — DeveloperName of the CustomPermission being removed as a requirement.
544
-
545
-
546
- **Depends on:** `add_required_permission`, `query_dependencies`
547
-
548
- **Output:** Deploy Succeeded.
549
-
550
- **Notes:** cascade_note: Removing a required-permission dependency does NOT revoke existing
551
- grants. If PermissionSet X already has both perms granted, both
552
- grants remain. The enforcement is only at grant-time — removing the
553
- dependency simply stops SF from requiring the dependent perm on
554
- future grant operations.
555
-
556
- #### `bulk_grant_custom_permissions`
557
-
558
- Bulk-grant CustomPermissions via Composite sObjects API. Supports two
559
- patterns:
560
- (a) "1 perm → N permsets" — grant a single CustomPermission to multiple
561
- PermissionSets in one call (up to 200 records per request).
562
- (b) "N perms → 1 permset" — grant multiple CustomPermissions to a single
563
- PermissionSet in one call.
564
- Use allOrNone=false for partial-success semantics (some grants succeed
565
- even if others hit DUPLICATE_VALUE or INVALID_CROSS_REFERENCE_KEY).
566
-
567
-
568
- **Call:** `POST /services/data/v67.0/composite/sobjects`
569
-
570
- **Inputs:**
571
-
572
- - `records` *(`Array`)* — Array of SetupEntityAccess objects, each with {ParentId, SetupEntityId}.
573
- Max 200 per request. Same constraints as single grant: ParentId must
574
- be non-managed user PermissionSet; SetupEntityType must NOT be included.
575
-
576
- - `allOrNone` *(`Boolean`)* — false (recommended) = partial success; true = atomic (all fail if
577
- any one fails). Default: false.
578
-
579
-
580
- **Depends on:** `grant_custom_permission`
581
-
582
- **Output:** Array of {id, success, errors[]} — one entry per input record.
583
- Partial success: check each entry's success flag individually.
584
-
585
-
586
- **Notes:** error_contracts: Per-record errors (same as single grant): DUPLICATE_VALUE,
587
- INVALID_CROSS_REFERENCE_KEY, FIELD_INTEGRITY_EXCEPTION.
588
- With allOrNone=false, failing records don't block succeeding ones.
589
-
590
- #### `clone_custom_permission`
591
-
592
- Clone a CustomPermission by reading the source definition and deploying a
593
- NEW component under a new name and label. The base SOR claimed
594
- "Clone is a UI button with no API equivalent" — this is incorrect.
595
- Steps:
596
- 1. Read the source: SOQL the source CustomPermission for its MasterLabel
597
- and Description. CustomPermission.DeveloperName never carries the
598
- namespace, so filter on NamespacePrefix too: pass the unqualified
599
- DeveloperName, and for a managed-package source (fullName ns__Name)
600
- split the ns prefix into NamespacePrefix.
601
- SELECT MasterLabel, Description FROM CustomPermission
602
- WHERE DeveloperName='<DeveloperName>' AND NamespacePrefix=<ns or null>.
603
- 2. Compose the new component's xmlRep: a <CustomPermission> document
604
- carrying the new <label> (and optional <description>) under the new
605
- fullName.
606
- 3. Deploy: POST the {type: CustomPermission, fullName: new_fullName,
607
- xmlRep} envelope to /headless/metadata — a single-component deploy in
608
- one call (see the create step for the envelope shape).
609
- Optional: also copy SetupEntityAccess grants from the source to the clone
610
- (via query_grants on source + bulk_grant on clone). To carry over any
611
- required-permission dependency, use add_required_permission on the clone.
612
-
613
-
614
- **Call:** `POST /headless/metadata`
615
-
616
- **Inputs:**
617
-
618
- - `source_fullName` *(`String`)* — fullName of the source CustomPermission to clone. For an unmanaged
619
- perm this is just its DeveloperName; for a managed-package perm it is
620
- ns__DeveloperName. The read query filters on the unqualified
621
- DeveloperName (plus NamespacePrefix) because CustomPermission.DeveloperName
622
- never includes the namespace.
623
- Discover via SOQL: SELECT DeveloperName, NamespacePrefix FROM
624
- CustomPermission WHERE Id='0CPxx000000001'
625
-
626
- - `new_fullName` *(`String`)* — DeveloperName for the cloned permission (must be unique in org).
627
- - `new_label` *(`String`)* — Label for the cloned permission.
628
-
629
- **Depends on:** `describe`, `list`
630
-
631
- **Notes:** grant_copy: Cloning the permission definition does NOT copy its grants. To
632
- replicate grants, query_grants on the source perm's Id, then
633
- bulk_grant_custom_permissions with the same ParentIds + the new
634
- permission's Id.
635
-
636
- ### Destructive operations
637
-
638
- #### `revoke_custom_permission`
639
-
640
- Revoke a CustomPermission grant from a PermissionSet by deleting the
641
- SetupEntityAccess record. Resolve the Id via SOQL:
642
- SELECT Id FROM SetupEntityAccess WHERE ParentId='<permSetId>'
643
- AND SetupEntityId='<customPermId>'.
644
-
645
- ORDERING CONSTRAINT: if perm A depends on perm B (CustomPermissionDependency),
646
- both granted to the same PermissionSet, you cannot revoke B's grant while
647
- A's grant is still active — server returns 400 DEPENDENCY_EXISTS. Revoke
648
- dependent grants first (A), then the required-perm grant (B).
649
-
650
-
651
- **Call:** `DELETE /services/data/v67.0/sobjects/SetupEntityAccess/{id}`
652
-
653
- **Inputs:**
654
-
655
- - `id` *(`String`)* — SetupEntityAccess record Id (NOT the PermissionSet or CustomPermission Id).
656
-
657
- **Depends on:** `grant_custom_permission`
658
-
659
- **Notes:** ordering_constraint: Cannot revoke a required-perm grant while a dependent perm grant is
660
- still active on the same PermissionSet. Server returns
661
- 400 DEPENDENCY_EXISTS. Revoke order: dependent first, required last.
662
- Use query_dependencies to discover the dependency graph before
663
- revoking; pre-flight a revoke order that respects it.
664
- ; patch_unsupported: SetupEntityAccess.updateable=false. PATCH returns 400
665
- CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY. To "change" a grant, DELETE
666
- the existing record + INSERT a new one.
667
-
668
- #### `bulk_revoke_custom_permissions`
669
-
670
- Bulk-revoke CustomPermission grants via Composite sObjects DELETE.
671
- Pass up to 200 SetupEntityAccess record Ids as a comma-separated list
672
- in the ids query parameter. Use allOrNone=false for partial-success
673
- semantics.
674
-
675
-
676
- **Call:** `DELETE /services/data/v67.0/composite/sobjects`
677
-
678
- **Inputs:**
679
-
680
- - `ids` *(`String`)* — Comma-separated SetupEntityAccess record Ids (max 200). Discover
681
- via query_grants filtered by the target perm or permset.
682
-
683
- - `allOrNone` *(`Boolean`)* — false = partial success (default); true = atomic.
684
-
685
- **Depends on:** `query_grants`
686
-
687
- **Output:** Array of {id, success, errors[]}.