Automating Data 360 — what can be scripted with the Connect API, what moves between orgs with data kits, which metadata types exist, what stays manual in Setup, capture-and-replay of definitions, idempotence, credit gates, and the order of operations
The automation map for Data 360: the Connect API builds and runs components in one org; data kits move them to another org through POST /ssot/data-kits/{name} with documented per-component payloads; metadata types describe kits and streams; provisioning and some access settings stay manual. Covers capture and replay for undocumented bodies, idempotence, credit-consuming steps and dependency order.
markdownreferencev1SW40-MKQFstage: deploytrust: officialservice: data360interface: restinterface: metadataautomate Data 360Data 360 CI/CDdata kitPOST /ssot/data-kits/{dataKitDevName}data kit deploy payload componentsDataStreamBundle CRMIdentityResolution component templateDevNameCalculatedInsight component publishIntervalDataSemanticSearch component searchIndexNameAI Retriever componentDataPackageKitDefinitionDataKitObjectTemplatedata kit manifestdata kit undeployavailable-componentscomponent deployment-statuscapture and replayidempotent pipelinebillable stepsorder of operations Data 360what cannot be automatedcommunity sf data360 plugin
Automating Data 360
Three routes
| Route | Use it to | Covers |
|---|---|---|
Connect API (/services/data/v66.0/ssot/...) | Build and run inside one org, from a script or CI | Connections, data streams and their runs, DLOs, DMOs, mappings, data spaces, identity resolution and runs, calculated insights and runs, search indexes, data graphs and refreshes, segments, query-sql, data kits |
| Data kits | Move a working configuration to another org | Stream bundles (CRM and others), DLOs, transforms, calculated insights, identity resolution, search (DataSemanticSearch), AI retrievers, segments, data actions, semantic models and more |
Metadata API (sf project deploy) | Version and deploy what a kit packages | DataPackageKitDefinition, DataPackageKitObject, DataKitObjectTemplate, DataStreamDefinition, DataSrcDataModelFieldMap, ObjectSourceTargetMap, MktCalcInsightObjectDef, DataObjectSearchIndexConf, MarketSegmentDefinition |
There is no metadata type for an identity resolution ruleset or a retriever in Salesforce's registry. Those move through a data kit, or through the Connect API with a captured body.
Data kits
- In the source org, add the components to a data kit. A kit is metadata (
DataPackageKitDefinition): retrieve it, commit it and deploy it. - In the target org, deploy the kit's components with
POST /services/data/v66.0/ssot/data-kits/{dataKitDevName}and acomponentsarray of{ "type", "config" }objects. Configs from Salesforce's payload guide:
type | config fields |
|---|---|
DataStreamBundle (CRM) | bundleName, forceNoRefresh, bundleConfig.orgId |
DataLakeObject | dataSourceObjectDevName, apiName, label, dataSpaceName |
IdentityResolution | dataSpaceName, templateDevName, dataKitDevName |
CalculatedInsight | apiName, apiNameOverride, label, publishInterval |
DataTransform (batch) | dataTransformDevName, apiName, label, dataSpaceName, overrides |
DataSemanticSearch | dataSpaceName, searchIndexName, dataKitName |
MarketSegment | name, dataKitName |
AI Retriever, Activation, Data Custom Code and others are supported too, but the guide gives no example payload for them.
Related endpoints:
GET /ssot/data-kitsand/ssot/data-kits/available-components;GET /ssot/datakit/{name}/manifest(note the singulardatakit);POST …/data-kits/{name}/undeploy;- per-component
…/components/{component}/dependenciesand…/deployment-status.
Per a community audit of Salesforce's v67 spec, there is no get-single-kit or deploy-job status resource: poll component status instead. That audit also found that deploying a kit into the org that built it was rejected. Deploy to a different org.
Capture and replay
The nested request bodies for identity resolution, search indexes and data graphs didn't render for the hub in Salesforce's Connect API reference. The reference page itself (developer.salesforce.com/docs/data/connectapi/references/spec) has the OpenAPI document, about 201 operations at v67 per the community audit; download it there. For a script that must not guess:
- Build the component once in a development org, in the UI or by API.
GETit and remove server-owned fields: IDs, status, run times, created and modified stamps.- Commit the JSON next to the pipeline.
- In other orgs, look it up by name, and
POSTit if it's absent orPATCHit if it differs.
guides/data360/automate-the-golden-record-pipeline.md implements this.
Order of operations
- Manual and Setup:
- Data 360 provisioned;
- Einstein and Agentforce on (
guides/agentforce/build-agent-with-agentforce-dx.md); - the integration user's Data 360 permission sets;
- the CRM connection;
- the agent user's Data 360 access and data space scope.
- Streams for Account, Contact, Order, OrderItem and Product2 → wait for the first refresh.
- Mappings, including Order → Sales Order and OrderItem → Sales Order Product.
- Identity resolution rulesets → run → wait (up to 30 minutes).
- Calculated insights → run.
- Narrative DMO and its transform → run. Then the search index → Ready, the data graph → refresh, and the retriever → active.
- Data Library (
sf agent adl create) → agent publish and activate → agent tests.
Rules for the scripts
- Idempotent: every step reads before it writes, and the script can be re-run after any failure.
- Gate the credit-consuming steps behind an explicit flag: stream runs, identity resolution runs, insight runs, index builds and data graph refreshes all consume Data 360 credits (family 10).
- Respect run limits: identity resolution on-demand runs are limited per day (
reference/data360/identity-resolution.md). - Verify with SQL after each stage: counts in the DLO, DMO, unified, CIO and chunk objects, through
query-sql. - Tools: no official
sfplugin manages Data 360 setup. A community plugin,@anushdsouza/sf-plugin-data360, wraps 135 operations and is an experimental beta, not a Salesforce product. Its source is a useful map of endpoint paths.