Simple Javascript wrapper for the Emarsys API.
Important: This library does not support WSSE authentication. It is intended only to be used by Emarsys add-ons and internal services.
npm install --save suite-js-sdk
npm test
Releases are automatized with semantic-release. Whether a release is triggered, and whether it is major, minor, or patch increase, is based the on commit message, follow the conventions.
This wrapper tries to implement all available methods of the Emarsys API in a node fashion, exposing a Promise-only interface.
However, the Emarsys API lacks a decent amount of methods that you expect an API to provide. Thus, if methods are missing or a certain implementation style was chosen it is most likely due to the inconsistency of the API itself. Feel free to get in touch or submit a pull request if you encounter any problems.
If you want to debug. Set your environment variables
DEBUG=suite-sdk,suiterequest
The koa bodyparser module should be installed and in use before the use of the koaMiddleware.
npm install koa-bodyparser -S
In application configuration:
var bodyParser = require('koa-bodyparser');
var app = koa();
app.use(bodyParser());
Set your environment variables
SUITE_ESCHER_SECRET=yourEscherSecret
SUITE_ESCHER_CREDENTIAL_SCOPE=yourEscherCredentialScope
var middleware = require('suite-js-sdk').authentication.koaMiddleware.getMiddleware();
If the authentication fails it throws an error with 401 code. If the authentication success it decorates the request with a validatedData property. It contains the signed parameters.
var middleware = require('suite-js-sdk').translations.koaMiddleware.decorateRenderWithTranslations();
The middleware use 'validatedData' from the request. 'validatedData' must contain an 'environment' property. If you want to load an admins language then 'validatedData' must contain a 'customer_id' and an 'admin_id' properties. If you want to load a specific language then 'validatedData' must contain a 'language' property.
Middleware decorates the render method. It will add 'translations' object as render data. It also adds a '_' method as render data. So you can use it for translations.
translations = {
dialogs: {
invitation: {
confirmation: {
message: 'test string with %s and with %s'
}
}
}
}
in your jade file
p.message= _('dialogs.invitation.confirmation.message', [ 'firstParameter', 'second parameter'])
Authenticate with the api credentials provided by your Emarsys account manager.
Set your environment variables
SUITE_API_KEY=yourApiKey
SUITE_API_SECRET=yourSecretKey
After in your Codebase
var SuiteAPI = require('suite-js-sdk').api;
var suiteAPI = SuiteAPI.create(options);
-
{String} customerId
: the id of the customer -
{String} apiKey
: API key -
{String} apiSecret
: API secret -
{String} environment
: API environment
Each of the following methods take a last options
parameter as a last argument. With
this options set you can override the customerId
, escherOptions
, etc. that you had defined when created an
instance from the API client, like:
var SuiteAPI = require('suite-js-sdk').api;
var suiteAPI = SuiteAPI.create({
customerId: 1083232
});
suiteAPI.administrator.getAdministrators({}, {
customerId: 20234245
});
In the example above, the API will be called with customerId = 20234245
.
suiteAPI.administrator.getAdministrators(payload, options);
Data of an admin can be queried by providing its name.
suiteAPI.administrator.getAdministratorByName(payload, options);
suiteAPI.administrator.patchAdministrator(payload, options);
suiteAPI.administrator.createAdministrator(payload, options);
suiteAPI.administrator.deleteAdministrator(payload, options);
Changes the status of the admin to disabled so logging in will not be possible.
suiteAPI.administrator.disableAdministrator(payload, options);
Changes the status of the disabled admin back to enabled so logging in becomes possible.
suiteAPI.administrator.enableAdministrator(payload, options);
suiteAPI.administrator.getInterfaceLanguages(payload, options);
Returns the start pages of an administrator.
suiteAPI.administrator.getStartPages(payload, options);
suiteAPI.administrator.getAccessLevels(payload, options);
Levels up an admin to a superadmin.
suiteAPI.administrator.promoteToSuperadmin(payload, options);
Creates a superadmin.
suiteAPI.administrator.createSuperadmin(payload, options);
Sets the status of the admin to disabled and invites the admin again. The admin can log in only after completing the necessary data on the invitation form.
suiteAPI.administrator.inviteExistingAdministrator(payload, options);
suiteAPI.automationCenter.programResource(payload, options);
suiteAPI.automationCenter.programsEntrypoints(payload, options);
suiteAPI.campaign.create(payload, options);
suiteAPI.campaign.update(payload, options);
suiteAPI.condition.list(payload, options);
suiteAPI.condition.listWithContactFields(payload, options);
suiteAPI.contact.getData(payload, options);
To return the contacts with string field ids, specify { stringIds: true }
in the options.
suiteAPI.contact.getData(payload, { stringIds: true });
suiteAPI.contact.create(payload, options);
suiteAPI.contact.merge(payload, options);
suiteAPI.contact.update(payload, options);
suiteAPI.contact.createOrUpdate(payload, options);
suiteAPI.contact.delete(payload, options);
suiteAPI.contact.checkIds(payload, options);
suiteAPI.contact.lastChange(payload, options);
suiteAPI.contactList.create(payload, options);
suiteAPI.contactList.list(payload, options);
suiteAPI.contactList.fetch(payload, options);
suiteAPI.contactList.add(payload, options);
suiteAPI.contactList.listContactLists(payload, options);
suiteAPI.contactList.count(payload, options);
suiteAPI.contactList.getContactsData(payload, options);
suiteAPI.contactList.deleteList(payload, options);
suiteAPI.externalEvent.create(payload, options);
suiteAPI.externalEvent.list(payload, options);
suiteAPI.externalEvent.get(payload, options);
suiteAPI.externalEvent.update(payload, options);
suiteAPI.externalEvent.delete(payload, options);
suiteAPI.externalEvent.trigger(payload, options);
Lists available languages for a customer in the customer's own language.
suiteAPI.language.translate(payload, options);
suiteAPI.settings.getSettings(payload, options);
Lists the permitted corporate domains of the customer. If corporate domains are set, registration is possible only with those email addresses which meet these requirements.
suiteAPI.settings.getCorporateDomains(payload, options);
Accepted corporate domains can be defined.
suiteAPI.settings.setCorporateDomains(payload, options);
Lists the permitted IP address rules (e.g. 192.168.* allows IP addresses which start with these two numbers and can end in any numbers).
suiteAPI.settings.getIpRestrictions(payload, options);
Possible IP address rules can be defined.
suiteAPI.settings.setIpRestrictions(payload, options);
suiteAPI.settings.getLanguages(payload, options);
Get security settings (IP whitelisting enabled option)
suiteAPI.settings.getSecuritySettings(payload, options);
Set security settings (IP whitelisting enabled option)
suiteAPI.settings.setSecuritySettings(payload, options);
suiteAPI.settings.getDeliverabilitySenderDomains(payload, options);
suiteAPI.settings.setDeliverabilitySenderDomain(payload, options);
suiteAPI.email.create(payload, options);
suiteAPI.email.copy(payload, options);
suiteAPI.email.updateSource(payload, options);
suiteAPI.email.launch(payload, options);
suiteAPI.email.launchList(payload, options);
suiteAPI.email.list(payload, options);
suiteAPI.email.get(payload, options);
suiteAPI.email.patch(payload, options);
suiteAPI.email.sendTestMail(payload, options);
The payload must contain an email_id
, which is the broadcast campaign id
suiteAPI.email.broadcast(payload, options);
suiteAPI.email.getDeliveryStatus(payload, options);
suiteAPI.email.responses(payload, options);
Returns the summary of the responses of a launched, paused, activated or deactivated email campaign.
suiteAPI.email.getResponseSummary(payload, options);
Lists all possible alternate texts with their email campaigns. Alternate texts are defined for a specific field, and displayed in the email campaign if this field has no value.
suiteAPI.email.getPersonalizations(payload, options);
Updates alternate texts.
suiteAPI.email.setPersonalizations(payload, options);
suiteAPI.email.createTrackedLink(payload, options);
suiteAPI.email.getTrackedLinks(payload, options);
suiteAPI.email.updateTrackedLink(payload, options);
suiteAPI.email.deleteTrackedLinks(payload, options);
suiteAPI.email.getContacts(payload, options);
suiteAPI.email.deleteTrackedLinksBySource(payload, options);
suiteAPI.email.listPrograms(payload, options);
suiteAPI.segment.listContacts(payload, options);
suiteAPI.segment.countContacts(payload, options);
suiteAPI.segment.listSegments(payload, options);
suiteAPI.segment.getSegment(payload, options);
suiteAPI.segment.create(payload, options);
suiteAPI.segment.getContactCriteria(payload, options);
suiteAPI.segment.updateContactCriteria(payload, options);
suiteAPI.segment.runForSingleContact(payload, options);
suiteAPI.segment.singleContactRunStatus(payload, options);
suiteAPI.segment.runForMultipleContacts(payload, options);
suiteAPI.segment.multipleContactsRunStatus(payload, options);
suiteAPI.combinedSegment.list(payload, options);
suiteAPI.combinedSegment.create(payload, options);
suiteAPI.combinedSegment.get(payload, options);
suiteAPI.combinedSegment.update(payload, options);
Lists the purchases of customer for a date range.
suiteAPI.purchase.list(payload, options);
Statistics about the purchases of customer.
suiteAPI.purchase.stats(payload, options);
suiteAPI.field.create(payload, options);
suiteAPI.field.get(payload, options);
suiteAPI.field.getChoices(payload, options);
suiteAPI.field.getMultipleChoices(payload, options);
suiteAPI.field.delete(payload, options);
suiteAPI.export.getData(payload, options);
suiteAPI.export.getChanges(payload, options);
Manage customer PKI options
suiteAPI.keyring.list(payload, options);
suiteAPI.keyring.get(payload, options);
suiteAPI.keyring.create(payload, options);
suiteAPI.keyring.delete(payload, options);
suiteAPI.source.create(payload, options);
suiteAPI.source.listSources(payload, options);