Skip to content

Commit

Permalink
prep: delete helper (#7)
Browse files Browse the repository at this point in the history
ok
  • Loading branch information
ttntm committed Feb 8, 2024
1 parent 52f0818 commit 38cd02b
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 2 deletions.
21 changes: 19 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,30 @@ Used to update a record in an SF CRM object.

### Params

- `type`: _string_ - SF CRM object API name, i.e. "Contact", "ema_CustomObject__c"
- `type`: _string_ - SF CRM object API name, i.e. "Contact", "ns_CustomObject__c"
- `props`: _object_ - An object containing the new record's fields and values

### Returns

_Object | `undefined`_

## [deleteContactsByKey](./src/deleteContactsByKey.js)

Triggers SFMC contact deletion via API.

Docs: [REST Reference](https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/DeleteByContactKeys.html)

Requires valid token data obtained from a [getToken()](./src/getToken.js) call.

### Params

- `tokenData`: _object_ - SFMC REST API token
- `contactKeys`: _string[]_ - An array of contact keys deletion should be triggered for

### Returns

_Object_ | `undefined`

## [deleteDataExtRow](./src/deleteDataExtRow.js)

This function deletes a row in an SFMC data extension.
Expand Down Expand Up @@ -295,7 +312,7 @@ Used to update a record in an SF CRM object.

### Params

- `type`: _string_ - SF CRM object API name, i.e. "Contact", "ema_CustomObject__c"
- `type`: _string_ - SF CRM object API name, i.e. "Contact", "ns_CustomObject__c"
- `sfObjId`: _string_ - SF CRM record id, i.e. 003... for a ContactKey
- `props`: _object_ - An object containing the fields to update and their new values

Expand Down
1 change: 1 addition & 0 deletions include.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
./src/createLogRow.js
./src/createSalesforceObject.js
./src/deleteContactsByKey.js
./src/deleteDataExtRow.js
./src/getAllRows.js
./src/getRowData.js
Expand Down
28 changes: 28 additions & 0 deletions src/deleteContactsByKey.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* Triggers SFMC contact deletion via API
* @param {object} tokenData SFMC REST API token
* @param {string[]} contactKeys An array of contact keys deletion should be triggered for
* @returns {object | undefined}
*/
function deleteContactsByKey(tokenData, contactKeys) {
if (!tokenData || !tokenData.token || !tokenData.restInstanceURL) {
return undefined
}

if (!contactKeys || contactKeys.length <= 0) {
return undefined
}

var headerNames = ['Authorization']
var headerValues = ['Bearer ' + tokenData.token]
var requestData = {
values: contactKeys,
DeleteOperationType: 'ContactAndAttributes'
}
var requestUrl = tokenData.restInstanceURL + '/contacts/v1/contacts/actions/delete?type=keys'
var triggerDelete = HTTP.Post(requestUrl, 'application/json; charset=utf-8', Stringify(requestData), headerNames, headerValues)

return triggerDelete.Response && triggerDelete.Response[0]
? Platform.Function.ParseJSON(triggerDelete.Response[0])
: undefined
}
30 changes: 30 additions & 0 deletions utils_full.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,35 @@ function sfmcUtils() {
: { error: 'Error creating SF record' }
}

/**
* Triggers SFMC contact deletion via API
* @param {object} tokenData SFMC REST API token
* @param {string[]} contactKeys An array of contact keys deletion should be triggered for
* @returns {object | undefined}
*/
function deleteContactsByKey(tokenData, contactKeys) {
if (!tokenData || !tokenData.token || !tokenData.restInstanceURL) {
return undefined
}

if (!contactKeys || contactKeys.length <= 0) {
return undefined
}

var headerNames = ['Authorization']
var headerValues = ['Bearer ' + tokenData.token]
var requestData = {
values: contactKeys,
DeleteOperationType: 'ContactAndAttributes'
}
var requestUrl = tokenData.restInstanceURL + '/contacts/v1/contacts/actions/delete?type=keys'
var triggerDelete = HTTP.Post(requestUrl, 'application/json; charset=utf-8', Stringify(requestData), headerNames, headerValues)

return triggerDelete.Response && triggerDelete.Response[0]
? Platform.Function.ParseJSON(triggerDelete.Response[0])
: undefined
}

/**
* Delete a row in an SFMC data extension
* @param {string} ext Data extensions external key
Expand Down Expand Up @@ -599,6 +628,7 @@ function sfmcUtils() {
return {
createLogRow: createLogRow
, createSalesforceObject: createSalesforceObject
, deleteContactsByKey: deleteContactsByKey
, deleteDataExtRow: deleteDataExtRow
, getAllRows: getAllRows
, getRowData: getRowData
Expand Down

0 comments on commit 38cd02b

Please sign in to comment.