Common Node.js library for the Layer Integration Development Kit
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Layer IDK

npm version Build Status

This is a Node.js library that is designed to be used with Layer Integration Development Kit (IDK).

It provides common functionality for validating & processing Layer Webhooks and access to common Layer Server API operations.


To use this library you need to pass configuration object into the constructor. Configuration object should be a layer_config.json file which is a part of Layer Integration Development Kit.

const LayerIDK = require('@layerhq/idk')
const config = require('./layer_config.json')

const layerIDK = new LayerIDK(config)

Configuration file is generated buy a Layer Integrations command line tool. At a minimum config JSON has the following format:

  "app_id": "layer:///apps/staging/ffffffff-ffff-ffff-ffff-ffffffffffff",
  "webhook": {
    "secret": "supersecret",
    "events": ["Message.created"]
  "api": {
    "token": "abcdefg"


Every integration is powered by a Layer Webhook which is registered to listen for a set of events in an application.

.webhook(headers, body)

Validate and process a webhook by passing in HTTP headers object and POST request body. This is a synchronous function which will return webhook payload or throw an error that needs to be captured and handled.


  • headers - Webhook HTTP headers
  • body - Webhook HTTP request body as a JSON string


try {
  const webhook = layerIDK.webhook(headers, body)
  // webhook payload
} catch (err) {


We provide a logger interface to unify log severity levels, abstract some of the Cloud Provider specific functionality and enable optional monitoring capabilities.


Get logger interface by passing in the cloud function context object.


  • context - Cloud function context object (AWS or Azure)


const log = layerIDK.logger(context)'Hello world', { foo: 'bar' })
log.error('Error', new Error('Oops'))

Available levels: debug, info, warn, error, none. Every level accepts the following function parameters: (message, object)

You can set log level by setting LOG_LEVEL=error env variable.


Logger has a built in monitoring capabilities. Read about monitoring here.


Access common Layer Server API operations via .api namespace. Read API documentation here.


These are the utility functions exposed statically via LayerIDK class. Read documentation here.

AWS Example

The following example shows how to use Amazon AWS API Gateway inside your Serverless handler.

const LayerIDK = require('@layerhq/idk')
const config = require('./layer_config.json')

const layerIDK = new LayerIDK(config)

exports.webhook = (event, context, callback) => {
  const log = layerIDK.logger(contex)

  try {
    const webhook = layerIDK.webhook(event.headers, event.body)
    // webhook payload'Webhook:', webhook)
    callback(null, { statusCode: 200 })
  } catch (err) {
    log.error('Webhook:', err)