Webhooks

The Webhooks module in the EShopBox SDK allows you to manage webhook subscriptions for workspace events. You can list, create, update, and retrieve webhooks programmatically.

Example: Setup Webhook Using EShopBox SDK

"""
Example: Setup webhook using EShopBox SDK
"""

import os
from eshopbox.client import EShopBoxSDK
from dotenv import load_dotenv
load_dotenv()


def get_all_webhooks(sdk):
    print("Getting all webhooks...")
    response = sdk.webhooks.list()
    print("Webhooks retrieved successfully!")
    print(response)


def get_webhooks(sdk, id):
    print("Getting specific webhooks...")
    response = sdk.webhooks.get(id)
    print("Webhooks retrieved successfully!")
    print(response)


def create_webhooks(sdk):
    print("Creating webhook...")
    webhook_data = {
        "resource": "user_invitation",
        "eventType": "POST",
        "eventSubType": "created",
        "version": "v1",
        "externalChannelID": os.getenv('ESHOPBOX_EXTERNAL_CHANNEL_ID', ''),
        "webhookUrl": "https://api-dev.kashwork.com/api/shipping/eshopbox/webhook",
        "webhookMethod": "POST",
        "accountSlug": os.getenv('ESHOPBOX_WORKSPACE', '')
    }
    response = sdk.webhooks.create(webhook_data)
    print("Webhook created successfully!")
    print(response)


def update_webhooks(sdk, id):
    print("Updating webhook...")
    webhook_data = {
        "id": id,
        "resource": "channel_inventory",
        "eventType": "POST",
        "eventSubType": "created",
        "version": "v1",
        "externalChannelID": os.getenv('ESHOPBOX_EXTERNAL_CHANNEL_ID', ''),
        "webhookUrl": "https://api-dev.kashwork.com/api/shipping/eshopbox/webhook",
        "webhookMethod": "POST",
        "accountSlug": os.getenv('ESHOPBOX_WORKSPACE', '')
    }
    response = sdk.webhooks.update(webhook_data)
    print("Webhook updated successfully!")
    print(response)


def main():
    sdk = EShopBoxSDK(
        workspace=os.getenv('ESHOPBOX_WORKSPACE', ''),
        client_id=os.getenv('ESHOPBOX_CLIENT_ID', ''),
        client_secret=os.getenv('ESHOPBOX_SECRET_ID', ''),
        refresh_token=os.getenv('ESHOPBOX_REFRESH_TOKEN', '')
    )

    update_webhooks(sdk, '105322')


if __name__ == "__main__":
    main()

Webhook APIs

List All Webhooks

sdk.webhooks.list()

Returns a list of all webhooks for the workspace.

Get a Specific Webhook

sdk.webhooks.get(webhook_id)

Retrieves the details of a specific webhook using its ID.

Example:

sdk.webhooks.get('105322')

Create a Webhook

sdk.webhooks.create(webhook_data)

Creates a new webhook subscription.

Required Fields in `webhook_data`:

Update a Webhook

sdk.webhooks.update(webhook_data)

Updates an existing webhook by ID.

Fields for update: Same as create, but include id of the webhook to update.

Notes

  • Make sure the webhook URL is publicly accessible and can accept POST requests.

  • Use externalChannelID if the webhook is specific to a channel.

  • Webhook creation and update require valid workspace credentials stored in environment variables.

  • Event types and resources must match EShopBox webhook specifications.