Credentials
For us to extract data from SFDC APIs on your behalf, we need your Salesforce domain. For more information on how we integrate with SFDC click here.
Authorization Request
To retrieve an access token required for all data requests, we make an initial authorization request to <https://login.salesforce.com/services/oauth2/token
>.
These fields are required in the param of the login request:
grant_type
client_id
client_secret
refresh_token
Authorization request values
client_id
andclient_secret
are values used to identify Simon and are identical across all authorization requests for every client using our Salesforce.com integration.
We use refresh_token
as the grant_type
We use [refresh_token', 'api
] as our scope.
For information on the resources this scope grants click here.
Supported Objects
Available endpoints for the Salesforce ingestor depend on your Salesforce instance. Before pulling new Salesforce data for your account, a list of these endpoints and their schemas are dynamically fetched.
Endpoint Base: <https://{your_instance}.salesforce.com/
>
- Get Objects/Endpoints
- Get Object Descriptions
- Get Object Deletions
FAQ
-
Why am I seeing different Record IDs for the same data in Salesforce vs Simon?
This is a well-documented intricacy of Salesforce Record IDs. Click here for a more detailed explanation. -
How do I revoke Simon’s access to our SFDC and SFSC data?
Click here for instructions -
How are SFDC and SFSC extractions different?
To maintain incrementality while fetching data from the SFDC and SFSC APIs, object additions and deletions are ingested via two separate endpoints. The endpoint corresponding to the deleted objects have the suffix_DELETED
.Records are ingested when added or updated, meaning that updated records will be duplicates of the previous version of those records
In order to use current data, you account manager can build data lake that joins the two tables populated by the two associated streams, removes deleted records, and removes duplicate records. For example:
with max_contact as (
select
*
from (
select
*,
row_number() over (partition by id order by systemmodstamp ) as row_num
from salesforce_contact c
)
left join salesforce_contact_DELETED cd on c.id = cd.id
where row_num = 1 and isdeleted = false and cd.id is null
)