@evokegroup/salesforce

2.0.1 • Public • Published

@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

constructor(filters[, ...filter])

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

constructor(filters[, ...filter])

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 = [
  [...],
  [...],
  [...]
] */

Readme

Keywords

none

Package Sidebar

Install

npm i @evokegroup/salesforce

Weekly Downloads

5

Version

2.0.1

License

ISC

Unpacked Size

24.9 kB

Total Files

6

Last publish

Collaborators

  • ybevoke
  • jtsuyuki
  • evokejames
  • evoke-cjamodeo