@salesforce/afv-skills 1.7.5 → 1.9.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.
- package/package.json +1 -1
- package/skills/activating-datacloud/CREDITS.md +5 -0
- package/skills/activating-datacloud/README.md +39 -0
- package/skills/activating-datacloud/SKILL.md +118 -0
- package/skills/analyzing-omnistudio-dependencies/CREDITS.md +5 -0
- package/skills/analyzing-omnistudio-dependencies/SKILL.md +477 -0
- package/skills/analyzing-omnistudio-dependencies/references/dependency-patterns.md +508 -0
- package/skills/analyzing-omnistudio-dependencies/references/namespace-guide.md +300 -0
- package/skills/building-omnistudio-callable-apex/CREDITS.md +9 -0
- package/skills/building-omnistudio-callable-apex/README.md +80 -0
- package/skills/building-omnistudio-callable-apex/SKILL.md +276 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_callable_openinterface.cls +40 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_callable_vanilla.cls +32 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_migration.cls +54 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_openinterface.cls +45 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_test_class.cls +65 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallable.cls +115 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallableTest.cls +189 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/TRANSCRIPT.md +115 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallable.cls +74 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallableTest.cls +146 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomRemoteClass.cls +16 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +120 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallable.cls +73 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallableTest.cls +128 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomVlocityOpenInterface2.cls +23 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +75 -0
- package/skills/building-omnistudio-datamapper/CREDITS.md +5 -0
- package/skills/building-omnistudio-datamapper/SKILL.md +270 -0
- package/skills/building-omnistudio-datamapper/assets/completion-summary-template.md +28 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-extract.json +6 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-item.json +12 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-load.json +6 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-transform.json +6 -0
- package/skills/building-omnistudio-datamapper/references/best-practices.md +277 -0
- package/skills/building-omnistudio-datamapper/references/naming-conventions.md +145 -0
- package/skills/building-omnistudio-flexcard/CREDITS.md +5 -0
- package/skills/building-omnistudio-flexcard/SKILL.md +325 -0
- package/skills/building-omnistudio-flexcard/assets/omni-ui-card.json +10 -0
- package/skills/building-omnistudio-flexcard/references/best-practices.md +291 -0
- package/skills/building-omnistudio-flexcard/references/data-binding-guide.md +311 -0
- package/skills/building-omnistudio-flexcard/references/scoring-rubric.md +66 -0
- package/skills/building-omnistudio-flexcard/scripts/flexcard-commands.sh +24 -0
- package/skills/building-omnistudio-integration-procedure/CREDITS.md +5 -0
- package/skills/building-omnistudio-integration-procedure/SKILL.md +275 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-dr-extract.json +10 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-set-values.json +10 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-ip.json +12 -0
- package/skills/building-omnistudio-integration-procedure/assets/scoring-report-format.txt +14 -0
- package/skills/building-omnistudio-integration-procedure/references/best-practices.md +388 -0
- package/skills/building-omnistudio-integration-procedure/references/element-types.md +588 -0
- package/skills/building-omnistudio-integration-procedure/scripts/cli-commands.sh +18 -0
- package/skills/building-omnistudio-omniscript/CREDITS.md +5 -0
- package/skills/building-omnistudio-omniscript/SKILL.md +367 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-element-step.json +10 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-element-text-block.json +11 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-omniscript.json +12 -0
- package/skills/building-omnistudio-omniscript/references/best-practices.md +480 -0
- package/skills/building-omnistudio-omniscript/references/element-types.md +1172 -0
- package/skills/building-omnistudio-omniscript/scripts/check-duplicate-omniscript.sh +13 -0
- package/skills/building-omnistudio-omniscript/scripts/cli-reference.sh +21 -0
- package/skills/building-omnistudio-omniscript/scripts/deploy-omniscript.sh +29 -0
- package/skills/building-sf-integrations/CREDITS.md +5 -0
- package/skills/building-sf-integrations/README.md +95 -0
- package/skills/building-sf-integrations/SKILL.md +192 -0
- package/skills/building-sf-integrations/assets/callouts/callout-retry-handler.cls +167 -0
- package/skills/building-sf-integrations/assets/callouts/http-response-handler.cls +257 -0
- package/skills/building-sf-integrations/assets/callouts/rest-queueable-callout.cls +262 -0
- package/skills/building-sf-integrations/assets/callouts/rest-sync-callout.cls +211 -0
- package/skills/building-sf-integrations/assets/cdc/cdc-handler.cls +246 -0
- package/skills/building-sf-integrations/assets/cdc/cdc-subscriber-trigger.trigger +139 -0
- package/skills/building-sf-integrations/assets/endpoint-security/example.cspTrustedSite-meta.xml +58 -0
- package/skills/building-sf-integrations/assets/endpoint-security/example.remoteSite-meta.xml +39 -0
- package/skills/building-sf-integrations/assets/external-credentials/jwt-external-credential.externalCredential-meta.xml +90 -0
- package/skills/building-sf-integrations/assets/external-credentials/oauth-external-credential.externalCredential-meta.xml +87 -0
- package/skills/building-sf-integrations/assets/external-services/external-service-operations.md +221 -0
- package/skills/building-sf-integrations/assets/external-services/openapi-registration.externalServiceRegistration-meta.xml +193 -0
- package/skills/building-sf-integrations/assets/named-credentials/certificate-auth.namedCredential-meta.xml +62 -0
- package/skills/building-sf-integrations/assets/named-credentials/custom-auth.namedCredential-meta.xml +71 -0
- package/skills/building-sf-integrations/assets/named-credentials/oauth-client-credentials.namedCredential-meta.xml +51 -0
- package/skills/building-sf-integrations/assets/named-credentials/oauth-jwt-bearer.namedCredential-meta.xml +67 -0
- package/skills/building-sf-integrations/assets/platform-events/event-publisher.cls +191 -0
- package/skills/building-sf-integrations/assets/platform-events/event-subscriber-action.cls +295 -0
- package/skills/building-sf-integrations/assets/platform-events/event-subscriber-trigger.trigger +108 -0
- package/skills/building-sf-integrations/assets/platform-events/platform-event-definition.object-meta.xml +124 -0
- package/skills/building-sf-integrations/assets/soap/soap-callout-service.cls +186 -0
- package/skills/building-sf-integrations/assets/soap/wsdl2apex-guide.md +213 -0
- package/skills/building-sf-integrations/hooks/scripts/suggest_credential_setup.py +271 -0
- package/skills/building-sf-integrations/hooks/scripts/validate_integration.py +363 -0
- package/skills/building-sf-integrations/references/callout-patterns.md +719 -0
- package/skills/building-sf-integrations/references/cdc-guide.md +288 -0
- package/skills/building-sf-integrations/references/cli-reference.md +94 -0
- package/skills/building-sf-integrations/references/event-driven-architecture-guide.md +266 -0
- package/skills/building-sf-integrations/references/event-patterns.md +838 -0
- package/skills/building-sf-integrations/references/external-services-guide.md +303 -0
- package/skills/building-sf-integrations/references/messaging-api-v2.md +609 -0
- package/skills/building-sf-integrations/references/named-credentials-automation.md +201 -0
- package/skills/building-sf-integrations/references/named-credentials-guide.md +173 -0
- package/skills/building-sf-integrations/references/platform-events-guide.md +288 -0
- package/skills/building-sf-integrations/references/rest-callout-patterns.md +288 -0
- package/skills/building-sf-integrations/references/scoring-rubric.md +59 -0
- package/skills/building-sf-integrations/references/security-best-practices.md +248 -0
- package/skills/building-sf-integrations/scripts/README.md +100 -0
- package/skills/building-sf-integrations/scripts/configure-named-credential.sh +236 -0
- package/skills/building-sf-integrations/scripts/set-api-credential.sh +146 -0
- package/skills/building-sf-integrations/scripts/templates/setup-credentials-with-csp.sh +158 -0
- package/skills/building-ui-bundle-frontend/SKILL.md +2 -0
- package/skills/configuring-connected-apps/CREDITS.md +3 -0
- package/skills/configuring-connected-apps/README.md +99 -0
- package/skills/configuring-connected-apps/SKILL.md +224 -0
- package/skills/configuring-connected-apps/assets/connected-app-basic.xml +29 -0
- package/skills/configuring-connected-apps/assets/connected-app-canvas.xml +62 -0
- package/skills/configuring-connected-apps/assets/connected-app-jwt.xml +49 -0
- package/skills/configuring-connected-apps/assets/connected-app-oauth.xml +65 -0
- package/skills/configuring-connected-apps/assets/eca-global-oauth.xml +36 -0
- package/skills/configuring-connected-apps/assets/eca-oauth-settings.xml +36 -0
- package/skills/configuring-connected-apps/assets/eca-policies.xml +36 -0
- package/skills/configuring-connected-apps/assets/external-client-app.xml +35 -0
- package/skills/configuring-connected-apps/references/example-usage.md +256 -0
- package/skills/configuring-connected-apps/references/migration-guide.md +328 -0
- package/skills/configuring-connected-apps/references/oauth-flows-reference.md +660 -0
- package/skills/configuring-connected-apps/references/security-checklist.md +209 -0
- package/skills/configuring-connected-apps/references/testing-validation-guide.md +275 -0
- package/skills/connecting-datacloud/CREDITS.md +5 -0
- package/skills/connecting-datacloud/README.md +59 -0
- package/skills/connecting-datacloud/SKILL.md +155 -0
- package/skills/connecting-datacloud/examples/connections/heroku-postgres.json +15 -0
- package/skills/connecting-datacloud/examples/connections/ingest-api-connection.json +5 -0
- package/skills/connecting-datacloud/examples/connections/ingest-api-schema.json +31 -0
- package/skills/connecting-datacloud/examples/connections/redshift.json +16 -0
- package/skills/connecting-datacloud/examples/connections/sharepoint-unstructured.json +20 -0
- package/skills/connecting-datacloud/examples/connections/snowflake-connection.json +42 -0
- package/skills/debugging-apex-logs/CREDITS.md +22 -0
- package/skills/debugging-apex-logs/README.md +74 -0
- package/skills/debugging-apex-logs/SKILL.md +172 -0
- package/skills/debugging-apex-logs/assets/benchmarking-template.cls +327 -0
- package/skills/debugging-apex-logs/assets/cpu-heap-optimization.cls +307 -0
- package/skills/debugging-apex-logs/assets/dml-in-loop-fix.cls +219 -0
- package/skills/debugging-apex-logs/assets/null-pointer-fix.cls +252 -0
- package/skills/debugging-apex-logs/assets/soql-in-loop-fix.cls +157 -0
- package/skills/debugging-apex-logs/references/analysis-playbook.md +53 -0
- package/skills/debugging-apex-logs/references/benchmarking-guide.md +287 -0
- package/skills/debugging-apex-logs/references/cli-commands.md +368 -0
- package/skills/debugging-apex-logs/references/common-issues.md +68 -0
- package/skills/debugging-apex-logs/references/debug-log-reference.md +328 -0
- package/skills/debugging-apex-logs/references/log-analysis-tools.md +248 -0
- package/skills/debugging-apex-logs/references/scoring-rubric.md +21 -0
- package/skills/deploying-metadata/CREDITS.md +25 -0
- package/skills/deploying-metadata/README.md +104 -0
- package/skills/deploying-metadata/SKILL.md +214 -0
- package/skills/deploying-metadata/assets/destructiveChanges.xml +143 -0
- package/skills/deploying-metadata/assets/package.xml +121 -0
- package/skills/deploying-metadata/references/agent-deployment-guide.md +628 -0
- package/skills/deploying-metadata/references/deploy.sh +73 -0
- package/skills/deploying-metadata/references/deployment-report-template.md +89 -0
- package/skills/deploying-metadata/references/deployment-workflows.md +395 -0
- package/skills/deploying-metadata/references/orchestration.md +183 -0
- package/skills/deploying-metadata/references/trigger-deployment-safety.md +376 -0
- package/skills/deploying-omnistudio-datapacks/CREDITS.md +5 -0
- package/skills/deploying-omnistudio-datapacks/README.md +88 -0
- package/skills/deploying-omnistudio-datapacks/SKILL.md +174 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/TRANSCRIPT.md +124 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +11 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md +142 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml +10 -0
- package/skills/deploying-omnistudio-datapacks/references/job-file-template.md +42 -0
- package/skills/deploying-omnistudio-datapacks/references/troubleshooting-matrix.md +24 -0
- package/skills/deploying-ui-bundle/SKILL.md +2 -0
- package/skills/developing-agentforce/SKILL.md +1 -1
- package/skills/developing-agentforce/assets/metadata/http-callout-flow.flow-meta.xml +1 -1
- package/skills/developing-agentforce/references/actions-reference.md +8 -8
- package/skills/fetching-salesforce-docs/README.md +66 -0
- package/skills/fetching-salesforce-docs/SKILL.md +209 -0
- package/skills/fetching-salesforce-docs/requirements.txt +2 -0
- package/skills/fetching-salesforce-docs/scripts/extract_help_salesforce.py +497 -0
- package/skills/fetching-salesforce-docs/scripts/extract_salesforce_doc.py +357 -0
- package/skills/fetching-salesforce-docs/scripts/runtime_bootstrap.py +58 -0
- package/skills/generating-apex/CREDITS.md +1 -26
- package/skills/generating-apex/SKILL.md +4 -2
- package/skills/generating-apex-test/CREDITS.md +2 -27
- package/skills/generating-apex-test/SKILL.md +3 -1
- package/skills/generating-custom-application/SKILL.md +2 -0
- package/skills/generating-custom-field/SKILL.md +3 -1
- package/skills/generating-custom-lightning-type/SKILL.md +2 -0
- package/skills/generating-custom-object/SKILL.md +3 -1
- package/skills/generating-custom-tab/SKILL.md +3 -1
- package/skills/generating-flexipage/SKILL.md +2 -0
- package/skills/generating-flow/SKILL.md +2 -0
- package/skills/generating-lightning-app/SKILL.md +1 -1
- package/skills/generating-list-view/SKILL.md +2 -0
- package/skills/generating-lwc-components/CREDITS.md +5 -0
- package/skills/generating-lwc-components/README.md +126 -0
- package/skills/generating-lwc-components/SKILL.md +191 -0
- package/skills/generating-lwc-components/assets/apex-controller/LwcController.cls +327 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.css +72 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.html +111 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.js +163 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.js-meta.xml +137 -0
- package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.html +111 -0
- package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.js +367 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.css +63 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.html +154 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js +348 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js-meta.xml +87 -0
- package/skills/generating-lwc-components/assets/form-component/formComponent.html +165 -0
- package/skills/generating-lwc-components/assets/form-component/formComponent.js +275 -0
- package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.html +100 -0
- package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.js +336 -0
- package/skills/generating-lwc-components/assets/jest-test/componentName.test.js.example +371 -0
- package/skills/generating-lwc-components/assets/message-channel/RecordSelected.messageChannel-meta.xml +71 -0
- package/skills/generating-lwc-components/assets/message-channel/lmsPublisher.js +103 -0
- package/skills/generating-lwc-components/assets/message-channel/lmsSubscriber.js +181 -0
- package/skills/generating-lwc-components/assets/modal-component/modalComponent.html +85 -0
- package/skills/generating-lwc-components/assets/modal-component/modalComponent.js +199 -0
- package/skills/generating-lwc-components/assets/record-picker/recordPicker.html +55 -0
- package/skills/generating-lwc-components/assets/record-picker/recordPicker.js +199 -0
- package/skills/generating-lwc-components/assets/state-store/store.js +282 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.css +65 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.html +95 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.js-meta.xml +75 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.test.ts.example +301 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.ts +295 -0
- package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.html +71 -0
- package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.js +316 -0
- package/skills/generating-lwc-components/hooks/scripts/lwc-lsp-validate.py +295 -0
- package/skills/generating-lwc-components/hooks/scripts/post-tool-validate.py +347 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/deprecated_patterns.json +74 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/styling_hooks.json +111 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/valid_slds_classes.json +127 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_linter_wrapper.py +294 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_rules/__init__.py +22 -0
- package/skills/generating-lwc-components/hooks/scripts/template_validator.py +332 -0
- package/skills/generating-lwc-components/hooks/scripts/validate_slds.py +595 -0
- package/skills/generating-lwc-components/references/accessibility-guide.md +843 -0
- package/skills/generating-lwc-components/references/advanced-features.md +108 -0
- package/skills/generating-lwc-components/references/async-notification-patterns.md +661 -0
- package/skills/generating-lwc-components/references/cli-commands.md +545 -0
- package/skills/generating-lwc-components/references/component-patterns.md +1476 -0
- package/skills/generating-lwc-components/references/flow-integration-guide.md +675 -0
- package/skills/generating-lwc-components/references/jest-testing.md +1011 -0
- package/skills/generating-lwc-components/references/lms-guide.md +860 -0
- package/skills/generating-lwc-components/references/lwc-best-practices.md +1310 -0
- package/skills/generating-lwc-components/references/performance-guide.md +861 -0
- package/skills/generating-lwc-components/references/scoring-and-testing.md +116 -0
- package/skills/generating-lwc-components/references/slds-blueprints.json +14389 -0
- package/skills/generating-lwc-components/references/slds-design-guide.md +166 -0
- package/skills/generating-lwc-components/references/state-management.md +642 -0
- package/skills/generating-lwc-components/references/template-anti-patterns.md +948 -0
- package/skills/generating-lwc-components/references/triangle-pattern.md +365 -0
- package/skills/generating-lwc-components/scripts/local-dev-preview.sh +34 -0
- package/skills/generating-mermaid-diagrams/CREDITS.md +46 -0
- package/skills/generating-mermaid-diagrams/README.md +114 -0
- package/skills/generating-mermaid-diagrams/SKILL.md +218 -0
- package/skills/generating-mermaid-diagrams/assets/agentforce/agent-flow.md +313 -0
- package/skills/generating-mermaid-diagrams/assets/architecture/system-landscape.md +351 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/b2b-commerce-erd.md +317 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/campaigns-erd.md +195 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/consent-erd.md +262 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/files-erd.md +266 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/forecasting-erd.md +261 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/fsl-erd.md +332 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/party-model-erd.md +237 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/quote-order-erd.md +277 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/revenue-cloud-erd.md +343 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/sales-cloud-erd.md +192 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/salesforce-erd.md +209 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/scheduler-erd.md +276 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/service-cloud-erd.md +217 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/territory-management-erd.md +241 -0
- package/skills/generating-mermaid-diagrams/assets/integration/api-sequence.md +387 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code-pkce.md +197 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code.md +152 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/client-credentials.md +233 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/device-authorization.md +295 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/jwt-bearer.md +256 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/refresh-token.md +281 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/user-agent-social-sign-on.md +281 -0
- package/skills/generating-mermaid-diagrams/assets/role-hierarchy/user-hierarchy.md +322 -0
- package/skills/generating-mermaid-diagrams/references/color-palette.md +464 -0
- package/skills/generating-mermaid-diagrams/references/diagram-conventions.md +313 -0
- package/skills/generating-mermaid-diagrams/references/erd-conventions.md +320 -0
- package/skills/generating-mermaid-diagrams/references/mermaid-reference.md +434 -0
- package/skills/generating-mermaid-diagrams/references/mermaid-styling.md +81 -0
- package/skills/generating-mermaid-diagrams/references/preview-guide.md +49 -0
- package/skills/generating-mermaid-diagrams/references/usage-examples.md +340 -0
- package/skills/generating-mermaid-diagrams/scripts/README.md +160 -0
- package/skills/generating-mermaid-diagrams/scripts/mermaid_preview.py +654 -0
- package/skills/generating-mermaid-diagrams/scripts/query-org-metadata.py +293 -0
- package/skills/generating-ui-bundle-features/SKILL.md +2 -0
- package/skills/generating-ui-bundle-metadata/SKILL.md +2 -0
- package/skills/generating-ui-bundle-site/SKILL.md +2 -0
- package/skills/generating-validation-rule/SKILL.md +2 -0
- package/skills/generating-visual-diagrams/CREDITS.md +80 -0
- package/skills/generating-visual-diagrams/README.md +83 -0
- package/skills/generating-visual-diagrams/SKILL.md +208 -0
- package/skills/generating-visual-diagrams/assets/architecture/integration-flow.md +55 -0
- package/skills/generating-visual-diagrams/assets/erd/core-objects.md +131 -0
- package/skills/generating-visual-diagrams/assets/erd/custom-objects.md +60 -0
- package/skills/generating-visual-diagrams/assets/lwc/dashboard-card.md +45 -0
- package/skills/generating-visual-diagrams/assets/lwc/data-table.md +57 -0
- package/skills/generating-visual-diagrams/assets/lwc/record-form.md +60 -0
- package/skills/generating-visual-diagrams/assets/review/apex-review.md +57 -0
- package/skills/generating-visual-diagrams/assets/review/lwc-review.md +48 -0
- package/skills/generating-visual-diagrams/references/architect-aesthetic-guide.md +257 -0
- package/skills/generating-visual-diagrams/references/examples-index.md +35 -0
- package/skills/generating-visual-diagrams/references/gemini-cli-setup.md +65 -0
- package/skills/generating-visual-diagrams/references/interview-questions.md +529 -0
- package/skills/generating-visual-diagrams/references/iteration-workflow.md +173 -0
- package/skills/generating-visual-diagrams/scripts/check-prerequisites.sh +101 -0
- package/skills/generating-visual-diagrams/scripts/generate_image.py +243 -0
- package/skills/handling-sf-data/CREDITS.md +5 -0
- package/skills/handling-sf-data/README.md +112 -0
- package/skills/handling-sf-data/SKILL.md +235 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-10000.apex +293 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-200.apex +208 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-500.apex +219 -0
- package/skills/handling-sf-data/assets/bulk/bulk-upsert-external-id.apex +324 -0
- package/skills/handling-sf-data/assets/cleanup/delete-by-created-date.apex +319 -0
- package/skills/handling-sf-data/assets/cleanup/delete-by-name.apex +240 -0
- package/skills/handling-sf-data/assets/cleanup/delete-test-data.apex +311 -0
- package/skills/handling-sf-data/assets/cleanup/rollback-transaction.apex +266 -0
- package/skills/handling-sf-data/assets/csv/account-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/contact-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/custom-object-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/opportunity-import.csv +11 -0
- package/skills/handling-sf-data/assets/factories/account-factory.apex +165 -0
- package/skills/handling-sf-data/assets/factories/case-factory.apex +237 -0
- package/skills/handling-sf-data/assets/factories/contact-factory.apex +168 -0
- package/skills/handling-sf-data/assets/factories/custom-object-factory.apex +260 -0
- package/skills/handling-sf-data/assets/factories/event-factory.apex +275 -0
- package/skills/handling-sf-data/assets/factories/hierarchy-factory.apex +372 -0
- package/skills/handling-sf-data/assets/factories/lead-factory.apex +190 -0
- package/skills/handling-sf-data/assets/factories/opportunity-factory.apex +206 -0
- package/skills/handling-sf-data/assets/factories/task-factory.apex +246 -0
- package/skills/handling-sf-data/assets/factories/user-factory.apex +278 -0
- package/skills/handling-sf-data/assets/json/account-contact-tree.json +130 -0
- package/skills/handling-sf-data/assets/json/account-opportunity-tree.json +110 -0
- package/skills/handling-sf-data/assets/json/full-hierarchy-tree.json +188 -0
- package/skills/handling-sf-data/assets/soql/aggregate.soql +226 -0
- package/skills/handling-sf-data/assets/soql/child-to-parent.soql +162 -0
- package/skills/handling-sf-data/assets/soql/parent-to-child.soql +153 -0
- package/skills/handling-sf-data/assets/soql/polymorphic.soql +198 -0
- package/skills/handling-sf-data/assets/soql/subquery.soql +287 -0
- package/skills/handling-sf-data/references/anonymous-apex-guide.md +98 -0
- package/skills/handling-sf-data/references/bulk-operations-guide.md +94 -0
- package/skills/handling-sf-data/references/bulk-testing-example.md +194 -0
- package/skills/handling-sf-data/references/cleanup-rollback-example.md +322 -0
- package/skills/handling-sf-data/references/cleanup-rollback-guide.md +84 -0
- package/skills/handling-sf-data/references/crud-workflow-example.md +183 -0
- package/skills/handling-sf-data/references/governor-limits-reference.md +74 -0
- package/skills/handling-sf-data/references/orchestration.md +174 -0
- package/skills/handling-sf-data/references/relationship-query-examples.md +249 -0
- package/skills/handling-sf-data/references/sf-cli-data-commands.md +158 -0
- package/skills/handling-sf-data/references/soql-relationship-guide.md +84 -0
- package/skills/handling-sf-data/references/test-data-best-practices.md +104 -0
- package/skills/handling-sf-data/references/test-data-factory-usage.md +290 -0
- package/skills/handling-sf-data/references/test-data-patterns.md +98 -0
- package/skills/handling-sf-data/scripts/soql_validator.py +292 -0
- package/skills/handling-sf-data/scripts/validate_data_operation.py +379 -0
- package/skills/harmonizing-datacloud/CREDITS.md +3 -0
- package/skills/harmonizing-datacloud/README.md +31 -0
- package/skills/harmonizing-datacloud/SKILL.md +117 -0
- package/skills/implementing-ui-bundle-agentforce-conversation-client/SKILL.md +1 -1
- package/skills/implementing-ui-bundle-file-upload/SKILL.md +2 -0
- package/skills/modeling-omnistudio-epc-catalog/CREDITS.md +14 -0
- package/skills/modeling-omnistudio-epc-catalog/README.md +89 -0
- package/skills/modeling-omnistudio-epc-catalog/SKILL.md +395 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/attribute-assignment-template.json +402 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/compiled-attribute-overrides-template.json +43 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/completion-block-template.txt +8 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/decomposition-relationships-template.json +233 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.json +514 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json +21 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DataPack.json +649 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DecompositionRelationships.json +200 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ObjectFieldAttributes.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OrchestrationScenarios.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OverrideDefinitions.json +266 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ParentKeys.json +23 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PriceListEntries.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ProductChildItems.json +34 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json +21 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.json +410 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DataPack.json +535 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ObjectFieldAttributes.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_OrchestrationScenarios.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ParentKeys.json +23 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PriceListEntries.json +220 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ProductChildItems.json +414 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.json +382 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DataPack.json +565 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json +104 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ParentKeys.json +13 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PriceListEntries.json +106 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ProductChildItems.json +72 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_AttributeAssignments.json +142 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DataPack.json +377 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ObjectFieldAttributes.json +36 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ParentKeys.json +8 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PriceListEntries.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ProductChildItems.json +34 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/object-field-attributes-template.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/orchestration-scenarios-template.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/override-definitions-template.json +134 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/parent-keys-template.json +29 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/price-list-entries-template.json +158 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/pricebook-entries-template.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/product-child-item-template.json +338 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/product2-offer-template.json +527 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/.gitkeep +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_AttributeAssignments.json +95 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_CompiledAttributeOverrides.json +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DataPack.json +214 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DecompositionRelationships.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ObjectFieldAttributes.json +98 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OrchestrationScenarios.json +22 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OverrideDefinitions.json +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ParentKeys.json +13 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PriceListEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PricebookEntries.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ProductChildItems.json +110 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/TRANSCRIPT.md +58 -0
- package/skills/modeling-omnistudio-epc-catalog/references/epc-field-guide.md +90 -0
- package/skills/modeling-omnistudio-epc-catalog/references/naming-conventions.md +80 -0
- package/skills/modeling-omnistudio-epc-catalog/references/scoring-model.md +57 -0
- package/skills/modeling-omnistudio-epc-catalog/scripts/cli-validation-commands.sh +19 -0
- package/skills/modeling-omnistudio-epc-catalog/scripts/sample-invocations.sh +18 -0
- package/skills/observing-agentforce/SKILL.md +1 -1
- package/skills/orchestrating-datacloud/CREDITS.md +15 -0
- package/skills/orchestrating-datacloud/README.md +129 -0
- package/skills/orchestrating-datacloud/SKILL.md +236 -0
- package/skills/orchestrating-datacloud/UPSTREAM.md +45 -0
- package/skills/orchestrating-datacloud/assets/definitions/activation-target.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/activation.template.json +7 -0
- package/skills/orchestrating-datacloud/assets/definitions/calculated-insight.template.json +7 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-action-target.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-action.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-graph.template.json +21 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-stream.template.json +55 -0
- package/skills/orchestrating-datacloud/assets/definitions/dmo.template.json +17 -0
- package/skills/orchestrating-datacloud/assets/definitions/identity-resolution.template.json +30 -0
- package/skills/orchestrating-datacloud/assets/definitions/mapping.template.json +14 -0
- package/skills/orchestrating-datacloud/assets/definitions/relationship.template.json +12 -0
- package/skills/orchestrating-datacloud/assets/definitions/search-index.template.json +9 -0
- package/skills/orchestrating-datacloud/assets/definitions/segment.template.json +16 -0
- package/skills/orchestrating-datacloud/references/feature-readiness.md +157 -0
- package/skills/orchestrating-datacloud/references/plugin-setup.md +140 -0
- package/skills/orchestrating-datacloud/scripts/bootstrap-plugin.sh +53 -0
- package/skills/orchestrating-datacloud/scripts/diagnose-org.mjs +511 -0
- package/skills/orchestrating-datacloud/scripts/generate-manifest.mjs +68 -0
- package/skills/orchestrating-datacloud/scripts/verify-plugin.sh +58 -0
- package/skills/preparing-datacloud/CREDITS.md +7 -0
- package/skills/preparing-datacloud/README.md +51 -0
- package/skills/preparing-datacloud/SKILL.md +191 -0
- package/skills/preparing-datacloud/examples/ingestion-api/.env.example +8 -0
- package/skills/preparing-datacloud/examples/ingestion-api/README.md +48 -0
- package/skills/preparing-datacloud/examples/ingestion-api/send-data.py +144 -0
- package/skills/querying-soql/CREDITS.md +21 -0
- package/skills/querying-soql/README.md +41 -0
- package/skills/querying-soql/SKILL.md +143 -0
- package/skills/querying-soql/assets/aggregate-queries.soql +242 -0
- package/skills/querying-soql/assets/basic-queries.soql +188 -0
- package/skills/querying-soql/assets/bulkified-query-pattern.cls +280 -0
- package/skills/querying-soql/assets/optimization-patterns.soql +259 -0
- package/skills/querying-soql/assets/relationship-queries.soql +203 -0
- package/skills/querying-soql/assets/selector-class.cls +219 -0
- package/skills/querying-soql/references/anti-patterns.md +348 -0
- package/skills/querying-soql/references/cli-commands.md +358 -0
- package/skills/querying-soql/references/field-coverage-rules.md +514 -0
- package/skills/querying-soql/references/query-optimization.md +142 -0
- package/skills/querying-soql/references/selector-patterns.md +479 -0
- package/skills/querying-soql/references/soql-reference.md +227 -0
- package/skills/querying-soql/references/soql-syntax-reference.md +208 -0
- package/skills/querying-soql/scripts/post-tool-validate.py +322 -0
- package/skills/retrieving-datacloud/CREDITS.md +7 -0
- package/skills/retrieving-datacloud/README.md +44 -0
- package/skills/retrieving-datacloud/SKILL.md +120 -0
- package/skills/retrieving-datacloud/examples/search-indexes/hybrid-structured.json +44 -0
- package/skills/retrieving-datacloud/examples/search-indexes/vector-knowledge.json +43 -0
- package/skills/running-apex-tests/CREDITS.md +22 -0
- package/skills/running-apex-tests/README.md +94 -0
- package/skills/running-apex-tests/SKILL.md +158 -0
- package/skills/running-apex-tests/assets/basic-test.cls +169 -0
- package/skills/running-apex-tests/assets/bulk-test.cls +255 -0
- package/skills/running-apex-tests/assets/dml-mock.cls +339 -0
- package/skills/running-apex-tests/assets/mock-callout-test.cls +353 -0
- package/skills/running-apex-tests/assets/stub-provider-example.cls +364 -0
- package/skills/running-apex-tests/assets/test-data-factory.cls +328 -0
- package/skills/running-apex-tests/hooks/scripts/parse-test-results.py +364 -0
- package/skills/running-apex-tests/references/cli-commands.md +289 -0
- package/skills/running-apex-tests/references/mocking-patterns.md +500 -0
- package/skills/running-apex-tests/references/performance-optimization.md +283 -0
- package/skills/running-apex-tests/references/test-fix-loop.md +49 -0
- package/skills/running-apex-tests/references/test-patterns.md +154 -0
- package/skills/running-apex-tests/references/testing-best-practices.md +509 -0
- package/skills/segmenting-datacloud/CREDITS.md +3 -0
- package/skills/segmenting-datacloud/README.md +36 -0
- package/skills/segmenting-datacloud/SKILL.md +115 -0
- package/skills/switching-org/SKILL.md +1 -1
- package/skills/testing-agentforce/SKILL.md +1 -1
- package/skills/uplifting-components-to-slds2/SKILL.md +3 -1
- package/skills/using-ui-bundle-salesforce-data/SKILL.md +2 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
<!-- Parent: configuring-connected-apps/SKILL.md -->
|
|
2
|
+
# Security Checklist for Connected Apps & ECAs
|
|
3
|
+
|
|
4
|
+
Use this checklist before deploying any OAuth application to production.
|
|
5
|
+
|
|
6
|
+
## Pre-Deployment Checklist
|
|
7
|
+
|
|
8
|
+
### OAuth Configuration
|
|
9
|
+
|
|
10
|
+
- [ ] **Callback URLs are specific** (no wildcards)
|
|
11
|
+
- [ ] **All URLs use HTTPS** (required for production)
|
|
12
|
+
- [ ] **PKCE is enabled** for public clients (mobile, SPA)
|
|
13
|
+
- [ ] **Consumer secret is protected** (not in source control)
|
|
14
|
+
- [ ] **Minimal scopes selected** (principle of least privilege)
|
|
15
|
+
- [ ] **No deprecated scopes** in use
|
|
16
|
+
|
|
17
|
+
### Token Policies
|
|
18
|
+
|
|
19
|
+
- [ ] **Access token expiration** is configured appropriately
|
|
20
|
+
- [ ] **Refresh token policy** matches use case
|
|
21
|
+
- `infinite` only for trusted server applications
|
|
22
|
+
- `specific_lifetime` for user-facing apps
|
|
23
|
+
- `zero` for JWT Bearer flows
|
|
24
|
+
- [ ] **Token rotation enabled** for ECAs in production
|
|
25
|
+
- [ ] **IP restrictions configured** for server-to-server apps
|
|
26
|
+
|
|
27
|
+
### Access Control
|
|
28
|
+
|
|
29
|
+
- [ ] **Admin pre-authorization** required for sensitive apps
|
|
30
|
+
- [ ] **User assignment via Permission Set** or Profile
|
|
31
|
+
- [ ] **Connected App policies** reviewed in Setup
|
|
32
|
+
- [ ] **High Assurance session** required if needed
|
|
33
|
+
|
|
34
|
+
### External Client Apps (Additional)
|
|
35
|
+
|
|
36
|
+
- [ ] **Distribution state** correctly set (Local vs Packageable)
|
|
37
|
+
- [ ] **Consumer key rotation** enabled for production
|
|
38
|
+
- [ ] **Consumer secret rotation** enabled for production
|
|
39
|
+
- [ ] **Policies file** reviewed after first deployment
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Security Scoring Criteria
|
|
44
|
+
|
|
45
|
+
### Critical (Block Deployment)
|
|
46
|
+
|
|
47
|
+
| Issue | Impact | Fix |
|
|
48
|
+
|-------|--------|-----|
|
|
49
|
+
| Wildcard callback URL | Token hijacking | Use specific URLs |
|
|
50
|
+
| HTTP callback URL | Credential interception | Use HTTPS only |
|
|
51
|
+
| Full scope without justification | Over-privileged access | Use minimal scopes |
|
|
52
|
+
| Consumer secret in code | Credential leak | Use environment variables |
|
|
53
|
+
|
|
54
|
+
### High Priority
|
|
55
|
+
|
|
56
|
+
| Issue | Impact | Fix |
|
|
57
|
+
|-------|--------|-----|
|
|
58
|
+
| PKCE disabled for mobile/SPA | Auth code interception | Enable PKCE |
|
|
59
|
+
| No IP restrictions (server) | Unauthorized access | Configure IP ranges |
|
|
60
|
+
| Infinite refresh tokens (user app) | Long-term compromise | Set expiration |
|
|
61
|
+
| No token rotation (ECA) | Compromised credentials | Enable rotation |
|
|
62
|
+
|
|
63
|
+
### Medium Priority
|
|
64
|
+
|
|
65
|
+
| Issue | Impact | Fix |
|
|
66
|
+
|-------|--------|-----|
|
|
67
|
+
| Missing description | Audit difficulty | Add clear description |
|
|
68
|
+
| Generic contact email | Incident response delay | Use team email |
|
|
69
|
+
| Introspection disabled | Token validation gaps | Enable if needed |
|
|
70
|
+
| No logout URL | Session persistence | Configure logout |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Scope Security Guide
|
|
75
|
+
|
|
76
|
+
### Recommended Scopes by Use Case
|
|
77
|
+
|
|
78
|
+
| Use Case | Recommended Scopes |
|
|
79
|
+
|----------|-------------------|
|
|
80
|
+
| API Integration | `Api`, `RefreshToken` |
|
|
81
|
+
| User Authentication | `OpenID`, `Profile`, `Email` |
|
|
82
|
+
| Full API + Identity | `Api`, `RefreshToken`, `OpenID`, `Profile` |
|
|
83
|
+
| Chatter Integration | `Api`, `ChatterApi` |
|
|
84
|
+
| Server-to-Server | `Api` only |
|
|
85
|
+
|
|
86
|
+
### Scopes to Avoid
|
|
87
|
+
|
|
88
|
+
| Scope | Risk | Alternative |
|
|
89
|
+
|-------|------|-------------|
|
|
90
|
+
| `Full` | Complete access to everything | Use specific scopes |
|
|
91
|
+
| `Web` + `Api` together | Redundant, increases attack surface | Choose one |
|
|
92
|
+
| `RefreshToken` for JWT | Unnecessary, JWT generates new tokens | Remove scope |
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## IP Restriction Policies
|
|
97
|
+
|
|
98
|
+
### Policy Options
|
|
99
|
+
|
|
100
|
+
| Policy | Description | Use Case |
|
|
101
|
+
|--------|-------------|----------|
|
|
102
|
+
| `ENFORCE` | Strict IP enforcement | Production server-to-server |
|
|
103
|
+
| `BYPASS` | No IP restrictions | Development only |
|
|
104
|
+
| `ENFORCE_ACTIVATED_USERS` | Enforce for active users | Mixed environments |
|
|
105
|
+
|
|
106
|
+
### Recommended Configuration
|
|
107
|
+
|
|
108
|
+
```xml
|
|
109
|
+
<!-- Production: Server-to-Server -->
|
|
110
|
+
<oauthPolicy>
|
|
111
|
+
<ipRelaxation>ENFORCE</ipRelaxation>
|
|
112
|
+
</oauthPolicy>
|
|
113
|
+
|
|
114
|
+
<!-- Production: User-Facing -->
|
|
115
|
+
<oauthPolicy>
|
|
116
|
+
<ipRelaxation>ENFORCE_ACTIVATED_USERS</ipRelaxation>
|
|
117
|
+
</oauthPolicy>
|
|
118
|
+
|
|
119
|
+
<!-- Development Only -->
|
|
120
|
+
<oauthPolicy>
|
|
121
|
+
<ipRelaxation>BYPASS</ipRelaxation>
|
|
122
|
+
</oauthPolicy>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Certificate Management (JWT Bearer)
|
|
128
|
+
|
|
129
|
+
### Certificate Requirements
|
|
130
|
+
|
|
131
|
+
- [ ] RSA 2048-bit or higher key size
|
|
132
|
+
- [ ] Valid not-before and not-after dates
|
|
133
|
+
- [ ] Uploaded to Salesforce Certificate and Key Management
|
|
134
|
+
- [ ] Private key stored securely (HSM, Vault, secure storage)
|
|
135
|
+
|
|
136
|
+
### Certificate Rotation
|
|
137
|
+
|
|
138
|
+
1. Generate new certificate before expiration
|
|
139
|
+
2. Upload new certificate to Salesforce
|
|
140
|
+
3. Update Connected App to use new certificate
|
|
141
|
+
4. Update external system with new private key
|
|
142
|
+
5. Test authentication
|
|
143
|
+
6. Remove old certificate after transition period
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Monitoring & Audit
|
|
148
|
+
|
|
149
|
+
### What to Monitor
|
|
150
|
+
|
|
151
|
+
- [ ] **Login History** for Connected App users
|
|
152
|
+
- [ ] **OAuth Usage** in Setup
|
|
153
|
+
- [ ] **Event Monitoring** for token events (Shield required)
|
|
154
|
+
- [ ] **API Usage** limits and patterns
|
|
155
|
+
|
|
156
|
+
### Audit Checklist
|
|
157
|
+
|
|
158
|
+
- [ ] Review Connected Apps quarterly
|
|
159
|
+
- [ ] Remove unused applications
|
|
160
|
+
- [ ] Rotate credentials annually
|
|
161
|
+
- [ ] Verify scope appropriateness
|
|
162
|
+
- [ ] Check for policy violations
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Incident Response
|
|
167
|
+
|
|
168
|
+
### If Credentials Are Compromised
|
|
169
|
+
|
|
170
|
+
1. **Immediately** rotate Consumer Secret
|
|
171
|
+
2. Revoke all active tokens
|
|
172
|
+
3. Review login and access logs
|
|
173
|
+
4. Update external systems with new credentials
|
|
174
|
+
5. Investigate scope of compromise
|
|
175
|
+
6. Document and report incident
|
|
176
|
+
|
|
177
|
+
### Commands for Response
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
# List all Connected Apps
|
|
181
|
+
sf org list metadata --metadata-type ConnectedApp --target-org <org>
|
|
182
|
+
|
|
183
|
+
# Retrieve for review
|
|
184
|
+
sf project retrieve start --metadata ConnectedApp:<AppName> --target-org <org>
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Compliance Considerations
|
|
190
|
+
|
|
191
|
+
### GDPR/Privacy
|
|
192
|
+
|
|
193
|
+
- Ensure data access matches user consent
|
|
194
|
+
- Document data flows through Connected Apps
|
|
195
|
+
- Implement data retention policies
|
|
196
|
+
|
|
197
|
+
### SOC 2
|
|
198
|
+
|
|
199
|
+
- Enable audit logging
|
|
200
|
+
- Implement access reviews
|
|
201
|
+
- Document security controls
|
|
202
|
+
- Use certificate-based authentication
|
|
203
|
+
|
|
204
|
+
### HIPAA
|
|
205
|
+
|
|
206
|
+
- Enable High Assurance sessions
|
|
207
|
+
- Restrict data access scopes
|
|
208
|
+
- Implement IP restrictions
|
|
209
|
+
- Use encrypted connections only
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
<!-- Parent: configuring-connected-apps/SKILL.md -->
|
|
2
|
+
# Testing & Validation Guide
|
|
3
|
+
|
|
4
|
+
This guide documents tested External Client App (ECA) and Connected App patterns based on systematic validation testing (December 2025).
|
|
5
|
+
|
|
6
|
+
## Test Matrix
|
|
7
|
+
|
|
8
|
+
| Component Type | Template / Source | Test Status |
|
|
9
|
+
|----------------|-------------------|-------------|
|
|
10
|
+
| Connected App (Basic) | `connected-app-basic.xml` | ✅ Verified |
|
|
11
|
+
| Connected App (Full OAuth) | `connected-app-oauth.xml` | ✅ Verified |
|
|
12
|
+
| Connected App (JWT Bearer) | `connected-app-jwt.xml` | ✅ Verified |
|
|
13
|
+
| Connected App (Canvas) | `connected-app-canvas.xml` | ⚠️ Location-dependent |
|
|
14
|
+
| External Client App | `external-client-app.xml` | ✅ Verified |
|
|
15
|
+
| ECA Global OAuth | `eca-global-oauth.xml` | ✅ Verified |
|
|
16
|
+
| ECA OAuth Settings | `eca-oauth-settings.xml` | ✅ Verified |
|
|
17
|
+
| ECA OAuth Security Settings | retrieve-first (`ExtlClntAppOauthSecuritySettings`) | ✅ CLI/registry-supported |
|
|
18
|
+
| ECA Configurable Policies | `eca-policies.xml` | ✅ Naming updated |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Critical File Naming Conventions
|
|
23
|
+
|
|
24
|
+
### External Client App Files
|
|
25
|
+
|
|
26
|
+
| Metadata Type | Source Directory | File Suffix | Example |
|
|
27
|
+
|--------------|------------------|-------------|---------|
|
|
28
|
+
| ExternalClientApplication | `externalClientApps/` | `.eca-meta.xml` | `externalClientApps/MyApp.eca-meta.xml` |
|
|
29
|
+
| ExtlClntAppOauthSettings | `extlClntAppOauthSettings/` | `.ecaOauth-meta.xml` | `extlClntAppOauthSettings/MyApp.ecaOauth-meta.xml` |
|
|
30
|
+
| ExtlClntAppGlobalOauthSettings | `extlClntAppGlobalOauthSets/` | `.ecaGlblOauth-meta.xml` | `extlClntAppGlobalOauthSets/MyApp.ecaGlblOauth-meta.xml` |
|
|
31
|
+
| ExtlClntAppOauthSecuritySettings | `extlClntAppOauthSecuritySettings/` | `.ecaOauthSecurity-meta.xml` | `extlClntAppOauthSecuritySettings/MyApp.ecaOauthSecurity-meta.xml` |
|
|
32
|
+
| ExtlClntAppOauthConfigurablePolicies | `extlClntAppOauthPolicies/` | `.ecaOauthPlcy-meta.xml` | `extlClntAppOauthPolicies/MyApp.ecaOauthPlcy-meta.xml` |
|
|
33
|
+
| ExtlClntAppConfigurablePolicies | `extlClntAppPolicies/` | `.ecaPlcy-meta.xml` | `extlClntAppPolicies/MyApp.ecaPlcy-meta.xml` |
|
|
34
|
+
|
|
35
|
+
⚠️ **CRITICAL**:
|
|
36
|
+
- Use `.ecaGlblOauth` (abbreviated), NOT `.ecaGlobalOauth`
|
|
37
|
+
- Use `.ecaPlcy`, NOT `.ecaPolicy`
|
|
38
|
+
- `ExtlClntAppOauthSecuritySettings` is now source-supported; prefer retrieve-first until you have an org-validated sample file
|
|
39
|
+
|
|
40
|
+
### Connected App Files
|
|
41
|
+
|
|
42
|
+
| Metadata Type | File Suffix | Example |
|
|
43
|
+
|--------------|-------------|---------|
|
|
44
|
+
| ConnectedApp | `.connectedApp-meta.xml` | `MyApp.connectedApp-meta.xml` |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Common Deployment Errors & Solutions
|
|
49
|
+
|
|
50
|
+
### Error: "Invalid or missing field" in ECA OAuth Settings
|
|
51
|
+
|
|
52
|
+
**Cause**: Using wrong schema with non-existent fields
|
|
53
|
+
|
|
54
|
+
**Wrong Schema (FAILS):**
|
|
55
|
+
```xml
|
|
56
|
+
<ExtlClntAppOauthSettings>
|
|
57
|
+
<isAdminApproved>true</isAdminApproved> <!-- DOES NOT EXIST -->
|
|
58
|
+
<isCodeCredentialsEnabled>true</isCodeCredentialsEnabled> <!-- DOES NOT EXIST -->
|
|
59
|
+
<scopes>Api</scopes> <!-- WRONG FORMAT -->
|
|
60
|
+
</ExtlClntAppOauthSettings>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Correct Schema:**
|
|
64
|
+
```xml
|
|
65
|
+
<ExtlClntAppOauthSettings xmlns="http://soap.sforce.com/2006/04/metadata">
|
|
66
|
+
<commaSeparatedOauthScopes>Api, RefreshToken</commaSeparatedOauthScopes>
|
|
67
|
+
<externalClientApplication>MyApp</externalClientApplication>
|
|
68
|
+
<label>MyApp OAuth Settings</label>
|
|
69
|
+
</ExtlClntAppOauthSettings>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Error: "Missing required field" in ECA Global OAuth
|
|
73
|
+
|
|
74
|
+
**Cause**: Missing `externalClientApplication` or `label`
|
|
75
|
+
|
|
76
|
+
**Wrong (FAILS):**
|
|
77
|
+
```xml
|
|
78
|
+
<ExtlClntAppGlobalOauthSettings>
|
|
79
|
+
<callbackUrl>https://example.com/callback</callbackUrl>
|
|
80
|
+
<isPkceRequired>true</isPkceRequired>
|
|
81
|
+
</ExtlClntAppGlobalOauthSettings>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Correct:**
|
|
85
|
+
```xml
|
|
86
|
+
<ExtlClntAppGlobalOauthSettings xmlns="http://soap.sforce.com/2006/04/metadata">
|
|
87
|
+
<callbackUrl>https://example.com/callback</callbackUrl>
|
|
88
|
+
<externalClientApplication>MyApp</externalClientApplication>
|
|
89
|
+
<isConsumerSecretOptional>true</isConsumerSecretOptional>
|
|
90
|
+
<isIntrospectAllTokens>false</isIntrospectAllTokens>
|
|
91
|
+
<isPkceRequired>true</isPkceRequired>
|
|
92
|
+
<isSecretRequiredForRefreshToken>false</isSecretRequiredForRefreshToken>
|
|
93
|
+
<label>MyApp Global OAuth</label>
|
|
94
|
+
<shouldRotateConsumerKey>false</shouldRotateConsumerKey>
|
|
95
|
+
<shouldRotateConsumerSecret>false</shouldRotateConsumerSecret>
|
|
96
|
+
</ExtlClntAppGlobalOauthSettings>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Error: "Organization is not configured to support location"
|
|
100
|
+
|
|
101
|
+
**Cause**: Canvas app using location that requires org feature enablement
|
|
102
|
+
|
|
103
|
+
**Problematic Locations:**
|
|
104
|
+
- `AppLauncher` - Requires feature enablement
|
|
105
|
+
- Some other locations may have similar requirements
|
|
106
|
+
|
|
107
|
+
**Solution**: Use universally available locations:
|
|
108
|
+
```xml
|
|
109
|
+
<canvasApp>
|
|
110
|
+
<locations>Visualforce</locations>
|
|
111
|
+
</canvasApp>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Error: Certificate not found (JWT Bearer)
|
|
115
|
+
|
|
116
|
+
**Cause**: Referenced certificate doesn't exist in org
|
|
117
|
+
|
|
118
|
+
**Wrong:**
|
|
119
|
+
```xml
|
|
120
|
+
<certificate>NonExistent_Cert</certificate>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Solution**: Create certificate first, then reference it:
|
|
124
|
+
```bash
|
|
125
|
+
# 1. Create certificate in org (Setup > Certificate and Key Management)
|
|
126
|
+
# 2. Reference in Connected App
|
|
127
|
+
<certificate>My_JWT_Cert</certificate>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Field Reference
|
|
133
|
+
|
|
134
|
+
### ExtlClntAppOauthSettings (ECA OAuth)
|
|
135
|
+
|
|
136
|
+
| Field | Type | Required | Description |
|
|
137
|
+
|-------|------|----------|-------------|
|
|
138
|
+
| `commaSeparatedOauthScopes` | String | Yes | Comma-separated scopes (e.g., "Api, RefreshToken") |
|
|
139
|
+
| `externalClientApplication` | String | Yes | Reference to parent ECA API name |
|
|
140
|
+
| `label` | String | Yes | Display label |
|
|
141
|
+
|
|
142
|
+
**Available Scopes:**
|
|
143
|
+
- `Api` - REST/SOAP API access
|
|
144
|
+
- `RefreshToken` - Offline access
|
|
145
|
+
- `OpenID` - OpenID Connect
|
|
146
|
+
- `Profile` - User profile info
|
|
147
|
+
- `Email` - User email
|
|
148
|
+
- `Web` - Web browser access
|
|
149
|
+
- `ChatterApi` - Chatter REST API
|
|
150
|
+
|
|
151
|
+
### ExtlClntAppGlobalOauthSettings (ECA Global OAuth)
|
|
152
|
+
|
|
153
|
+
| Field | Type | Required | Description |
|
|
154
|
+
|-------|------|----------|-------------|
|
|
155
|
+
| `callbackUrl` | URL | Yes | OAuth redirect URI |
|
|
156
|
+
| `externalClientApplication` | String | Yes | Reference to parent ECA |
|
|
157
|
+
| `isConsumerSecretOptional` | Boolean | No | True for public clients with PKCE |
|
|
158
|
+
| `isIntrospectAllTokens` | Boolean | No | Enable token introspection |
|
|
159
|
+
| `isPkceRequired` | Boolean | No | Require PKCE (recommended for public clients) |
|
|
160
|
+
| `isSecretRequiredForRefreshToken` | Boolean | No | Require secret for refresh |
|
|
161
|
+
| `label` | String | Yes | Display label |
|
|
162
|
+
| `shouldRotateConsumerKey` | Boolean | No | Enable key rotation |
|
|
163
|
+
| `shouldRotateConsumerSecret` | Boolean | No | Enable secret rotation |
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Deployment Order
|
|
168
|
+
|
|
169
|
+
For External Client Apps, deploy in this order:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# 1. Deploy base ECA first
|
|
173
|
+
sf project deploy start --metadata ExternalClientApplication:MyApp --target-org [alias]
|
|
174
|
+
|
|
175
|
+
# 2. Deploy OAuth settings
|
|
176
|
+
sf project deploy start --metadata ExtlClntAppOauthSettings:MyApp --target-org [alias]
|
|
177
|
+
|
|
178
|
+
# 3. Deploy Global OAuth (if needed)
|
|
179
|
+
sf project deploy start --metadata ExtlClntAppGlobalOauthSettings:MyApp --target-org [alias]
|
|
180
|
+
|
|
181
|
+
# 4. Deploy companion security/policy metadata when you use it
|
|
182
|
+
sf project deploy start --metadata ExtlClntAppOauthSecuritySettings:MyApp --target-org [alias]
|
|
183
|
+
sf project deploy start --metadata ExtlClntAppOauthConfigurablePolicies:MyApp --target-org [alias]
|
|
184
|
+
sf project deploy start --metadata ExtlClntAppConfigurablePolicies:MyApp --target-org [alias]
|
|
185
|
+
|
|
186
|
+
# Or deploy the whole package directory when all ECA source directories live under it
|
|
187
|
+
sf project deploy start --source-dir force-app/main/default --target-org [alias]
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Post-Deployment Steps
|
|
193
|
+
|
|
194
|
+
### Client Credentials Flow (ECA)
|
|
195
|
+
|
|
196
|
+
Client Credentials flow still requires post-deployment admin validation. Even with broader metadata support, verify these items in Setup after deployment:
|
|
197
|
+
|
|
198
|
+
1. **Create Permission Set** with "Salesforce API Integration" permission
|
|
199
|
+
2. **Assign Permission Set** to the External Client App
|
|
200
|
+
3. **Confirm the run-as / execution-user behavior and any org-specific OAuth security settings**
|
|
201
|
+
|
|
202
|
+
### JWT Bearer Flow (Connected App)
|
|
203
|
+
|
|
204
|
+
1. **Upload Certificate** to org before deployment
|
|
205
|
+
2. **Pre-authorize Users** after deployment (Setup > Manage Connected Apps)
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Deployment Checklist
|
|
210
|
+
|
|
211
|
+
### External Client App
|
|
212
|
+
|
|
213
|
+
- [ ] `.eca-meta.xml` file exists under `externalClientApps/`
|
|
214
|
+
- [ ] `.ecaOauth-meta.xml` file exists under `extlClntAppOauthSettings/`
|
|
215
|
+
- [ ] `.ecaGlblOauth-meta.xml` uses abbreviated suffix under `extlClntAppGlobalOauthSets/`
|
|
216
|
+
- [ ] Optional companion files use the right suffixes: `.ecaOauthSecurity`, `.ecaOauthPlcy`, `.ecaPlcy`
|
|
217
|
+
- [ ] All companion files reference the same `externalClientApplication` name
|
|
218
|
+
- [ ] Required files include `label` where applicable
|
|
219
|
+
- [ ] `commaSeparatedOauthScopes` uses string format, not individual `<scopes>` tags
|
|
220
|
+
- [ ] Callback URL is HTTPS (or custom scheme for mobile)
|
|
221
|
+
- [ ] PKCE enabled for public clients
|
|
222
|
+
|
|
223
|
+
### Connected App
|
|
224
|
+
|
|
225
|
+
- [ ] `.connectedApp-meta.xml` file exists
|
|
226
|
+
- [ ] `contactEmail` is valid
|
|
227
|
+
- [ ] Callback URL matches OAuth flow requirements
|
|
228
|
+
- [ ] Certificate exists in org (for JWT Bearer)
|
|
229
|
+
- [ ] Canvas locations are supported by org (if using Canvas)
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Tested Configurations
|
|
234
|
+
|
|
235
|
+
### Minimal ECA (API Integration)
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
Files:
|
|
239
|
+
├── externalClientApps/MyApp.eca-meta.xml
|
|
240
|
+
├── extlClntAppOauthSettings/MyApp.ecaOauth-meta.xml
|
|
241
|
+
└── extlClntAppGlobalOauthSets/MyApp.ecaGlblOauth-meta.xml
|
|
242
|
+
|
|
243
|
+
Scopes: Api, RefreshToken
|
|
244
|
+
PKCE: false (confidential client)
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Mobile App ECA (PKCE)
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
Files:
|
|
251
|
+
├── externalClientApps/MobileApp.eca-meta.xml
|
|
252
|
+
├── extlClntAppOauthSettings/MobileApp.ecaOauth-meta.xml
|
|
253
|
+
└── extlClntAppGlobalOauthSets/MobileApp.ecaGlblOauth-meta.xml
|
|
254
|
+
|
|
255
|
+
Scopes: Api, RefreshToken, OpenID
|
|
256
|
+
PKCE: true (public client)
|
|
257
|
+
Callback: com.example.app://oauth/callback
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Server-to-Server ECA
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
Files:
|
|
264
|
+
├── externalClientApps/ServiceApp.eca-meta.xml
|
|
265
|
+
├── extlClntAppOauthSettings/ServiceApp.ecaOauth-meta.xml
|
|
266
|
+
└── extlClntAppOauthSecuritySettings/ServiceApp.ecaOauthSecurity-meta.xml # retrieve-first when source controlling OAuth security settings
|
|
267
|
+
|
|
268
|
+
Scopes: Api
|
|
269
|
+
Note: Client Credentials still requires post-deployment Permission Set assignment and admin verification
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
*Last Updated: April 2026*
|
|
275
|
+
*Based on testing with SF CLI and API v66.0*
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Credits & Acknowledgments
|
|
2
|
+
|
|
3
|
+
This skill is part of the `*-datacloud` family of skills covering the full Data Cloud workflow lifecycle. Shared upstream source mapping and maintenance notes live in:
|
|
4
|
+
- [../orchestrating-datacloud/CREDITS.md](../orchestrating-datacloud/CREDITS.md)
|
|
5
|
+
- [../orchestrating-datacloud/UPSTREAM.md](../orchestrating-datacloud/UPSTREAM.md)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# connecting-datacloud
|
|
2
|
+
|
|
3
|
+
Connection and connector workflows for Salesforce Data Cloud.
|
|
4
|
+
|
|
5
|
+
## Use this skill for
|
|
6
|
+
|
|
7
|
+
- listing available connector types
|
|
8
|
+
- inspecting configured connections
|
|
9
|
+
- testing a connection
|
|
10
|
+
- browsing source objects, databases, fields, and uploaded schemas
|
|
11
|
+
- preparing connector JSON for Snowflake, SharePoint Unstructured, and Ingestion API sources
|
|
12
|
+
- preparing for stream creation
|
|
13
|
+
|
|
14
|
+
## Key reminders
|
|
15
|
+
|
|
16
|
+
- `connection list` requires `--connector-type`
|
|
17
|
+
- `connection test` may need `--connector-type` for non-Salesforce name resolution
|
|
18
|
+
- use `connection schema-upsert` after creating an Ingestion API connector
|
|
19
|
+
- start with inspection before mutation
|
|
20
|
+
- use `2>/dev/null` to suppress linked-plugin warning noise
|
|
21
|
+
- some connector types can be created by API while downstream stream creation still requires UI flow
|
|
22
|
+
|
|
23
|
+
## Example requests
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
"Show me which Data Cloud connections already exist in this org"
|
|
27
|
+
"Test my Snowflake Data Cloud connection"
|
|
28
|
+
"What source objects are available on this Salesforce connector?"
|
|
29
|
+
"Help me create an Ingestion API connector and upload its schema"
|
|
30
|
+
"Set up a SharePoint Unstructured connection for document ingestion"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Common commands
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
sf data360 connection connector-list -o myorg 2>/dev/null
|
|
37
|
+
sf data360 connection list -o myorg --connector-type SalesforceDotCom 2>/dev/null
|
|
38
|
+
sf data360 connection get -o myorg --name SalesforceDotCom_Home 2>/dev/null
|
|
39
|
+
sf data360 connection test -o myorg --name Snowflake_Demo --connector-type SNOWFLAKE 2>/dev/null
|
|
40
|
+
sf data360 connection schema-get -o myorg --name <connector-id> 2>/dev/null
|
|
41
|
+
sf data360 connection create -o myorg -f examples/connections/heroku-postgres.json 2>/dev/null
|
|
42
|
+
sf data360 connection schema-upsert -o myorg --name <connector-id> -f examples/connections/ingest-api-schema.json 2>/dev/null
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Example payloads
|
|
46
|
+
|
|
47
|
+
- [examples/connections/heroku-postgres.json](examples/connections/heroku-postgres.json)
|
|
48
|
+
- [examples/connections/redshift.json](examples/connections/redshift.json)
|
|
49
|
+
- [examples/connections/sharepoint-unstructured.json](examples/connections/sharepoint-unstructured.json)
|
|
50
|
+
- [examples/connections/snowflake-connection.json](examples/connections/snowflake-connection.json)
|
|
51
|
+
- [examples/connections/ingest-api-connection.json](examples/connections/ingest-api-connection.json)
|
|
52
|
+
- [examples/connections/ingest-api-schema.json](examples/connections/ingest-api-schema.json)
|
|
53
|
+
|
|
54
|
+
## References
|
|
55
|
+
|
|
56
|
+
- [SKILL.md](SKILL.md)
|
|
57
|
+
- [../orchestrating-datacloud/references/plugin-setup.md](../orchestrating-datacloud/references/plugin-setup.md)
|
|
58
|
+
- [../orchestrating-datacloud/UPSTREAM.md](../orchestrating-datacloud/UPSTREAM.md)
|
|
59
|
+
- [CREDITS.md](CREDITS.md)
|