Nutrient Packed Morsels

    @kontent-ai/webhook-helper
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.1 • Public • Published

    npm version Build

    Kontent Webhook helper

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

    Installation

    Install package:

    npm i @kontent-ai/webhook-helper

    Signature verification

    To verify whether a signature is valid use:

    import { signatureHelper } from '@kontent-ai/webhook-helper';
    
    const isValid = signatureHelper.isValidSignatureFromString(
        payload, // the original string payload 
        secret, // secret can be obtained from Webhook definition in Kontent project
        signature // can be obtained from 'x-kc-signature' header present in webhook request);

    Keep in mind that the contents of payload have to be exactly the same (including whitespaces) as the original webhook body, otherwise, the validation will fail. If you already parsed the payload into an object, you should be able to transform it back to the way it originaly was with these settings:

    const payload: string = JSON.stringify(jsonPayload,null,2);

    Generate hash

    import { signatureHelper } from '@kontent-ai/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 '@kontent-ai/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 '@kontent-ai/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;

    Install

    npm i @kontent-ai/webhook-helper

    DownloadsWeekly Downloads

    24

    Version

    2.0.1

    License

    MIT

    Unpacked Size

    53.4 kB

    Total Files

    112

    Last publish

    Collaborators

    • enngage
    • simply007