A comprehensive sandbox environment for testing and developing EV Charging network integrations using the ONIX protocol adapter (Beckn-ONIX) with BAP and BPP applications
- Overview
- Features
- Quick Start
- Architecture
- Repository Structure
- Documentation
- Contributing
- Support
- License
This repository provides a complete sandbox environment for integrating the onix-adapter (also known as Beckn-ONIX) with BAP (Application Platform) and BPP (Provider Platform) applications for EV Charging networks.
The onix-adapter is a production-ready, plugin-based middleware adapter for the Beckn Protocol. It acts as a protocol adapter between Application Platforms (BAPs) and Provider Platforms (BPPs), ensuring secure, validated, and compliant message exchange across various commerce networks.
- BAP (Application Platform): Buyer-side applications that help users search for and purchase products/services (e.g., consumer apps, aggregators)
- BPP (Provider Platform): Seller-side platforms that provide products/services (e.g., merchant platforms, service providers)
- Onix-Adapter: Middleware that handles protocol compliance, message signing, validation, and routing between BAPs and BPPs
- CDS (Catalog Discovery Service): Aggregates discover requests from BAPs and broadcasts to registered BPPs
- Registry: Maintains a registry of all network participants (BAPs, BPPs, CDS)
- Docker Compose: Local development with REST API, Kafka, or RabbitMQ
- Helm Charts: Kubernetes deployment for REST API, Kafka, or RabbitMQ
- Complete Sandbox: Full testing environment with ONIX adapters and mock services
- Standalone Adapters: Deploy only ONIX adapters for integration with your own services
- REST API: Synchronous HTTP/REST messaging (default)
- Kafka: Asynchronous message-based communication with Kafka topics
- RabbitMQ: Asynchronous message-based communication with RabbitMQ queues
- Ed25519 Digital Signatures: Cryptographically secure message signing and validation
- JSON Schema Validation: Protocol compliance using URL-based schema validation
- Configurable Routing: YAML-based routing rules with Phase 1 (CDS) and Phase 2+ (direct) support
- Production Features: Health checks, secret management, OpenTelemetry metrics, structured logging
- Docker: Docker Engine 20.10+ and Docker Compose 2.0+ (for Docker deployments)
- Kubernetes: Kubernetes cluster v1.20+ and Helm 3.x (for Helm deployments)
- REST API: See Sandbox Guide - Complete sandbox with REST API
- Kafka: See Sandbox Kafka Guide - Kafka-based messaging
- RabbitMQ: See Sandbox RabbitMQ Guide - RabbitMQ-based messaging
- Standalone Adapters: See ONIX Adapter Guide - Deploy only adapters
- REST API: See Helm Chart Guide - REST API deployment
- Kafka: See Helm Kafka Guide - Kafka integration with KRaft mode
- RabbitMQ: See Helm RabbitMQ Guide - RabbitMQ integration
- Complete Sandbox (Kafka): See Helm Sandbox Kafka Guide - Full sandbox with Kafka
The sandbox supports three communication patterns:
- REST API (Synchronous HTTP): Direct HTTP calls between services
- Kafka (Asynchronous): Message-based communication via Kafka topics
- RabbitMQ (Asynchronous): Queue-based communication via RabbitMQ exchanges
- ONIX Adapters: Protocol adapters for BAP and BPP with transaction modules (
bapTxnCaller,bapTxnReceiver,bppTxnCaller,bppTxnReceiver) - Mock Services: Registry, CDS, BAP, and BPP simulators for testing
- Supporting Infrastructure: Redis for caching, Kafka/RabbitMQ for messaging (when applicable)
- Phase 1 (Discovery): BAP → ONIX BAP → CDS → ONIX BPP → BPP (aggregated results)
- Phase 2+ (Transactions): BAP → ONIX BAP → ONIX BPP → BPP (direct communication)
For detailed architecture diagrams and flow descriptions, see the individual deployment guides.
sandbox/: Complete REST API sandbox with all servicessandbox-kafka/: Complete Kafka-based sandboxsandbox-rabbitMQ/: Complete RabbitMQ-based sandboxonix-adaptor/: Standalone REST API adaptersonix-adaptor-kafka/: Standalone Kafka adaptersonix-adaptor-rabbitMQ/: Standalone RabbitMQ adapters
helm/: REST API Helm charthelm-kafka/: Kafka Helm chart (KRaft mode)helm-rabbitmq/: RabbitMQ Helm charthelm-sandbox-kafka/: Complete Kafka sandbox Helm deploymenthelm-sendbox/: Alternative sandbox Helm deployment
mock/: Mock service configurations and Helm chartsapi-collection/: Postman collections and Swagger specificationscharts/: Additional Helm chart variants
- Sandbox (REST API): Complete Docker sandbox with REST API
- Sandbox Kafka: Kafka-based sandbox
- Sandbox RabbitMQ: RabbitMQ-based sandbox
- ONIX Adapter (REST API): Standalone REST API adapters
- ONIX Adapter Kafka: Standalone Kafka adapters
- ONIX Adapter RabbitMQ: Standalone RabbitMQ adapters
- Helm Chart (REST API): Kubernetes REST API deployment
- Helm Kafka: Kafka integration on Kubernetes
- Helm RabbitMQ: RabbitMQ integration on Kubernetes
- Helm Sandbox Kafka: Complete Kafka sandbox on Kubernetes
- API Collection Guide: Postman collections and Swagger specifications
- ONIX-Adapter Repository: Official onix-adapter source code
- ONIX Configuration Guide: Configuration parameters
- ONIX Setup Guide: Installation instructions
- Beckn Protocol Specifications: Protocol documentation
We welcome contributions! When contributing examples or improvements:
- Follow the directory structure: Maintain consistency with existing examples
- Include documentation: Each integration method should have a comprehensive README
- Provide working examples: Include Docker Compose files, configuration files, and usage examples
- Add troubleshooting guides: Help users resolve common issues
- Test your changes: Ensure all configurations work before submitting
- Clear documentation with inline comments
- Working configuration files
- Environment variable examples
- Troubleshooting sections
- Consistent code formatting
For issues, questions, or contributions:
- Check Documentation: Review the relevant integration guide and troubleshooting sections
- Review Examples: Examine existing configuration files and examples
- Open an Issue: Report bugs or request features via GitHub Issues
- Check ONIX Repository: Refer to the main onix-adapter repository for core functionality
- ONIX Issues: Beckn-One/beckn-onix Issues
- UBC EV Sandbox Repo: bhim/ubc-ev-sandbox (Discussions & updates)
This project is licensed under the MIT License - see the LICENSE file for details.
The onix-adapter itself is licensed under the MIT License. See the onix-adapter LICENSE for more information.
- Beckn Foundation: For the Beckn Protocol specifications
- Beckn-One: For the onix-adapter project
- All contributors to the onix-adapter and this integration guide
Built with ❤️ for the open Value Network ecosystem