Skip to content

Latest commit

 

History

History
116 lines (92 loc) · 3.56 KB

README.md

File metadata and controls

116 lines (92 loc) · 3.56 KB

npm version Build

Kontent Webhook helper

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

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

Installation

Install package:

npm i @kentico/kontent-webhook-helper

Signature verification

To verify whether a signature is valid use:

import { signatureHelper } from '@kentico/kontent-webhook-helper';

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

Generate hash

import { signatureHelper } from '@kentico/kontent-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 { IWebhookDeliveryResponse } from '@kentico/kontent-webhook-helper';

const rawResponse = {
    "data": {
        "items": [
            {
                "id": "e5d575fe-9608-4523-a07d-e32d780bf92a",
                "codename": "this_article_changed",
                "collection": "default",
                "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 '@kentico/kontent-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;