Skip to main content

Enterprise API Layers

Enterprise API Layers is Afreximbank Digital Solutions' API-Led Connectivity platform — a Quarkus + Apache Camel (Java 21) monorepo that re-architects the bank's backend estate into a standards-based three-layer API model. Layers talk to each other synchronously over gRPC and asynchronously via Kafka domain events, with Apache APISIX as the external gateway translating REST/JSON into gRPC.

:::note Implementation status This repository is a working scaffold, not a finished system. The build, Jib container images, infrastructure, and the local-Kubernetes deploy flow are real and verified. Of the 16 service modules, only cbs-finacle-sapi (the Finacle core-banking adapter) is substantively implemented today — the rest are skeletons, and most of the gRPC contracts and Avro event schemas are still to be authored. Treat module lists below as the target structure. :::

The three-layer model

LayerDirectoryModulesRole
Experience APIs (XAPI)experience-apis/3Channel-facing REST/OpenAPI; consume Process APIs over gRPC
Process APIs (PAPI)process-apis/5Business orchestration (saga, scheduling, documents); own persistence
System APIs (SAPI)system-apis/8Adapters wrapping external systems of record (Finacle, Salesforce, SWIFT, …)
Sharedshared/4proto-definitions, avro-schemas, domain-events, apisix-registry

Requests flow Experience → Process → System in one direction over gRPC; business events flow across all layers over Kafka.

Why API-Led Connectivity

  • Separation of concerns — channels (XAPI), business logic (PAPI), and systems of record (SAPI) evolve independently behind stable contracts.
  • Contract-first — gRPC/Protobuf between layers; APISIX exposes a REST/JSON facade externally via its grpc-transcode plugin.
  • Reuse — a System API (e.g. the Finacle adapter) is written once and reused by every Process API that needs core-banking data.
  • Event-driven — domain events (Avro on Kafka/Redpanda) decouple side-effects from the request path.

Where to go next

  • Architecture — the full layer/module breakdown, request and event flow, the APISIX self-registration model, and the build/deploy flow.