Skip to content

NodeJS library to interact with the iterable.com API.

License

Notifications You must be signed in to change notification settings

geoffdutton/iterable-api

Folders and files

NameName
Last commit message
Last commit date
Oct 26, 2021
Jan 13, 2020
Feb 4, 2022
Feb 6, 2022
Jan 15, 2020
Jan 8, 2020
May 20, 2020
Feb 11, 2022
Mar 19, 2019
Mar 13, 2019
Feb 4, 2022
Jan 8, 2020
Jul 20, 2023
Apr 21, 2022

Repository files navigation

Node Iterable API

JavaScript Style Guide Node CI Coverage Status npm version Known Vulnerabilities

Credit: seanmcgary/iterable

Install

npm install node-iterable-api

Example

const client = require('node-iterable-api').create('<iterable api key>')

return client.lists.get()
  .then(res => {
    console.log(res.lists)
  })
  .catch(err => {
    console.log(err)
  })

Resources

All resources are taken from those available in the Iterable API documentation.

Note: Not all resources are implemented yet. You can see which ones in lib/api.js.

Resources are addressable by calling:

// If param is a string, it'll append it to the resource path
// Otherwise you can just past an object that will either be
// passed to the body on a POST/PUT request, or as query
// string params in the case of a GET request
iterableInstance[<resource name>][<resource action>](param[, payload])

// e.g. to get lists:
iterableInstace.lists.get()
  .then(data => {
	// data response
  })

// e.g. bulk update users
iterableInstace.users.bulkUpdate({
	users: [
        {
            email: 'foo@bar.com',
            dataFields: {
                // some data fields
            },
            userId: "someUserId"
        }
	]
})

Currently implemented resources are as follows:

lists
  GET    - /lists
  POST   - /lists
  DELETE - /lists
  GET    - /lists/getUsers
  POST   - /lists/subscribe
  POST   - /lists/unsubscribe
events
  GET    - /events
  POST   - /events/track
  POST   - /events/trackBulk
  POST   - /events/trackInAppOpen
  POST   - /events/trackInAppClick
  POST   - /events/trackWebPushClick
  POST   - /events/trackPushOpen
users
  GET    - /users
  DELETE - /users
  POST   - /users/update
  POST   - /users/updateEmail
  POST   - /users/bulkUpdate
  POST   - /users/registerDeviceToken
  POST   - /users/updateSubscriptions
  POST   - /users/bulkUpdateSubscriptions
  GET    - /users/getFields
  GET    - /users/getSentMessages
  POST   - /users/disableDevice
inApp
  GET    - /inApp/getMessages
push
  POST   - /push/target
campaigns
  POST   - /campaigns/create
channels
  GET    - /channels
commerce
  POST   - /commerce/trackPurchase
  POST   - /commerce/updateCart
email
  GET    - /email/viewInBrowser
  POST   - /email/target
workflows
  POST   - /workflows/triggerWorkflow
sms
  POST   - /sms/target
webPush
  POST   - /webPush/target
messageTypes
  GET    - /messageTypes
experiments
  GET    - /experiments/metrics
catalogs
  GET    - /catalogs
  POST   - /catalogs
  DELETE - /catalogs
catalogs.fieldMappings
  GET    - /catalogs/{catalogName}/fieldMappings
  PUT    - /catalogs/{catalogName}/fieldMappings
catalogs.items
  GET    - /catalogs/{catalogName}/items
  PUT    - /catalogs/{catalogName}/items
  POST   - /catalogs/{catalogName}/items
  PATCH  - /catalogs/{catalogName}/items
  DELETE - /catalogs/{catalogName}/items
subscriptions
  PUT    - /subscriptions
subscriptions.user
  PATCH  - /subscriptions/{subscriptionGroup}/{subscriptionGroupId}/user
  DELETE - /subscriptions/{subscriptionGroup}/{subscriptionGroupId}/user

Development

To run the full tests with coverage:

npm test

To run test driven development:

npm run tdd

To list the implemented resources:

node index.js

Contributors