@salesforce/afv-skills 1.8.0 → 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/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/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-test/CREDITS.md +2 -27
- 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-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/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/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
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
External Credential Template: JWT (API 61+)
|
|
4
|
+
|
|
5
|
+
Use Case: JWT Bearer authentication for server-to-server
|
|
6
|
+
- Machine-to-machine authentication
|
|
7
|
+
- Service account integrations
|
|
8
|
+
- High-security API access
|
|
9
|
+
|
|
10
|
+
API Version: 61.0+ (Spring '24+) REQUIRED
|
|
11
|
+
|
|
12
|
+
Prerequisites:
|
|
13
|
+
1. Create certificate in Setup → Certificate and Key Management
|
|
14
|
+
2. Register public key with external system
|
|
15
|
+
3. Configure JWT claims as required by external API
|
|
16
|
+
|
|
17
|
+
Setup Steps:
|
|
18
|
+
1. Replace all {{placeholder}} values
|
|
19
|
+
2. Upload certificate to Salesforce
|
|
20
|
+
3. Deploy to org
|
|
21
|
+
4. Create Named Credential referencing this External Credential
|
|
22
|
+
|
|
23
|
+
File Location: force-app/main/default/externalCredentials/{{CredentialName}}.externalCredential-meta.xml
|
|
24
|
+
-->
|
|
25
|
+
<ExternalCredential xmlns="http://soap.sforce.com/2006/04/metadata">
|
|
26
|
+
<label>{{CredentialLabel}}</label>
|
|
27
|
+
|
|
28
|
+
<!-- JWT Authentication Protocol -->
|
|
29
|
+
<authenticationProtocol>Jwt</authenticationProtocol>
|
|
30
|
+
|
|
31
|
+
<!--
|
|
32
|
+
JWT Configuration Parameters
|
|
33
|
+
-->
|
|
34
|
+
|
|
35
|
+
<!-- Issuer claim (iss) - typically your client ID or service identifier -->
|
|
36
|
+
<externalCredentialParameters>
|
|
37
|
+
<parameterName>issuer</parameterName>
|
|
38
|
+
<parameterType>SigningCertificate</parameterType>
|
|
39
|
+
<parameterValue>{{CertificateName}}</parameterValue>
|
|
40
|
+
</externalCredentialParameters>
|
|
41
|
+
|
|
42
|
+
<!-- Subject claim (sub) - the identity being asserted -->
|
|
43
|
+
<externalCredentialParameters>
|
|
44
|
+
<parameterName>subject</parameterName>
|
|
45
|
+
<parameterType>Custom</parameterType>
|
|
46
|
+
<parameterValue>{{SubjectIdentifier}}</parameterValue>
|
|
47
|
+
</externalCredentialParameters>
|
|
48
|
+
|
|
49
|
+
<!-- Audience claim (aud) - intended recipient of the JWT -->
|
|
50
|
+
<externalCredentialParameters>
|
|
51
|
+
<parameterName>audience</parameterName>
|
|
52
|
+
<parameterType>Custom</parameterType>
|
|
53
|
+
<parameterValue>{{AudienceUrl}}</parameterValue>
|
|
54
|
+
</externalCredentialParameters>
|
|
55
|
+
|
|
56
|
+
<!-- Token endpoint for JWT exchange -->
|
|
57
|
+
<externalCredentialParameters>
|
|
58
|
+
<parameterName>tokenEndpoint</parameterName>
|
|
59
|
+
<parameterType>AuthProviderTokenEndpoint</parameterType>
|
|
60
|
+
<parameterValue>{{TokenEndpoint}}</parameterValue>
|
|
61
|
+
</externalCredentialParameters>
|
|
62
|
+
|
|
63
|
+
<!-- JWT Expiration (in seconds) -->
|
|
64
|
+
<externalCredentialParameters>
|
|
65
|
+
<parameterName>expirationOffset</parameterName>
|
|
66
|
+
<parameterType>Custom</parameterType>
|
|
67
|
+
<parameterValue>3600</parameterValue>
|
|
68
|
+
</externalCredentialParameters>
|
|
69
|
+
|
|
70
|
+
<!-- Named Principal for JWT auth -->
|
|
71
|
+
<principals>
|
|
72
|
+
<principalName>{{PrincipalName}}</principalName>
|
|
73
|
+
<principalType>NamedPrincipal</principalType>
|
|
74
|
+
<sequenceNumber>1</sequenceNumber>
|
|
75
|
+
</principals>
|
|
76
|
+
|
|
77
|
+
<!--
|
|
78
|
+
JWT Token Flow:
|
|
79
|
+
1. Salesforce creates JWT with claims (iss, sub, aud, exp)
|
|
80
|
+
2. JWT signed with certificate private key
|
|
81
|
+
3. JWT sent to token endpoint
|
|
82
|
+
4. External system validates signature with public key
|
|
83
|
+
5. Access token returned
|
|
84
|
+
6. Access token used for API calls
|
|
85
|
+
|
|
86
|
+
Custom Claims:
|
|
87
|
+
Add additional externalCredentialParameters with parameterType="Custom"
|
|
88
|
+
to include custom claims required by your external system.
|
|
89
|
+
-->
|
|
90
|
+
</ExternalCredential>
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
External Credential Template: OAuth 2.0 (API 61+)
|
|
4
|
+
|
|
5
|
+
Use Case: Modern OAuth 2.0 with Named Principal or Per-User authentication
|
|
6
|
+
- New integrations (recommended over legacy Named Credentials)
|
|
7
|
+
- APIs requiring per-user context
|
|
8
|
+
- Fine-grained permission control via Permission Sets
|
|
9
|
+
|
|
10
|
+
API Version: 61.0+ (Spring '24+) REQUIRED
|
|
11
|
+
|
|
12
|
+
Key Concepts:
|
|
13
|
+
- External Credential: Defines auth protocol and parameters
|
|
14
|
+
- Named Principal: Shared service account identity
|
|
15
|
+
- Per-User Principal: Individual user authentication
|
|
16
|
+
- Permission Set: Controls access to principals
|
|
17
|
+
|
|
18
|
+
Setup Steps:
|
|
19
|
+
1. Replace all {{placeholder}} values
|
|
20
|
+
2. Deploy to org
|
|
21
|
+
3. Create Named Credential referencing this External Credential
|
|
22
|
+
4. Assign Permission Set to users
|
|
23
|
+
|
|
24
|
+
File Location: force-app/main/default/externalCredentials/{{CredentialName}}.externalCredential-meta.xml
|
|
25
|
+
-->
|
|
26
|
+
<ExternalCredential xmlns="http://soap.sforce.com/2006/04/metadata">
|
|
27
|
+
<label>{{CredentialLabel}}</label>
|
|
28
|
+
|
|
29
|
+
<!-- Authentication Protocol: Oauth, Custom, NoAuth, JWT, JwtExchange -->
|
|
30
|
+
<authenticationProtocol>Oauth</authenticationProtocol>
|
|
31
|
+
|
|
32
|
+
<!--
|
|
33
|
+
OAuth Parameters
|
|
34
|
+
These define how Salesforce obtains and refreshes tokens
|
|
35
|
+
-->
|
|
36
|
+
<externalCredentialParameters>
|
|
37
|
+
<parameterName>clientId</parameterName>
|
|
38
|
+
<parameterType>AuthProviderClientId</parameterType>
|
|
39
|
+
<parameterValue>{{ClientId}}</parameterValue>
|
|
40
|
+
</externalCredentialParameters>
|
|
41
|
+
|
|
42
|
+
<externalCredentialParameters>
|
|
43
|
+
<parameterName>clientSecret</parameterName>
|
|
44
|
+
<parameterType>AuthProviderClientSecret</parameterType>
|
|
45
|
+
<!-- Value entered via UI for security -->
|
|
46
|
+
</externalCredentialParameters>
|
|
47
|
+
|
|
48
|
+
<externalCredentialParameters>
|
|
49
|
+
<parameterName>scope</parameterName>
|
|
50
|
+
<parameterType>AuthProviderScope</parameterType>
|
|
51
|
+
<parameterValue>{{Scopes}}</parameterValue>
|
|
52
|
+
</externalCredentialParameters>
|
|
53
|
+
|
|
54
|
+
<externalCredentialParameters>
|
|
55
|
+
<parameterName>tokenEndpoint</parameterName>
|
|
56
|
+
<parameterType>AuthProviderTokenEndpoint</parameterType>
|
|
57
|
+
<parameterValue>{{TokenEndpoint}}</parameterValue>
|
|
58
|
+
</externalCredentialParameters>
|
|
59
|
+
|
|
60
|
+
<!--
|
|
61
|
+
Named Principal Configuration
|
|
62
|
+
Shared service account for all users with permission
|
|
63
|
+
-->
|
|
64
|
+
<principals>
|
|
65
|
+
<principalName>{{PrincipalName}}</principalName>
|
|
66
|
+
<principalType>NamedPrincipal</principalType>
|
|
67
|
+
<sequenceNumber>1</sequenceNumber>
|
|
68
|
+
</principals>
|
|
69
|
+
|
|
70
|
+
<!--
|
|
71
|
+
Optional: Per-User Principal
|
|
72
|
+
Each user authenticates individually
|
|
73
|
+
|
|
74
|
+
<principals>
|
|
75
|
+
<principalName>PerUserPrincipal</principalName>
|
|
76
|
+
<principalType>PerUserPrincipal</principalType>
|
|
77
|
+
<sequenceNumber>2</sequenceNumber>
|
|
78
|
+
</principals>
|
|
79
|
+
-->
|
|
80
|
+
|
|
81
|
+
<!--
|
|
82
|
+
Permission Set Integration:
|
|
83
|
+
After deployment, create Permission Set with:
|
|
84
|
+
- External Credential Principal Access: {{PrincipalName}}
|
|
85
|
+
- Assign to users who need API access
|
|
86
|
+
-->
|
|
87
|
+
</ExternalCredential>
|
package/skills/building-sf-integrations/assets/external-services/external-service-operations.md
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# External Service Operations Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
External Services in Salesforce auto-generate Apex classes from OpenAPI specifications, providing type-safe API integrations without manual HTTP code.
|
|
6
|
+
|
|
7
|
+
## Generated Class Structure
|
|
8
|
+
|
|
9
|
+
When you register an External Service named `MyAPI`, Salesforce generates:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
ExternalService.MyAPI - Main service class
|
|
13
|
+
ExternalService.MyAPI_operationName_Request - Request wrapper for each operation
|
|
14
|
+
ExternalService.MyAPI_operationName_Response - Response wrapper for each operation
|
|
15
|
+
ExternalService.MyAPI_SchemaName - DTO for each schema in OpenAPI
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Basic Usage
|
|
19
|
+
|
|
20
|
+
### 1. Instantiate the Service
|
|
21
|
+
|
|
22
|
+
```apex
|
|
23
|
+
ExternalService.MyAPI api = new ExternalService.MyAPI();
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 2. Call GET Operation
|
|
27
|
+
|
|
28
|
+
```apex
|
|
29
|
+
// Simple GET with path parameter
|
|
30
|
+
ExternalService.MyAPI_getCustomer_Response response = api.getCustomer('cust_123');
|
|
31
|
+
|
|
32
|
+
// Access response data
|
|
33
|
+
String customerId = response.id;
|
|
34
|
+
String customerName = response.name;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 3. Call POST Operation
|
|
38
|
+
|
|
39
|
+
```apex
|
|
40
|
+
// Create request object
|
|
41
|
+
ExternalService.MyAPI_createCustomer_Request request =
|
|
42
|
+
new ExternalService.MyAPI_createCustomer_Request();
|
|
43
|
+
request.name = 'Acme Corp';
|
|
44
|
+
request.email = 'contact@acme.com';
|
|
45
|
+
|
|
46
|
+
// Make the call
|
|
47
|
+
ExternalService.MyAPI_createCustomer_Response response = api.createCustomer(request);
|
|
48
|
+
|
|
49
|
+
// Access created resource
|
|
50
|
+
String newCustomerId = response.id;
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 4. Call PUT/PATCH Operations
|
|
54
|
+
|
|
55
|
+
```apex
|
|
56
|
+
// Update request
|
|
57
|
+
ExternalService.MyAPI_updateCustomer_Request request =
|
|
58
|
+
new ExternalService.MyAPI_updateCustomer_Request();
|
|
59
|
+
request.customerId = 'cust_123'; // Path parameter
|
|
60
|
+
request.name = 'Acme Corporation'; // Body field
|
|
61
|
+
|
|
62
|
+
ExternalService.MyAPI_updateCustomer_Response response = api.updateCustomer(request);
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 5. Call DELETE Operation
|
|
66
|
+
|
|
67
|
+
```apex
|
|
68
|
+
// DELETE usually returns void or simple confirmation
|
|
69
|
+
api.deleteCustomer('cust_123');
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Error Handling
|
|
73
|
+
|
|
74
|
+
```apex
|
|
75
|
+
try {
|
|
76
|
+
ExternalService.MyAPI api = new ExternalService.MyAPI();
|
|
77
|
+
ExternalService.MyAPI_getCustomer_Response response = api.getCustomer('invalid_id');
|
|
78
|
+
|
|
79
|
+
} catch (ExternalService.ExternalServiceException e) {
|
|
80
|
+
// API returned error status code
|
|
81
|
+
System.debug('API Error: ' + e.getMessage());
|
|
82
|
+
System.debug('Status Code: ' + e.getStatusCode());
|
|
83
|
+
System.debug('Response Body: ' + e.getBody());
|
|
84
|
+
|
|
85
|
+
} catch (CalloutException e) {
|
|
86
|
+
// Network/connection error
|
|
87
|
+
System.debug('Callout failed: ' + e.getMessage());
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Async Usage (Queueable)
|
|
92
|
+
|
|
93
|
+
External Service calls are still callouts, so use Queueable for trigger contexts:
|
|
94
|
+
|
|
95
|
+
```apex
|
|
96
|
+
public class CustomerSyncQueueable implements Queueable, Database.AllowsCallouts {
|
|
97
|
+
|
|
98
|
+
private List<Account> accounts;
|
|
99
|
+
|
|
100
|
+
public CustomerSyncQueueable(List<Account> accounts) {
|
|
101
|
+
this.accounts = accounts;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
public void execute(QueueableContext context) {
|
|
105
|
+
ExternalService.MyAPI api = new ExternalService.MyAPI();
|
|
106
|
+
|
|
107
|
+
for (Account acc : accounts) {
|
|
108
|
+
try {
|
|
109
|
+
ExternalService.MyAPI_createCustomer_Request req =
|
|
110
|
+
new ExternalService.MyAPI_createCustomer_Request();
|
|
111
|
+
req.name = acc.Name;
|
|
112
|
+
req.email = acc.Email__c;
|
|
113
|
+
|
|
114
|
+
ExternalService.MyAPI_createCustomer_Response resp =
|
|
115
|
+
api.createCustomer(req);
|
|
116
|
+
|
|
117
|
+
// Store external ID on Account
|
|
118
|
+
acc.External_Customer_Id__c = resp.id;
|
|
119
|
+
|
|
120
|
+
} catch (Exception e) {
|
|
121
|
+
System.debug('Sync failed for ' + acc.Name + ': ' + e.getMessage());
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
update accounts;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## OpenAPI Schema Tips
|
|
131
|
+
|
|
132
|
+
### Required Properties
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"components": {
|
|
137
|
+
"schemas": {
|
|
138
|
+
"Customer": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"required": ["name", "email"],
|
|
141
|
+
"properties": {
|
|
142
|
+
"name": { "type": "string" },
|
|
143
|
+
"email": { "type": "string", "format": "email" }
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Nested Objects
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"Customer": {
|
|
156
|
+
"type": "object",
|
|
157
|
+
"properties": {
|
|
158
|
+
"address": {
|
|
159
|
+
"$ref": "#/components/schemas/Address"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"Address": {
|
|
164
|
+
"type": "object",
|
|
165
|
+
"properties": {
|
|
166
|
+
"street": { "type": "string" },
|
|
167
|
+
"city": { "type": "string" }
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Arrays
|
|
174
|
+
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"CustomerList": {
|
|
178
|
+
"type": "object",
|
|
179
|
+
"properties": {
|
|
180
|
+
"customers": {
|
|
181
|
+
"type": "array",
|
|
182
|
+
"items": {
|
|
183
|
+
"$ref": "#/components/schemas/Customer"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Limitations
|
|
192
|
+
|
|
193
|
+
| Limitation | Workaround |
|
|
194
|
+
|------------|------------|
|
|
195
|
+
| 100 callouts per transaction | Use async (Queueable) with chaining |
|
|
196
|
+
| 120s max timeout | Use shorter timeout, implement retry |
|
|
197
|
+
| 6MB response size | Paginate responses, compress data |
|
|
198
|
+
| Some OpenAPI features not supported | Simplify schema, avoid oneOf/anyOf |
|
|
199
|
+
|
|
200
|
+
## Refreshing External Service
|
|
201
|
+
|
|
202
|
+
When the API schema changes:
|
|
203
|
+
|
|
204
|
+
1. Download updated OpenAPI spec
|
|
205
|
+
2. Go to Setup → External Services
|
|
206
|
+
3. Edit the service
|
|
207
|
+
4. Upload new schema
|
|
208
|
+
5. Review generated operations
|
|
209
|
+
6. Save and validate
|
|
210
|
+
|
|
211
|
+
Or via metadata deployment:
|
|
212
|
+
1. Update the `<schema>` content in the `.externalServiceRegistration-meta.xml`
|
|
213
|
+
2. Deploy with `sf project deploy start`
|
|
214
|
+
|
|
215
|
+
## Best Practices
|
|
216
|
+
|
|
217
|
+
1. **Version Your APIs**: Include version in Named Credential endpoint
|
|
218
|
+
2. **Handle All Errors**: Catch both `ExternalServiceException` and `CalloutException`
|
|
219
|
+
3. **Log Requests/Responses**: For debugging production issues
|
|
220
|
+
4. **Use Async**: Always use Queueable when called from DML contexts
|
|
221
|
+
5. **Test Thoroughly**: Mock External Service calls in test classes
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
External Service Registration Template: OpenAPI/Swagger
|
|
4
|
+
|
|
5
|
+
Use Case: Auto-generate Apex from OpenAPI specification
|
|
6
|
+
- REST API integrations
|
|
7
|
+
- Type-safe API calls
|
|
8
|
+
- Automatic request/response serialization
|
|
9
|
+
|
|
10
|
+
Supported Schema Types:
|
|
11
|
+
- OpenApi3 (OpenAPI 3.0.x) - RECOMMENDED
|
|
12
|
+
- OpenApi (OpenAPI 2.0 / Swagger)
|
|
13
|
+
|
|
14
|
+
Prerequisites:
|
|
15
|
+
1. Named Credential configured for authentication
|
|
16
|
+
2. Valid OpenAPI specification (JSON or YAML)
|
|
17
|
+
|
|
18
|
+
Setup Steps:
|
|
19
|
+
1. Replace {{placeholder}} values
|
|
20
|
+
2. Embed OpenAPI schema OR reference URL
|
|
21
|
+
3. Deploy to org
|
|
22
|
+
4. Use generated Apex classes: ExternalService.{{ServiceName}}
|
|
23
|
+
|
|
24
|
+
File Location: force-app/main/default/externalServiceRegistrations/{{ServiceName}}.externalServiceRegistration-meta.xml
|
|
25
|
+
-->
|
|
26
|
+
<ExternalServiceRegistration xmlns="http://soap.sforce.com/2006/04/metadata">
|
|
27
|
+
<!-- Display name in Setup -->
|
|
28
|
+
<label>{{ServiceLabel}}</label>
|
|
29
|
+
|
|
30
|
+
<!-- Description of the service -->
|
|
31
|
+
<description>{{ServiceDescription}}</description>
|
|
32
|
+
|
|
33
|
+
<!--
|
|
34
|
+
Named Credential for authentication
|
|
35
|
+
Must be deployed BEFORE this External Service
|
|
36
|
+
-->
|
|
37
|
+
<namedCredential>{{NamedCredentialName}}</namedCredential>
|
|
38
|
+
|
|
39
|
+
<!--
|
|
40
|
+
Schema Type: OpenApi3 or OpenApi (2.0)
|
|
41
|
+
OpenAPI 3.0 is recommended for new integrations
|
|
42
|
+
-->
|
|
43
|
+
<schemaType>OpenApi3</schemaType>
|
|
44
|
+
|
|
45
|
+
<!--
|
|
46
|
+
Status: Complete, Draft, or Invalid
|
|
47
|
+
Set to Complete for production use
|
|
48
|
+
-->
|
|
49
|
+
<status>Complete</status>
|
|
50
|
+
|
|
51
|
+
<!--
|
|
52
|
+
OpenAPI Schema Content
|
|
53
|
+
Embed the full OpenAPI JSON schema here
|
|
54
|
+
OR use schemaUrl to reference external URL
|
|
55
|
+
|
|
56
|
+
Example minimal OpenAPI 3.0 schema:
|
|
57
|
+
-->
|
|
58
|
+
<schema>
|
|
59
|
+
{
|
|
60
|
+
"openapi": "3.0.0",
|
|
61
|
+
"info": {
|
|
62
|
+
"title": "{{ServiceTitle}}",
|
|
63
|
+
"version": "1.0.0",
|
|
64
|
+
"description": "{{ServiceDescription}}"
|
|
65
|
+
},
|
|
66
|
+
"servers": [
|
|
67
|
+
{
|
|
68
|
+
"url": "{{BaseUrl}}"
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"paths": {
|
|
72
|
+
"/{{resourcePath}}": {
|
|
73
|
+
"get": {
|
|
74
|
+
"operationId": "get{{ResourceName}}",
|
|
75
|
+
"summary": "Get {{ResourceName}}",
|
|
76
|
+
"parameters": [
|
|
77
|
+
{
|
|
78
|
+
"name": "id",
|
|
79
|
+
"in": "path",
|
|
80
|
+
"required": true,
|
|
81
|
+
"schema": {
|
|
82
|
+
"type": "string"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"responses": {
|
|
87
|
+
"200": {
|
|
88
|
+
"description": "Success",
|
|
89
|
+
"content": {
|
|
90
|
+
"application/json": {
|
|
91
|
+
"schema": {
|
|
92
|
+
"$ref": "#/components/schemas/{{ResourceName}}"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"post": {
|
|
100
|
+
"operationId": "create{{ResourceName}}",
|
|
101
|
+
"summary": "Create {{ResourceName}}",
|
|
102
|
+
"requestBody": {
|
|
103
|
+
"required": true,
|
|
104
|
+
"content": {
|
|
105
|
+
"application/json": {
|
|
106
|
+
"schema": {
|
|
107
|
+
"$ref": "#/components/schemas/{{ResourceName}}Input"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"responses": {
|
|
113
|
+
"201": {
|
|
114
|
+
"description": "Created",
|
|
115
|
+
"content": {
|
|
116
|
+
"application/json": {
|
|
117
|
+
"schema": {
|
|
118
|
+
"$ref": "#/components/schemas/{{ResourceName}}"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"components": {
|
|
128
|
+
"schemas": {
|
|
129
|
+
"{{ResourceName}}": {
|
|
130
|
+
"type": "object",
|
|
131
|
+
"properties": {
|
|
132
|
+
"id": {
|
|
133
|
+
"type": "string"
|
|
134
|
+
},
|
|
135
|
+
"name": {
|
|
136
|
+
"type": "string"
|
|
137
|
+
},
|
|
138
|
+
"createdAt": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"format": "date-time"
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"{{ResourceName}}Input": {
|
|
145
|
+
"type": "object",
|
|
146
|
+
"required": ["name"],
|
|
147
|
+
"properties": {
|
|
148
|
+
"name": {
|
|
149
|
+
"type": "string"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
</schema>
|
|
157
|
+
|
|
158
|
+
<!--
|
|
159
|
+
Alternative: Reference schema from URL
|
|
160
|
+
<schemaUrl>https://api.example.com/openapi.json</schemaUrl>
|
|
161
|
+
-->
|
|
162
|
+
|
|
163
|
+
<!--
|
|
164
|
+
Operations configuration
|
|
165
|
+
Define which operations to include/exclude
|
|
166
|
+
-->
|
|
167
|
+
<operations>
|
|
168
|
+
<active>true</active>
|
|
169
|
+
<name>get{{ResourceName}}</name>
|
|
170
|
+
</operations>
|
|
171
|
+
<operations>
|
|
172
|
+
<active>true</active>
|
|
173
|
+
<name>create{{ResourceName}}</name>
|
|
174
|
+
</operations>
|
|
175
|
+
|
|
176
|
+
<!--
|
|
177
|
+
Generated Apex Usage:
|
|
178
|
+
|
|
179
|
+
// Get instance of the service
|
|
180
|
+
ExternalService.{{ServiceName}} service = new ExternalService.{{ServiceName}}();
|
|
181
|
+
|
|
182
|
+
// Call GET operation
|
|
183
|
+
ExternalService.{{ServiceName}}_get{{ResourceName}}_Response resp =
|
|
184
|
+
service.get{{ResourceName}}('record-id-123');
|
|
185
|
+
|
|
186
|
+
// Call POST operation
|
|
187
|
+
ExternalService.{{ServiceName}}_create{{ResourceName}}_Request req =
|
|
188
|
+
new ExternalService.{{ServiceName}}_create{{ResourceName}}_Request();
|
|
189
|
+
req.name = 'New Item';
|
|
190
|
+
ExternalService.{{ServiceName}}_create{{ResourceName}}_Response resp =
|
|
191
|
+
service.create{{ResourceName}}(req);
|
|
192
|
+
-->
|
|
193
|
+
</ExternalServiceRegistration>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
Named Credential Template: Certificate-Based Authentication (Mutual TLS)
|
|
4
|
+
|
|
5
|
+
Use Case: High-security integrations requiring client certificate
|
|
6
|
+
- Financial services APIs
|
|
7
|
+
- Government integrations
|
|
8
|
+
- Healthcare systems (HIPAA compliance)
|
|
9
|
+
- Any API requiring mutual TLS (mTLS)
|
|
10
|
+
|
|
11
|
+
Prerequisites:
|
|
12
|
+
1. Obtain client certificate from external system or CA
|
|
13
|
+
2. Import certificate to Setup → Certificate and Key Management
|
|
14
|
+
3. Ensure external system trusts Salesforce's certificate
|
|
15
|
+
|
|
16
|
+
Setup Steps:
|
|
17
|
+
1. Replace all {{placeholder}} values
|
|
18
|
+
2. Upload certificate to Salesforce
|
|
19
|
+
3. Deploy to org
|
|
20
|
+
4. Test connection
|
|
21
|
+
|
|
22
|
+
File Location: force-app/main/default/namedCredentials/{{CredentialName}}.namedCredential-meta.xml
|
|
23
|
+
-->
|
|
24
|
+
<NamedCredential xmlns="http://soap.sforce.com/2006/04/metadata">
|
|
25
|
+
<fullName>{{CredentialName}}</fullName>
|
|
26
|
+
<label>{{CredentialLabel}}</label>
|
|
27
|
+
|
|
28
|
+
<!-- Base URL for the external service (must be HTTPS) -->
|
|
29
|
+
<endpoint>{{BaseEndpoint}}</endpoint>
|
|
30
|
+
|
|
31
|
+
<!-- Authentication Configuration -->
|
|
32
|
+
<principalType>Anonymous</principalType>
|
|
33
|
+
<protocol>NoAuthentication</protocol>
|
|
34
|
+
|
|
35
|
+
<!--
|
|
36
|
+
Client Certificate for Mutual TLS
|
|
37
|
+
Certificate must be imported in Setup → Certificate and Key Management
|
|
38
|
+
The certificate's private key is used to authenticate the client
|
|
39
|
+
-->
|
|
40
|
+
<certificate>{{CertificateName}}</certificate>
|
|
41
|
+
|
|
42
|
+
<!-- Request Options -->
|
|
43
|
+
<generateAuthorizationHeader>false</generateAuthorizationHeader>
|
|
44
|
+
<allowMergeFieldsInBody>true</allowMergeFieldsInBody>
|
|
45
|
+
<allowMergeFieldsInHeader>true</allowMergeFieldsInHeader>
|
|
46
|
+
|
|
47
|
+
<!--
|
|
48
|
+
Mutual TLS Flow:
|
|
49
|
+
1. Salesforce initiates HTTPS connection
|
|
50
|
+
2. External server presents its certificate
|
|
51
|
+
3. Salesforce validates server certificate
|
|
52
|
+
4. Salesforce presents client certificate
|
|
53
|
+
5. External server validates Salesforce's certificate
|
|
54
|
+
6. Encrypted channel established
|
|
55
|
+
7. API requests proceed
|
|
56
|
+
|
|
57
|
+
IMPORTANT:
|
|
58
|
+
- Certificate must have valid chain to trusted CA
|
|
59
|
+
- Certificate must not be expired
|
|
60
|
+
- External system must have Salesforce's public cert in truststore
|
|
61
|
+
-->
|
|
62
|
+
</NamedCredential>
|