@salesforce/afv-skills 1.65.0 → 1.65.1

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 (349) hide show
  1. package/package.json +1 -1
  2. package/skills/field-service-data-capture-form-deployer-configure/SKILL.md +2 -23
  3. package/skills/field-service-data-capture-form-designer-configure/SKILL.md +3 -13
  4. package/skills/field-service-mobile-branding-configure/SKILL.md +3 -17
  5. package/skills/field-service-objective-designer-configure/SKILL.md +379 -72
  6. package/skills/field-service-prework-brief-deployer-configure/SKILL.md +537 -10
  7. package/skills/field-service-scheduling-policy-designer-query/SKILL.md +1093 -65
  8. package/skills/field-service-sobject-create-configure/SKILL.md +213 -13
  9. package/skills/field-service-voice-to-form-configure/SKILL.md +11 -40
  10. package/skills/field-service-work-rule-designer-configure/SKILL.md +95 -121
  11. package/skills/agentforce-gpt-email-generation-configure/SKILL.md +0 -312
  12. package/skills/agentforce-wizard-ui-forecasting-analytics-components-configure/SKILL.md +0 -64
  13. package/skills/agentforce-wizard-ui-sales-einstein-components-configure/SKILL.md +0 -46
  14. package/skills/automation-company-profile-info-query/SKILL.md +0 -51
  15. package/skills/automation-digital-wallet-configure/SKILL.md +0 -689
  16. package/skills/automation-flow-coordinate/SKILL.md +0 -95
  17. package/skills/automation-flow-coordinate/references/elements/action-call/action-call.md +0 -1569
  18. package/skills/automation-flow-coordinate/references/elements/action-call/conversation-messaging.md +0 -96
  19. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-sms-message.json +0 -23
  20. package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-to-journey-no-fields.json +0 -31
  21. package/skills/automation-flow-coordinate/references/elements/action-call/send-to-journey.md +0 -179
  22. package/skills/automation-flow-coordinate/references/elements/exit-rule/examples/event-email-link-click.json +0 -13
  23. package/skills/automation-flow-coordinate/references/elements/exit-rule/exit-rule.md +0 -83
  24. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/examples/forward-to-bot-or-agent.json +0 -69
  25. package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/forward-to-bot-or-agent.md +0 -274
  26. package/skills/automation-flow-coordinate/references/elements/start/audience-common.md +0 -192
  27. package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md +0 -130
  28. package/skills/automation-flow-coordinate/references/elements/start/data-cloud-data-change-triggered.md +0 -92
  29. package/skills/automation-flow-coordinate/references/elements/start/form-submission-triggered.md +0 -88
  30. package/skills/automation-flow-coordinate/references/elements/start/segment-triggered.md +0 -152
  31. package/skills/automation-flow-coordinate/references/elements/start/start.md +0 -539
  32. package/skills/automation-flow-coordinate/references/elements/subflow/subflow.md +0 -152
  33. package/skills/automation-flow-coordinate/references/elements/wait/wait.md +0 -497
  34. package/skills/automation-flow-coordinate/references/recipes/author/author.md +0 -868
  35. package/skills/automation-flow-coordinate/references/recipes/summarize/element-generic.md +0 -300
  36. package/skills/automation-flow-coordinate/references/recipes/summarize/reference-resolution.md +0 -292
  37. package/skills/automation-flow-coordinate/references/recipes/summarize/summarize.md +0 -323
  38. package/skills/automation-flow-coordinate/references/recipes/testing/examples/debug-output-template.md +0 -109
  39. package/skills/automation-flow-coordinate/references/recipes/testing/shape.md +0 -219
  40. package/skills/automation-flow-coordinate/references/recipes/testing/shared-stages/intent-analyzer.md +0 -180
  41. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/debug.md +0 -175
  42. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/promote.md +0 -255
  43. package/skills/automation-flow-coordinate/references/recipes/testing/workflows/save-debug.md +0 -212
  44. package/skills/automation-flow-coordinate/references/resources/variable/variable.md +0 -171
  45. package/skills/automation-flow-coordinate/references/shared/anti-patterns.md +0 -786
  46. package/skills/automation-flow-coordinate/references/shared/end/end.md +0 -267
  47. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/README.md +0 -69
  48. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/predictions.jsonl +0 -80
  49. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/prompts.jsonl +0 -116
  50. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/flow-type-resolver.md +0 -321
  51. package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/taxonomy.json +0 -320
  52. package/skills/automation-flow-coordinate/references/shared/server-functions.md +0 -597
  53. package/skills/automotive-cloud-appraisal-management-settings-configure/SKILL.md +0 -69
  54. package/skills/automotive-cloud-dealer-essentials-configure/SKILL.md +0 -78
  55. package/skills/automotive-cloud-ground-agent-data-pipelines-configure/SKILL.md +0 -373
  56. package/skills/automotive-cloud-ground-mfg-agent-data-pipelines-configure/SKILL.md +0 -273
  57. package/skills/automotive-cloud-mfg-agent-data-pipelines-configure/SKILL.md +0 -259
  58. package/skills/automotive-cloud-mfg-sales-concierge-agent-create/SKILL.md +0 -369
  59. package/skills/automotive-cloud-mfg-sales-concierge-foundation-configure/SKILL.md +0 -542
  60. package/skills/automotive-cloud-mfg-sales-concierge-foundation-coordinate/SKILL.md +0 -159
  61. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-agent-create/SKILL.md +0 -349
  62. package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-configure/SKILL.md +0 -505
  63. package/skills/automotive-cloud-sales-concierge-agent-create/SKILL.md +0 -380
  64. package/skills/automotive-cloud-sales-concierge-foundation-configure/SKILL.md +0 -567
  65. package/skills/automotive-cloud-sales-concierge-foundation-coordinate/SKILL.md +0 -159
  66. package/skills/automotive-cloud-sales-concierge-orchestrator-agent-create/SKILL.md +0 -360
  67. package/skills/automotive-cloud-sales-concierge-orchestrator-configure/SKILL.md +0 -539
  68. package/skills/automotive-cloud-sales-concierge-search-grounding-configure/SKILL.md +0 -358
  69. package/skills/commerce-b2b-merchant-quote-configure/SKILL.md +0 -602
  70. package/skills/commerce-b2b-store-configure/SKILL.md +0 -251
  71. package/skills/commerce-credit-memo-create/SKILL.md +0 -139
  72. package/skills/commerce-delivery-business-hours-configure/SKILL.md +0 -277
  73. package/skills/commerce-delivery-estimation-apply/SKILL.md +0 -155
  74. package/skills/commerce-delivery-estimation-configure/SKILL.md +0 -377
  75. package/skills/commerce-delivery-routing-specs-integrate/SKILL.md +0 -174
  76. package/skills/commerce-estimate-bopis-query/SKILL.md +0 -279
  77. package/skills/commerce-estimate-delivery-date-query/SKILL.md +0 -349
  78. package/skills/commerce-fees-apply/SKILL.md +0 -227
  79. package/skills/commerce-fulfillment-routing-analyze/SKILL.md +0 -200
  80. package/skills/commerce-guest-buyer-create/SKILL.md +0 -173
  81. package/skills/commerce-location-bopis-configure/SKILL.md +0 -378
  82. package/skills/commerce-location-business-hours-configure/SKILL.md +0 -235
  83. package/skills/commerce-location-delivery-processing-time-configure/SKILL.md +0 -309
  84. package/skills/commerce-location-graph-integrate/SKILL.md +0 -131
  85. package/skills/commerce-location-shipping-carrier-method-configure/SKILL.md +0 -755
  86. package/skills/commerce-location-temporary-operating-hours-configure/SKILL.md +0 -331
  87. package/skills/commerce-merchant-buyer-groups-configure/SKILL.md +0 -579
  88. package/skills/commerce-merchant-buyer-user-onboarding-create/SKILL.md +0 -626
  89. package/skills/commerce-merchant-catalog-configure/SKILL.md +0 -614
  90. package/skills/commerce-merchant-extension-provider-configure/SKILL.md +0 -368
  91. package/skills/commerce-merchant-insights-account-health-churn-analyze/SKILL.md +0 -118
  92. package/skills/commerce-merchant-insights-inventory-returns-analyze/SKILL.md +0 -65
  93. package/skills/commerce-merchant-insights-order-shopper-get/SKILL.md +0 -90
  94. package/skills/commerce-merchant-insights-product-performance-analyze/SKILL.md +0 -72
  95. package/skills/commerce-merchant-insights-query/SKILL.md +0 -279
  96. package/skills/commerce-merchant-storefront-guest-access-configure/SKILL.md +0 -656
  97. package/skills/commerce-order-summary-change-apply/SKILL.md +0 -375
  98. package/skills/commerce-product-details-get/SKILL.md +0 -363
  99. package/skills/commerce-product-search/SKILL.md +0 -563
  100. package/skills/commerce-react-storefront-create/SKILL.md +0 -350
  101. package/skills/commerce-return-order-summary-create/SKILL.md +0 -513
  102. package/skills/commerce-search-relevance-analyze/SKILL.md +0 -757
  103. package/skills/commerce-temporary-processing-time-override-create/SKILL.md +0 -274
  104. package/skills/communications-initial-setup-configure/SKILL.md +0 -630
  105. package/skills/communications-multisite-configure/SKILL.md +0 -571
  106. package/skills/communications-revenue-cloud-settings-configure/SKILL.md +0 -74
  107. package/skills/communications-smb-fiber-catalog-create/SKILL.md +0 -413
  108. package/skills/communications-tmf-integrate/SKILL.md +0 -1368
  109. package/skills/consumer-goods-visit-activity-act4-questions-assign/SKILL.md +0 -448
  110. package/skills/consumer-goods-visit-activity-act5-standard-create/SKILL.md +0 -269
  111. package/skills/consumer-goods-visit-activity-act6-assortment-configure/SKILL.md +0 -271
  112. package/skills/consumer-goods-visit-activity-act7-account-scoping-create/SKILL.md +0 -382
  113. package/skills/consumer-goods-visit-activity-act8-plan-attach-create/SKILL.md +0 -373
  114. package/skills/consumer-goods-visit-activity-act9-proof-validate/SKILL.md +0 -389
  115. package/skills/consumer-goods-visit-and-activity-act1-specification-create/SKILL.md +0 -338
  116. package/skills/consumer-goods-visit-and-activity-act2-template-create/SKILL.md +0 -547
  117. package/skills/consumer-goods-visit-and-activity-act3-definition-create/SKILL.md +0 -346
  118. package/skills/consumer-goods-visit-and-activity-configure/SKILL.md +0 -1110
  119. package/skills/crm-analytics-adoption-insights-configure/SKILL.md +0 -224
  120. package/skills/crm-analytics-custom-report-type-lightning-configure/SKILL.md +0 -418
  121. package/skills/crm-analytics-dashboards-configure/SKILL.md +0 -731
  122. package/skills/crm-analytics-operational-analytics-metadata-bridge-migrate/SKILL.md +0 -233
  123. package/skills/crm-analytics-report-notifications-ui-configure/SKILL.md +0 -184
  124. package/skills/crm-analytics-sharing-inheritance-coverage-analyze/SKILL.md +0 -167
  125. package/skills/crm-analytics-sonic-getting-started-configure/SKILL.md +0 -55
  126. package/skills/crm-analytics-tableau-next-app-deploy/SKILL.md +0 -1350
  127. package/skills/crm-analytics-tableau-next-c360-basemodel-validate/SKILL.md +0 -1862
  128. package/skills/crm-analytics-tableau-next-datacloud-validate/SKILL.md +0 -83
  129. package/skills/crm-analytics-tableau-next-provisioning-validate/SKILL.md +0 -81
  130. package/skills/data360-activation-create/SKILL.md +0 -104
  131. package/skills/data360-activation-external-platform-get/SKILL.md +0 -49
  132. package/skills/data360-activation-target-create/SKILL.md +0 -93
  133. package/skills/data360-activation-v2-create/SKILL.md +0 -456
  134. package/skills/data360-audience-dmo-get/SKILL.md +0 -38
  135. package/skills/data360-calculated-affinity-create/SKILL.md +0 -82
  136. package/skills/data360-calculated-insight-create/SKILL.md +0 -148
  137. package/skills/data360-catalog-metadata-create/SKILL.md +0 -183
  138. package/skills/data360-code-extension-create/SKILL.md +0 -115
  139. package/skills/data360-communication-capping-create/SKILL.md +0 -227
  140. package/skills/data360-connection-create/SKILL.md +0 -491
  141. package/skills/data360-content-lens-create/SKILL.md +0 -181
  142. package/skills/data360-data-action-create/SKILL.md +0 -126
  143. package/skills/data360-data-action-target-create/SKILL.md +0 -181
  144. package/skills/data360-data-clean-room-create/SKILL.md +0 -238
  145. package/skills/data360-data-governance-create/SKILL.md +0 -746
  146. package/skills/data360-data-graph-create/SKILL.md +0 -82
  147. package/skills/data360-data-harmonized-model-object-reference-create/SKILL.md +0 -38
  148. package/skills/data360-data-lake-object-create/SKILL.md +0 -207
  149. package/skills/data360-data-model-object-catalog-get/SKILL.md +0 -49
  150. package/skills/data360-data-model-object-create/SKILL.md +0 -128
  151. package/skills/data360-data-model-object-mapping-create/SKILL.md +0 -106
  152. package/skills/data360-data-space-create/SKILL.md +0 -161
  153. package/skills/data360-data-streams-create/SKILL.md +0 -324
  154. package/skills/data360-engagement-signal-get/SKILL.md +0 -38
  155. package/skills/data360-experiment-create/SKILL.md +0 -82
  156. package/skills/data360-goal-based-campaign-create/SKILL.md +0 -192
  157. package/skills/data360-harmonization-process-history-get/SKILL.md +0 -38
  158. package/skills/data360-harmonized-unstructured-dmo-create/SKILL.md +0 -84
  159. package/skills/data360-identity-resolution-create/SKILL.md +0 -115
  160. package/skills/data360-intelligent-document-processing-create/SKILL.md +0 -148
  161. package/skills/data360-knowledge-graph-construction-create/SKILL.md +0 -93
  162. package/skills/data360-knowledge-graph-create/SKILL.md +0 -216
  163. package/skills/data360-knowledge-space-mcp-configure/SKILL.md +0 -475
  164. package/skills/data360-machine-learning-mcp-configure/SKILL.md +0 -697
  165. package/skills/data360-multi-org-mcp-configure/SKILL.md +0 -117
  166. package/skills/data360-secondary-index-mcp-configure/SKILL.md +0 -126
  167. package/skills/data360-segment-mcp-configure/SKILL.md +0 -159
  168. package/skills/data360-semantic-calculated-dimension-mcp-configure/SKILL.md +0 -93
  169. package/skills/data360-semantic-calculated-measurement-mcp-configure/SKILL.md +0 -93
  170. package/skills/data360-semantic-data-object-mcp-configure/SKILL.md +0 -93
  171. package/skills/data360-semantic-dimension-mcp-configure/SKILL.md +0 -38
  172. package/skills/data360-semantic-engine-mcp-configure/SKILL.md +0 -62
  173. package/skills/data360-semantic-measurement-mcp-configure/SKILL.md +0 -38
  174. package/skills/data360-semantic-metric-mcp-configure/SKILL.md +0 -93
  175. package/skills/data360-semantic-model-mcp-configure/SKILL.md +0 -115
  176. package/skills/data360-standard-mapping-mcp-configure/SKILL.md +0 -38
  177. package/skills/data360-tenant-lifecycle-mcp-configure/SKILL.md +0 -73
  178. package/skills/experience-afv-query/SKILL.md +0 -234
  179. package/skills/experience-agentforce-vibes-in-react-configure/SKILL.md +0 -63
  180. package/skills/experience-apex-components-configure/SKILL.md +0 -69
  181. package/skills/experience-apex-pages-configure/SKILL.md +0 -107
  182. package/skills/experience-app-home-configure/SKILL.md +0 -76
  183. package/skills/experience-aura-lightning-out-access-configure/SKILL.md +0 -58
  184. package/skills/experience-briefcase-configure/SKILL.md +0 -287
  185. package/skills/experience-community-flexi-page-list-create/SKILL.md +0 -74
  186. package/skills/experience-community-template-definition-list-query/SKILL.md +0 -48
  187. package/skills/experience-community-theme-definition-list-query/SKILL.md +0 -38
  188. package/skills/experience-content-assets-configure/SKILL.md +0 -86
  189. package/skills/experience-custom-domain-create/SKILL.md +0 -727
  190. package/skills/experience-defer-rendering-workspace-page-setup-configure/SKILL.md +0 -41
  191. package/skills/experience-field-service-app-builder-configure/SKILL.md +0 -187
  192. package/skills/experience-flow-category-configure/SKILL.md +0 -117
  193. package/skills/experience-formula-configure/SKILL.md +0 -358
  194. package/skills/experience-global-actions-configure/SKILL.md +0 -69
  195. package/skills/experience-global-publisher-layouts-configure/SKILL.md +0 -79
  196. package/skills/experience-instrumentation-configure/SKILL.md +0 -64
  197. package/skills/experience-lex-engagement-configure/SKILL.md +0 -50
  198. package/skills/experience-lightning-bolt-open/SKILL.md +0 -12
  199. package/skills/experience-lightning-out-configure/SKILL.md +0 -129
  200. package/skills/experience-lightning-preview-configure/SKILL.md +0 -67
  201. package/skills/experience-lightning-types-query/SKILL.md +0 -98
  202. package/skills/experience-malware-scan-configure/SKILL.md +0 -71
  203. package/skills/experience-my-salesforce-configure/SKILL.md +0 -126
  204. package/skills/experience-navigation-menus-configure/SKILL.md +0 -235
  205. package/skills/experience-notification-types-configure/SKILL.md +0 -206
  206. package/skills/experience-notifications-configure/SKILL.md +0 -75
  207. package/skills/experience-record-discovery-query/SKILL.md +0 -227
  208. package/skills/experience-regenerate-previews-open/SKILL.md +0 -94
  209. package/skills/experience-sales-cloud-mab-configure/SKILL.md +0 -254
  210. package/skills/experience-schema-builder-open/SKILL.md +0 -38
  211. package/skills/experience-simple-record-home-configure/SKILL.md +0 -110
  212. package/skills/experience-static-resources-configure/SKILL.md +0 -74
  213. package/skills/field-service-setup-coordinate/SKILL.md +0 -62
  214. package/skills/field-service-work-plan-configure/SKILL.md +0 -253
  215. package/skills/fsc-actionable-segmentation-settings-configure/SKILL.md +0 -180
  216. package/skills/fsc-digital-origination-bre-decision-matrix-foundation-create/SKILL.md +0 -196
  217. package/skills/fsc-digital-origination-bre-disclosures-consent-configure/SKILL.md +0 -106
  218. package/skills/fsc-digital-origination-bre-document-upload-configure/SKILL.md +0 -96
  219. package/skills/fsc-digital-origination-bre-permissions-assign/SKILL.md +0 -111
  220. package/skills/fsc-digital-origination-bre-setup-coordinate/SKILL.md +0 -250
  221. package/skills/fsc-digital-origination-bre-stp-eligibility-configure/SKILL.md +0 -122
  222. package/skills/fsc-digital-origination-coordinate/SKILL.md +0 -653
  223. package/skills/fsc-digital-origination-demo-run/SKILL.md +0 -225
  224. package/skills/fsc-digital-origination-execution-guardrails-validate/SKILL.md +0 -112
  225. package/skills/fsc-digital-origination-initial-setup-configure/SKILL.md +0 -396
  226. package/skills/fsc-digital-origination-pricing-setup-coordinate/SKILL.md +0 -336
  227. package/skills/fsc-digital-origination-pricing-setup-data-foundation-create/SKILL.md +0 -208
  228. package/skills/fsc-digital-origination-pricing-setup-procedure-create/SKILL.md +0 -375
  229. package/skills/fsc-digital-origination-product-setup-act1-permissions-assign/SKILL.md +0 -83
  230. package/skills/fsc-digital-origination-product-setup-coordinate/SKILL.md +0 -248
  231. package/skills/fsc-digital-origination-sample-data-create/SKILL.md +0 -206
  232. package/skills/fsc-document-checklist-settings-configure/SKILL.md +0 -57
  233. package/skills/fsc-flexible-hierarchy-configure/SKILL.md +0 -148
  234. package/skills/fsc-flexible-hierarchy-foundation-configure/SKILL.md +0 -1430
  235. package/skills/fsc-flexible-hierarchy-graph-config-create/SKILL.md +0 -471
  236. package/skills/fsc-flexible-hierarchy-rule-based-graph-deploy/SKILL.md +0 -429
  237. package/skills/fsc-pricing-product-configurator-configure/SKILL.md +0 -150
  238. package/skills/fsc-pricing-salesforce-omnistudio-switch/SKILL.md +0 -123
  239. package/skills/fsc-product-act2-catalog-categories-create/SKILL.md +0 -82
  240. package/skills/fsc-product-act3-attributes-create/SKILL.md +0 -249
  241. package/skills/fsc-product-act4-classification-assignment-create/SKILL.md +0 -196
  242. package/skills/fsc-product-act5-considerations-get/SKILL.md +0 -44
  243. package/skills/fsc-stage-management-apex-flow-deploy/SKILL.md +0 -384
  244. package/skills/fsc-stage-management-compliant-data-sharing-configure/SKILL.md +0 -144
  245. package/skills/fsc-stage-management-decision-matrices-create/SKILL.md +0 -107
  246. package/skills/fsc-stage-management-definition-assignments-create/SKILL.md +0 -189
  247. package/skills/fsc-stage-management-definition-create/SKILL.md +0 -108
  248. package/skills/fsc-stage-management-permissions-assign/SKILL.md +0 -143
  249. package/skills/fsc-stage-management-transitions-configure/SKILL.md +0 -139
  250. package/skills/health-cloud-appt-booking-config-configure/SKILL.md +0 -135
  251. package/skills/health-cloud-appt-booking-url-config-configure/SKILL.md +0 -134
  252. package/skills/health-cloud-care-provider-affl-role-config-configure/SKILL.md +0 -136
  253. package/skills/health-cloud-care-provider-search-config-configure/SKILL.md +0 -134
  254. package/skills/health-cloud-care-requests-create/SKILL.md +0 -178
  255. package/skills/health-cloud-initial-configure/SKILL.md +0 -511
  256. package/skills/health-cloud-patient-appointment-scheduling-configure/SKILL.md +0 -1374
  257. package/skills/health-cloud-provider-search-settings-configure/SKILL.md +0 -924
  258. package/skills/health-cloud-referral-management-coordinate/SKILL.md +0 -513
  259. package/skills/health-cloud-timeline-configure/SKILL.md +0 -622
  260. package/skills/health-cloud-virtual-visit-config-configure/SKILL.md +0 -135
  261. package/skills/industries-account-score-settings-query/SKILL.md +0 -78
  262. package/skills/industries-actionable-list-data-sources-dmo-configure/SKILL.md +0 -177
  263. package/skills/industries-ad-product-availability-search/SKILL.md +0 -399
  264. package/skills/industries-advanced-account-forecast-settings-configure/SKILL.md +0 -628
  265. package/skills/industries-advanced-therapy-management-settings-configure/SKILL.md +0 -73
  266. package/skills/industries-atm-settings-starter-configure/SKILL.md +0 -76
  267. package/skills/industries-batch-document-ai-configure/SKILL.md +0 -196
  268. package/skills/industries-behavioral-health-app-settings-configure/SKILL.md +0 -71
  269. package/skills/industries-branch-management-settings-configure/SKILL.md +0 -89
  270. package/skills/industries-bre-decision-table-access-configure/SKILL.md +0 -367
  271. package/skills/industries-brokerage-settings-configure/SKILL.md +0 -41
  272. package/skills/industries-calendar-sync-settings-configure/SKILL.md +0 -89
  273. package/skills/industries-care-request-settings-configure/SKILL.md +0 -218
  274. package/skills/industries-case-management-intelligence-settings-configure/SKILL.md +0 -54
  275. package/skills/industries-catalog-process-attributes-products-configure/SKILL.md +0 -380
  276. package/skills/industries-catalog-process-fulfillment-configure/SKILL.md +0 -216
  277. package/skills/industries-catalog-process-intake-configure/SKILL.md +0 -219
  278. package/skills/industries-catalog-process-knowledge-configure/SKILL.md +0 -153
  279. package/skills/industries-catalog-process-preprocessor-configure/SKILL.md +0 -168
  280. package/skills/industries-cds-general-settings-configure/SKILL.md +0 -69
  281. package/skills/industries-claim-financial-settings-configure/SKILL.md +0 -169
  282. package/skills/industries-clinical-data-model-settings-configure/SKILL.md +0 -136
  283. package/skills/industries-clinical-data-model-settings-starter-configure/SKILL.md +0 -105
  284. package/skills/industries-collection-plan-settings-configure/SKILL.md +0 -132
  285. package/skills/industries-comms-service-console-settings-configure/SKILL.md +0 -159
  286. package/skills/industries-compliance-configure/SKILL.md +0 -102
  287. package/skills/industries-compliance-document-extraction-setup-configure/SKILL.md +0 -76
  288. package/skills/industries-contact-center-app-layout-configure/SKILL.md +0 -88
  289. package/skills/industries-contact-center-components-configure/SKILL.md +0 -96
  290. package/skills/industries-contact-center-path-knowledge-configure/SKILL.md +0 -95
  291. package/skills/industries-contact-center-user-access-assign/SKILL.md +0 -96
  292. package/skills/industries-course-waitlist-config-configure/SKILL.md +0 -162
  293. package/skills/industries-crisis-center-settings-configure/SKILL.md +0 -84
  294. package/skills/industries-custom-object-settings-configure/SKILL.md +0 -94
  295. package/skills/industries-data-cloud-integration-configure/SKILL.md +0 -88
  296. package/skills/industries-data-space-feature-mappings-configure/SKILL.md +0 -245
  297. package/skills/industries-decision-matrix-builder-configure/SKILL.md +0 -78
  298. package/skills/industries-decision-table-hbase-configure/SKILL.md +0 -87
  299. package/skills/industries-decision-table-version-configure/SKILL.md +0 -74
  300. package/skills/industries-decision-tables-builder-configure/SKILL.md +0 -253
  301. package/skills/industries-decision-tables-configure/SKILL.md +0 -439
  302. package/skills/industries-energy-utilities-configure/SKILL.md +0 -251
  303. package/skills/industries-eu-cloud-multisite-configure/SKILL.md +0 -1008
  304. package/skills/industries-eu-new-connections-configure/SKILL.md +0 -30
  305. package/skills/industries-explainability-msg-template-configure/SKILL.md +0 -135
  306. package/skills/industries-expression-set-message-token-configure/SKILL.md +0 -135
  307. package/skills/industries-field-service-settings-configure/SKILL.md +0 -82
  308. package/skills/industries-form-framework-settings-configure/SKILL.md +0 -30
  309. package/skills/industries-fsc-ai-settings-configure/SKILL.md +0 -57
  310. package/skills/industries-fsc-association-engine-settings-configure/SKILL.md +0 -172
  311. package/skills/industries-fsc-b2b-settings-configure/SKILL.md +0 -61
  312. package/skills/industries-fsc-insurance-settings-configure/SKILL.md +0 -58
  313. package/skills/industries-fsc-visa-fulfillment-setup-configure/SKILL.md +0 -103
  314. package/skills/industries-fsc-wealth-agent-settings-configure/SKILL.md +0 -117
  315. package/skills/industries-fsc-wealth-settings-configure/SKILL.md +0 -99
  316. package/skills/industries-fundraising-gift-entry-settings-configure/SKILL.md +0 -120
  317. package/skills/industries-fundraising-rfm-configure/SKILL.md +0 -128
  318. package/skills/industries-fundraising-settings-configure/SKILL.md +0 -145
  319. package/skills/industries-fundraising-source-code-gen-configure/SKILL.md +0 -299
  320. package/skills/industries-google-maps-api-key-settings-configure/SKILL.md +0 -87
  321. package/skills/industries-grantmaking-intelligence-settings-open/SKILL.md +0 -58
  322. package/skills/industries-hc-score-category-settings-configure/SKILL.md +0 -167
  323. package/skills/industries-health-engagement-settings-configure/SKILL.md +0 -218
  324. package/skills/industries-home-health-agentforce-setup-configure/SKILL.md +0 -131
  325. package/skills/industries-home-health-bundling-policy-create/SKILL.md +0 -50
  326. package/skills/industries-home-health-entity-labels-configure/SKILL.md +0 -29
  327. package/skills/industries-home-health-fsl-package-deploy/SKILL.md +0 -71
  328. package/skills/industries-home-health-fsl-settings-validate/SKILL.md +0 -27
  329. package/skills/industries-home-health-guided-setup-care-and-skill-get/SKILL.md +0 -80
  330. package/skills/industries-home-health-guided-setup-configure/SKILL.md +0 -836
  331. package/skills/industries-home-health-guided-setup-enable-org-fsl-get/SKILL.md +0 -55
  332. package/skills/industries-home-health-guided-setup-get-org-ready-get/SKILL.md +0 -61
  333. package/skills/industries-home-health-licenses-assign/SKILL.md +0 -27
  334. package/skills/industries-home-health-operating-hours-create/SKILL.md +0 -40
  335. package/skills/industries-home-health-scheduling-policy-create/SKILL.md +0 -41
  336. package/skills/industries-home-health-service-objective-create/SKILL.md +0 -22
  337. package/skills/industries-home-health-skills-create/SKILL.md +0 -31
  338. package/skills/industries-home-health-users-create/SKILL.md +0 -29
  339. package/skills/industries-icm-act3-toggles-configure/SKILL.md +0 -198
  340. package/skills/industries-icm-act5-genai-suggested-assessments-configure/SKILL.md +0 -361
  341. package/skills/industries-icm-act6-mcg-integration-configure/SKILL.md +0 -550
  342. package/skills/industries-integrated-care-management-configure/SKILL.md +0 -168
  343. package/skills/industries-object-enablement-configure/SKILL.md +0 -86
  344. package/skills/industries-tpm-system-processing-service-configure/SKILL.md +0 -64
  345. package/skills/integration-apex-settings-configure/SKILL.md +0 -61
  346. package/skills/marketing-e360-email-archiving-configure/SKILL.md +0 -73
  347. package/skills/platform-custom-permissions-configure/SKILL.md +0 -687
  348. package/skills/platform-label-workbench-import-create/SKILL.md +0 -67
  349. 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[]}.