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.
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.
- π 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
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
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.
- 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
- 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
- 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
- Java 17+ (required for QQQ features)
- Maven 3.8+ (for build system)
- QQQ Application (this is a QBit, not a standalone application)
<dependency>
<groupId>com.kingsrook.qbits</groupId>
<artifactId>qbit-webhooks</artifactId>
<version>${TODO}</version>
</dependency>
WebhooksQBitProducer producer = new WebhooksQBitProducer()
.withQBitConfig(new WebhooksQBitConfig());
MetaDataProducerMultiOutput allQBitMetaData = producer.produce(qInstance);
// add it to your QInstance.
WebhooksRegistry webhooksRegistry = WebhooksRegistry.ofOrWithNew(qInstance);
webhooksRegistry.registerWebhookEventType(new WebhookEventType()
.withName(ORDER_CREATED_EVENT_TYPE)
.withLabel("Order Created")
.withCategory(WebhookEventCategory.INSERT)
.withTableName(Order.TABLE_NAME));
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.
WebhooksRegistry
- where application-defined event types must be registered.
qqq-backend-module-api
- as the objects posted are api-versionedQQQTablesMetaDataProvider
- for event record foreign keys
π Complete Documentation Wiki - Start here for comprehensive guides
- π Home - Project overview and quick start
- ποΈ Architecture - System design and principles
- π§ Development - Setup and contribution guide
- π¦ Modules - Available components and usage
- π Building - Local development workflow
- π QBits - QBit development guide
QBit Webhooks is open source and welcomes contributions!
- π Report Issues - Bug reports and feature requests
- π Contribution Guide - How to contribute code and documentation
- π Code Standards - QQQ's coding standards and review process
First time contributing? Start with our Developer Onboarding Guide to get your environment set up.
QBit Webhooks is built by Kingsrook - making engineers more productive through intelligent automation and developer tools.
- Website: https://qrun.io
- Contact: contact@kingsrook.com
- GitHub: https://github.com/Kingsrook
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE.txt file for details.
All support, issues, discussions, and community interactions should go through the main QQQ repository:
- Main Repository: https://github.com/Kingsrook/qqq
- Issues: https://github.com/Kingsrook/qqq/issues
- Discussions: https://github.com/Kingsrook/qqq/discussions
- Wiki: https://github.com/Kingsrook/qqq/wiki
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
- Documentation: Check the QQQ Wiki
- Issues: Report bugs and feature requests on Main QQQ Issues
- Discussions: Join community discussions on Main QQQ Discussions
- Questions: Ask questions in the main QQQ repository
Ready to integrate webhooks into your QQQ application? Get started with QBit Webhooks today!