0.0.4 • Published 2 years ago

@boozt/sfmc-request v0.0.4

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

sfmc-request

Many years ago, one decided to take matters into their own hands and build a module that would help people avoid the unbearable burden of dealing with unexpected responses from the Marketing Cloud API.

The hero tried to use the existing SDKs and thoughtfully inspect the documentation. After some time of careful research, his labors were rewarded and this package was born.

At the moment, this is limited but quite useful functionality that will be expanded later.

what is the capable for?

  • DataExtensionRow (Insert, Update, Get, Delete) — sync calls
  • DataExtensionRowAsync (Insert, Upsert, Status, Result) — async calls

example of use

import { Client, DataExtensionRowAsync, DataExtensionRow } from '@boozt/sfmc-request'

const client = new ClientProvider(SFMC_BASE_URL, SFMC_SOAP_URL, SFMC_TOKEN_URL, [
      { name: SFMC_UNIT_NAME, clientId: SFMC_CLIENT_ID, clientSecret: SFMC_CLIENT_SECRET }
    ]).getClient(SFMC_UNIT_NAME)

const requestAsync = new DataExtensionRowAsync(client)
const requestSync = new DataExtensionRow(client)

const upsertResult = await requestAsync.upsert(TARGET_DE_KEY, upsertData)

if (upsertResult.ok) {
    logger.status(`Update successful, requestId: ${upsertResult.value.requestId}`)
} else if (upsertResult.ok === false) {
    return res.status(500).send(upsertResult.error.message)
}

const deleteResult = await requestSync.delete({ key: TARGET_DE_KEY }, deleteData)

if (deleteResult.ok) {
    logger.status(`Deletion successful, requestId: ${deleteResult.value.RequestID}`)
} else if (deleteResult.ok === false) {
    return res.status(500).send(JSON.stringify(deleteResult.error))
}

nice things

  • you can use your own implementation of the client
  • the module is covered with types as much as it could be done for a quick start
  • it will get more abilities in the foreseeable future