Skip to content

QBit that provides tables and processes to add a basic implementation of webhooks to a qqq application

Notifications You must be signed in to change notification settings

Kingsrook/qbit-webhooks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

QBit: Webhooks

Build Status Version License Java

Webhook Implementation for QQQ Applications - Event-Driven Integration

This QBit provides a comprehensive webhook system for QQQ applications, enabling real-time event notifications to external systems and partners.

πŸš€ What Makes QBit Webhooks Different?

QBit Webhooks gives you enterprise-grade webhook capabilities - you define your event types, configure webhook endpoints, and QBit Webhooks handles the reliable delivery, retry logic, and comprehensive logging. No more building webhook infrastructure from scratch.

✨ Core Capabilities

  • πŸ”— Webhook Management: Complete webhook endpoint and subscription management
  • πŸ“‘ Event Types: Flexible event type registration and categorization
  • πŸ”„ Reliable Delivery: Built-in retry logic and delivery tracking
  • πŸ“Š Comprehensive Logging: Full audit trail of webhook events and delivery attempts
  • 🎯 Event Filtering: Subscribe to specific event types and categories
  • πŸ“¦ JSON Payloads: Structured event content with API versioning support

πŸ”“ Open Source & Full Control

QBit Webhooks is 100% open source - you have complete ownership and control:

  • πŸ’» Your Code: Full access to QBit Webhooks source code
  • πŸ—„οΈ Your Data: All webhook data stays in your systems
  • πŸ—οΈ Your System: Deploy anywhere - on-premises, cloud, or hybrid
  • πŸ”’ No Vendor Lock-in: No external webhook services required
  • ⚑ Full Customization: Modify and extend webhook behavior to your needs

Overview

Note: This is one of the original QBit implementations - so, some of the mechanics of how it is loaded and used by an application are not exactly fully defined at the time of its creation... Please excuse any dust or not-quite-round wheels you find here!

This QBit provides a basic implementation of webhooks to a QQQ Application.

πŸ—οΈ Architecture

Technology Stack

  • Java: Java 17+ with UTF-8 encoding
  • QQQ Framework: Built on QQQ backend modules
  • Database: RDBMS support through QQQ tables
  • JSON: Structured event payloads with API versioning

What This QBit Contains

  • Webhook Management: Complete webhook endpoint and subscription system
  • Event Processing: Event type registration and categorization
  • Delivery System: Reliable webhook delivery with retry logic
  • Audit Trail: Comprehensive logging of all webhook activities
  • Database Schema: Five core tables for webhook management

What This QBit Does NOT Contain

  • HTTP Client: Uses QQQ's built-in HTTP capabilities
  • Authentication: Relies on QQQ's security framework
  • Scheduling: Uses QQQ's job scheduling system
  • External Services: No third-party webhook services

πŸš€ Getting Started

Prerequisites

  • Java 17+ (required for QQQ features)
  • Maven 3.8+ (for build system)
  • QQQ Application (this is a QBit, not a standalone application)

Usage

Pom dependency

<dependency>
    <groupId>com.kingsrook.qbits</groupId>
    <artifactId>qbit-webhooks</artifactId>
    <version>${TODO}</version>
</dependency>

Setup

Define the QBit
WebhooksQBitProducer producer = new WebhooksQBitProducer()
   .withQBitConfig(new WebhooksQBitConfig());
MetaDataProducerMultiOutput allQBitMetaData = producer.produce(qInstance);
// add it to your QInstance.
Define webhook event types
WebhooksRegistry webhooksRegistry = WebhooksRegistry.ofOrWithNew(qInstance);

webhooksRegistry.registerWebhookEventType(new WebhookEventType()
   .withName(ORDER_CREATED_EVENT_TYPE)
   .withLabel("Order Created")
   .withCategory(WebhookEventCategory.INSERT)
   .withTableName(Order.TABLE_NAME));

Provides

Tables

  • webhook - a connection to a partner system, e.g., URL to post events to.
  • webhookSubscription - which event types should be sent to a webhook.
  • webhookEvent - table-as-queue plus log of events for sending to a subscription.
  • webhookEventContent - storage of JSON bodies to post.
  • webhookEventSendLog - tracking of attempted sends.

Classes

  • WebhooksRegistry - where application-defined event types must be registered.

Dependencies

  • qqq-backend-module-api - as the objects posted are api-versioned
  • QQQTablesMetaDataProvider - for event record foreign keys

πŸ“š Documentation

πŸ“– Complete Documentation Wiki - Start here for comprehensive guides

🀝 Contributing

QBit Webhooks is open source and welcomes contributions!

First time contributing? Start with our Developer Onboarding Guide to get your environment set up.

🏒 About Kingsrook

QBit Webhooks is built by Kingsrook - making engineers more productive through intelligent automation and developer tools.

πŸ“„ License

This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE.txt file for details.

πŸ†˜ Support & Community

⚠️ Important: Use Main QQQ Repository

All support, issues, discussions, and community interactions should go through the main QQQ repository:

Why This Repository Exists

This repository is maintained separately from the main QQQ repository to:

  • Enable independent QBit development and versioning
  • Allow QBit-specific CI/CD and deployment pipelines
  • Provide clear separation between QBit components and core framework concerns
  • Support different release cycles for QBits vs. core framework

Getting Help:


Ready to integrate webhooks into your QQQ application? Get started with QBit Webhooks today!

About

QBit that provides tables and processes to add a basic implementation of webhooks to a qqq application

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages