@evokegroup/salesforce
Library for limited Salesforce integration
Class: Salesforce
Class: Salesforce.Api
constructor(args)
| Parameter | Type | Default | Description |
|---|
| authorizer | OAuth2.Authorizer | | |
| clientId | string | | |
| clientSecret | string | | |
| subdomain | string | | |
| authOrigin | string | auth.marketingcloudapis.com | |
| restOrigin | string | rest.marketingcloudapis.com | |
| timeout | number | 30000 | |
| logger | Logger, | | A Logger to output logs to |
authenticate() => Promise<OAuth2.AccessToken>
Authenticates. Called automatically.
dataQuery(args)
Queries a data extension. The filter + fields query string character length must be <= 2048 characters when url encoded. See Utility.createDataQueryValueBatches to break large queries into batches.
| Parameter | Type | Default | Description |
|---|
| dataExtension | string | | The name of the data extension to query |
| filter | Salesforce.Api.FilterGroup, Salesforce.Api.Filter | | The query filter |
| fields | Array<string> | | The fields to return |
| output | Salesforce.Api.OutputFormat | Salesforce.Api.OutputFormat.Json | The output format |
| transform | boolean | true | Transforms the data returned to match the fields given |
const Salesforce = require('@evokegroup/salesforce');
const sf = new Salesforce.Api({
subdomain: 'abc123',
clientId: 'qwer456',
clientSecret: 'poiu0987'
});
sf.dataQuery({
dataExtension: 'DE_Custom_Contact',
filter: new Salesforce.Api.FilterGroup({
type: Salesforce.Api.FilterGroupType.And,
filters: [
new Salesforce.Api.FilterGroup({
type: Salesforce.Api.FilterGroupType.Or,
filters: [
new Salesforce.Api.Filter({
key: 'Contact Key',
value: 'guid-1'
}),
new Salesforce.Api.Filter({
key: 'Contact Key',
value: 'guid-2'
})
]
}),
new Salesforce.Api.Filter({
key: 'Custom Field Name',
value: 'Evoke'
})
]
}),
fields: ['Contact Key', 'Custom Field Name', 'Another Field']
})
.then((data) => {
console.log(data);
/*
[{
'Contact Key': 'guid-1',
'Custom Field Name': 'Evoke',
'Another Field': 'abc'
}, {
'Contact Key': 'guid-2',
'Custom Field Name': 'Evoke',
'Another Field': 'def'
}]
*/
})
.catch((ex) => {
console.log(ex);
});
dataInsertAsync(args)
| Parameter | Type | Default | Description |
|---|
| dataExtension | string | | The name of the data extension |
| items | Array<object> | | The data items to insert |
| output | Api.OutputFormat, Salesforce.Api.OutputFormat | Salesforce.Api.OutputFormat.Json | The output format |
dataUpsertAsync(args)
| Parameter | Type | Default | Description |
|---|
| dataExtension | string | | The name of the data extension |
| items | object | | The data extension data to upsert |
| output | Salesforce.Api.OutputFormat | Salesforce.Api.OutputFormat.Json | |
interactionEvent(args)
| Parameter | Type | Default | Description |
|---|
| contactKey | string | | The contact key |
| eventDefinitionKey | string | | The event definition key |
| data | object | | The event data |
| output | Salesforce.Api.OutputFormat | Salesforce.Api.OutputFormat.Json | |
Class: Salesforce.Api.TokenAuthorizerV2 extends OAuth2.WebTokenAuthorizer
constructor({ subdomain, clientId, clientSecret, logger, authOrigin, timeout })
Class: Salesforce.Api.Filter
constructor(args)
| Parameter | Type | Default | Description |
|---|
| key | string | | This filter key (typically the field name) |
| value | string | | The value to filter on |
| comparison | string | Api.FilterComparison.Equals | The filter value comparison operator |
Properties
| Name | Type | Default | Description |
|---|
| key | string | | This filter key (typically the field name) |
| value | string | | The value to filter on |
| comparison | string | Api.FilterComparison.Equals | The filter value comparison operator |
Methods
toQuerystring()
Class: Salesforce.Api.FilterEquals extends Salesforce.Api.Filter
constructor(key, value)
| Parameter | Type | Default | Description |
|---|
| key | string | | This filter key (typically the field name) |
| value | string | | The value to filter on |
Class: Salesforce.Api.FilterGroup
constructor(args)
| Parameter | Type | Default | Description |
|---|
| type | string | Api.FilterGroupType.And | The operator the join filters with |
| filters | Array<object> | | An array containing Filters and/or FilterGroups |
Class: Salesforce.Api.FilterGroupAnd extends Salesforce.Api.FilterGroup
| Parameter | Type | Default | Description |
|---|
| filter | Array<Salesforce.Api.Filter>, Salesforce.Api.Filter | | An array of Salesforce.Api.Filter or any number of filter paramters |
Class: Salesforce.Api.FilterGroupOr extends Salesforce.Api.FilterGroup
| Parameter | Type | Default | Description |
|---|
| filter | Array<Salesforce.Api.Filter>, Salesforce.Api.Filter | | An array of Salesforce.Api.Filter or any number of filter paramters |
Enumeration: Salesforce.Api.FilterComparison
Enumeration: Salesforce.Api.FilterGroupType
Enumeration: Salesforce.Api.OutputFormat
Class: Salesforce.Constants
static DATA_QUERY_CHARACTER_LIMIT
The maximum number of characters allowed (2048) in a data queries filter and fields.
Class: Salesforce.Utility
static batchItems(items, { maxBytes, encoding })
Create item batches that are less than a given maximum byte size
static createDataQueryValueBatches({ filterKey, filterValues, fields, filterGroupType, filterComparisonType }) => Array<Array>
Separates large queries into batches which will be under the data query maximum character limit. Returns an array of arrays of unique filter values
| Parameter | Type | Default | Description |
|---|
| filterKey | string | | The filter key |
| filterValues | Array<string> | | The filter values |
| fields | Array<string> | | The fields the query would return |
| filterGroupType | Salesforce.Api.FilterGroupType.Or | | The filter group type |
| filterComparisonType | Salesforce.Api.FilterComparison.Equals | | The filter comparison |
const values = [...]; // A large number of filter values
const batches = Salesforce.Api.createDataQueryValueBatches({ filterKey: 'Email', filterValues: values, fields: ['Email', 'First Name', 'Last Name'] });
/* batches = [
[...],
[...],
[...]
] */