BPMCore API Overview
The BPMCore API provides a unified command-based interface for executing banking operations within the BankLingo platform. Built on the MediatR pattern, BPMCore offers a consistent, extensible architecture for managing core banking entities and transactions.
Architecture
Command-Based Pattern
BPMCore uses a CQRS (Command Query Responsibility Segregation) pattern where:
- Commands - Modify state (Create, Update, Delete operations)
- Queries - Retrieve data without side effects (Read operations)
All operations are executed through a single endpoint: POST /api/core/cmd
Request Structure
{
"Cmd": "CommandName",
"Data": {
"property1": "value1",
"property2": "value2"
}
}
Fields:
Cmd(string, required) - The command or query name to executeData(object, required) - Dynamic object containing command-specific parameters
Response Structure
{
"IsSuccessful": true,
"StatusCode": "00",
"Message": "Operation completed successfully",
"Data": {
// Response data specific to the command
}
}
Fields:
IsSuccessful(boolean) - Indicates if the operation succeededStatusCode(string) - Status code (e.g., "00" for success)Message(string) - Human-readable messageData(object) - Command-specific response data
Authentication
All BPMCore APIs require authentication via JWT Bearer token:
Authorization: Bearer <your-jwt-token>
Available Modules
1. Accounts (Journal Entries)
Manage general ledger journal entries and accounting transactions.
Key Operations:
- Retrieve journal entries and transactions
- Post manual journal entries
- Reverse journal transactions
2. Documents
Upload, retrieve, and manage documents attached to various banking entities.
Key Operations:
- Upload documents with entity associations
- Retrieve documents by entity type (clients, loans, deposits, policies)
- List and filter documents with pagination
3. Terminal Management
Manage self-service banking terminals lifecycle and configurations.
Key Operations:
- Create and configure terminals
- Enable/disable terminal services
- Terminate terminal connections
- Query terminal status and details
4. Currency
Lookup and manage currency configurations.
Key Operations:
- Lookup currencies with autocomplete
- Retrieve full currency lists
5. Activities
Track and query user activities, system events, and audit trails.
Key Operations:
- Get activities with entity filtering (Client, Loan, Deposit, User) ⭐ NEW
- Get logged-in user activities for personal dashboard ⭐ NEW
- Retrieve activities by entity (client activities, loan activities, etc.)
- Filter activities by date range and search text
- Comprehensive audit trail and compliance reporting
6. Comments
Add and retrieve comments/notes for banking entities.
Key Operations:
- Add comment to any entity (Client, Loan, Deposit, Policy) ⭐ NEW
- Retrieve comments list with filtering and pagination
- Get comments by entity type (client comments, loan comments, etc.)
- Search and filter comments by date range
- Comprehensive audit trail for entity interactions
Common Patterns
Pagination
Most list queries support pagination with these parameters:
{
"pageNumber": 1,
"pageSize": 50
}
Filtering by Date Range
Queries that return time-series data typically support:
{
"startDate": "2024-01-01",
"endDate": "2024-12-31"
}
Search Text
Many queries support free-text search:
{
"searchText": "search term"
}
Excel Export
List queries often support exporting results:
{
"isExport": true
}
Error Handling
Common Status Codes
| Code | Meaning |
|---|---|
00 | Success |
01 | Validation error |
02 | Not found |
03 | Duplicate record |
99 | System error |
Error Response Example
{
"IsSuccessful": false,
"StatusCode": "01",
"Message": "Validation failed: Amount is required",
"Data": null
}
Best Practices
1. Property Extraction
BPMCore uses dynamic property extraction. Properties in the Data object are case-insensitive and can be extracted with defaults:
{
"Cmd": "RetrieveJournalEntriesQuery",
"Data": {
"pageNumber": 1,
"pageSize": 50,
"currencyCode": "NGN"
}
}
2. Mandatory vs Optional Parameters
- Parameters marked as required will fail validation if missing
- Optional parameters have sensible defaults (e.g.,
pageSizedefaults to max if not provided)
3. Command Naming Convention
- Queries: End with
Query(e.g.,RetrieveJournalEntriesQuery) - Commands: End with
Command(e.g.,PostJournalEntryCommand)
4. Testing
Use the built-in documentation endpoint:
GET /api/core/cmd/documentation
This returns auto-generated documentation for all available commands.
Next Steps
Explore the detailed documentation for each module:
Documentation Author: Owa Oluwasegun Tunbosun, Senior Platform Engineer