Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

wip-webhook-helper

Enngage12MIT0.0.4TypeScript support: included

This utility helps with webhook notifications from Kentico Kontent

Kentico, Kontent, Kentico Kontent, Kontent Webhook, Kontent Signature

readme

npm version

Kontent Webhook helper

This package aims to help you with Webhooks received from Kentico Kontent projects. Currently, it:

  • Helps with signature verification as per signatures
  • Provides types for webhook response (only for Typescript)

Installation

Install package:

npm i wip-webhook-helper

Signature verification

To verify whether a signature is valid use:

import { signatureHelper } from 'wip-webhook-helper';

const isValid = signatureHelper.isValidSignatureFromString(
    payload, // payload converted to string 
    secret, // secret can be obtained from Webhook definition in Kentico Kontent project
    signature // can be obtained from 'x-kc-signature' header present in webhook request);

Generate hash

import { signatureHelper } from 'wip-webhook-helper';

const hash = signatureHelper.getHashFromString(payload, secret);

Response model types

If you are using Typescript you may use provided interfaces to access webhook properties in a strongly typed manner.

Delivery webhook response

import { IWebhookWorkflowResponse } from 'wip-webhook-helper';

const rawResponse = {
    "data": {
        "items": [
            {
                "id": "e5d575fe-9608-4523-a07d-e32d780bf92a",
                "codename": "this_article_changed",
                "language": "en-US",
                "type": "article"
            }
        ],
        "taxonomies": [
            {
                "id": "4794dde6-f700-4a5d-b0dc-9ae16dcfc73d",
                "codename": "personas"
            }
        ]
    },
    "message": {
        "id": "e1b372a2-1186-4929-b370-904c59f060b7",
        "project_id": "bf32e7ab-85c3-0073-47b9-90838a8462de",
        "type": "taxonomy",
        "operation": "upsert",
        "api_name": "delivery_production",
        "created_timestamp": "2019-07-18T10:52:33.1059256Z",
        "webhook_url": "https://myapp.com/webhook-endpoint"
    }
};

const response = rawResponse as IWebhookDeliveryResponse;

Workflow webhook response

import { IWebhookWorkflowResponse } from 'wip-webhook-helper';

const rawResponse = {
    "data": {
        "items": [
            {
                "item": {
                    "id": "65f05e0f-40c3-436b-a641-e2d4cae16e46"
                },
                "language": {
                    "id": "00000000-0000-0000-0000-000000000000"
                },
                "transition_from": {
                    "id": "eee6db3b-545a-4785-8e86-e3772c8756f9"
                },
                "transition_to": {
                    "id": "03b6ebd3-2f49-4621-92fd-4977b33681d1"
                }
            }
        ]
    },
    "message": {
        "id": "e1b372a2-1186-4929-b370-904c59f060b7",
        "project_id": "bf32e7ab-85c3-0073-47b9-90838a8462de",
        "type": "taxonomy",
        "operation": "upsert",
        "api_name": "delivery_production",
        "created_timestamp": "2019-07-18T10:52:33.1059256Z",
        "webhook_url": "https://myapp.com/webhook-endpoint"
    }
};

const response = rawResponse as IWebhookWorkflowResponse;