API Reference
Complete REST API documentation powered by OpenAPI
https://api.elysium-nexus.com/v1Authorization: Bearer ely_sk_...API Key: All requests require an API key in the Authorization header. Tenant identity is derived from the API key. See Authentication for details.
Elysium Nexus API (1.0.0)
Download OpenAPI specification:Download
API for Elysium Nexus - AI-powered business health monitoring and insights platform.
All requests require a Bearer token:
Authorization: Bearer ely_sk_<your-api-key>
Tenant identity is derived from the API key.
The x-tenant-id header is deprecated and should not be used.
- Unified Data Service (port 4001): Customer, Account, Transaction data
- Insights Service (port 3005): BHI, NBA, Reports, Workflows
List customers
Authorizations:
query Parameters
| limit | integer <= 500 Default: 50 |
| offset | integer Default: 0 |
| search | string Search by name or email |
| status | string Enum: "active" "inactive" "suspended" "closed" |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (Customer) | |
object (Pagination) |
Response samples
- 200
{- "success": true,
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "f97df110-f4de-492e-8849-4a6af68026b0",
- "externalId": "string",
- "externalSource": "string",
- "type": "business",
- "name": "string",
- "email": "user@example.com",
- "phone": "string",
- "status": "active",
- "vertical": "string",
- "riskLevel": "low",
- "riskScore": "string",
- "tags": [
- "string"
], - "businessInfo": {
- "legalName": "string",
- "industry": "string",
- "registrationNumber": "string",
- "taxId": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "total": 0,
- "limit": 0,
- "offset": 0,
- "hasMore": true
}
}Get customer by ID
Authorizations:
path Parameters
| customerId required | string <uuid> |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
object (Customer) |
Response samples
- 200
- 404
{- "success": true,
- "customer": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "f97df110-f4de-492e-8849-4a6af68026b0",
- "externalId": "string",
- "externalSource": "string",
- "type": "business",
- "name": "string",
- "email": "user@example.com",
- "phone": "string",
- "status": "active",
- "vertical": "string",
- "riskLevel": "low",
- "riskScore": "string",
- "tags": [
- "string"
], - "businessInfo": {
- "legalName": "string",
- "industry": "string",
- "registrationNumber": "string",
- "taxId": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}List accounts
Authorizations:
query Parameters
| limit | integer <= 500 Default: 50 |
| offset | integer Default: 0 |
| customerId | string <uuid> |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (Account) | |
object (Pagination) |
Response samples
- 200
{- "success": true,
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "f97df110-f4de-492e-8849-4a6af68026b0",
- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "externalId": "string",
- "type": "string",
- "name": "string",
- "status": "string",
- "currency": "string",
- "currentBalance": "string",
- "availableBalance": "string",
- "creditLimit": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "total": 0,
- "limit": 0,
- "offset": 0,
- "hasMore": true
}
}List transactions
Authorizations:
query Parameters
| limit | integer <= 500 Default: 50 |
| offset | integer Default: 0 |
| customerId | string <uuid> |
| accountId | string <uuid> |
| type | string Enum: "credit" "debit" |
| startDate | string <date-time> |
| endDate | string <date-time> |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (Transaction) | |
object (Pagination) |
Response samples
- 200
{- "success": true,
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "f97df110-f4de-492e-8849-4a6af68026b0",
- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "accountId": "3d07c219-0a88-45be-9cfc-91e9d095a1e9",
- "externalId": "string",
- "type": "credit",
- "category": "string",
- "amount": "string",
- "currency": "string",
- "description": "string",
- "status": "string",
- "transactionDate": "2019-08-24T14:15:22Z",
- "merchantName": "string",
- "balanceAfter": "string"
}
], - "pagination": {
- "total": 0,
- "limit": 0,
- "offset": 0,
- "hasMore": true
}
}Trigger data sync
Authorizations:
path Parameters
| connectorType required | string Value: "core_banking" |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
object |
Response samples
- 200
{- "success": true,
- "syncStatus": {
- "recordsWritten": {
- "customers": 0,
- "accounts": 0,
- "transactions": 0
}, - "errors": [
- "string"
]
}
}List BHI records
Authorizations:
query Parameters
| limit | integer <= 500 Default: 50 |
| offset | integer Default: 0 |
| customerId | string <uuid> |
| bhiBand | string Enum: "excellent" "good" "fair" "poor" "critical" |
| trend | string Enum: "improving" "stable" "declining" "volatile" |
| isLatest | boolean Default: true |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (BHIRecord) | |
object (Pagination) |
Response samples
- 200
{- "success": true,
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "f97df110-f4de-492e-8849-4a6af68026b0",
- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "bhiOverall": "string",
- "bhiBand": "excellent",
- "liquidityScore": "string",
- "volatilityScore": "string",
- "revenueStabilityScore": "string",
- "expenseRatioScore": "string",
- "paymentBehaviorScore": "string",
- "trend": "improving",
- "previousBhi": "string",
- "bhiChangePercent": "string",
- "inputMetrics": {
- "property1": 0,
- "property2": 0
}, - "reasons": [
- {
- "factor": "string",
- "score": 0,
- "weight": 0,
- "contribution": 0,
- "direction": "positive",
- "explanation": "string"
}
], - "alerts": [
- {
- "type": "string",
- "severity": "warning",
- "message": "string",
- "metric": "string",
- "currentValue": 0,
- "threshold": 0
}
], - "componentWeights": {
- "liquidity": 0,
- "volatility": 0,
- "revenueStability": 0,
- "expenseRatio": 0,
- "paymentBehavior": 0
}, - "calculationVersion": "string",
- "isLatest": true,
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "total": 0,
- "limit": 0,
- "offset": 0,
- "hasMore": true
}
}Calculate BHI from database
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/json
| customerId | string <uuid> |
| customerIds | Array of strings <uuid> [ items <uuid > ] |
object (BHIWeights) |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (BHICalculationResult) | |
object |
Request samples
- Payload
{- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "customerIds": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "weights": {
- "liquidity": 0,
- "volatility": 0,
- "revenueStability": 0,
- "expenseRatio": 0,
- "paymentBehavior": 0
}
}Response samples
- 200
{- "success": true,
- "results": [
- {
- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "bhi": { },
- "alerts": [
- {
- "type": "string",
- "severity": "warning",
- "message": "string",
- "metric": "string",
- "currentValue": 0,
- "threshold": 0
}
], - "isSignificantChange": true,
- "persisted": true
}
], - "summary": {
- "total": 0,
- "successful": 0,
- "failed": 0,
- "byBand": {
- "property1": 0,
- "property2": 0
}, - "alertCount": 0
}
}Get customer BHI
Authorizations:
path Parameters
| customerId required | string <uuid> |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
object (BHIRecord) |
Response samples
- 200
- 404
{- "success": true,
- "bhi": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "f97df110-f4de-492e-8849-4a6af68026b0",
- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "bhiOverall": "string",
- "bhiBand": "excellent",
- "liquidityScore": "string",
- "volatilityScore": "string",
- "revenueStabilityScore": "string",
- "expenseRatioScore": "string",
- "paymentBehaviorScore": "string",
- "trend": "improving",
- "previousBhi": "string",
- "bhiChangePercent": "string",
- "inputMetrics": {
- "property1": 0,
- "property2": 0
}, - "reasons": [
- {
- "factor": "string",
- "score": 0,
- "weight": 0,
- "contribution": 0,
- "direction": "positive",
- "explanation": "string"
}
], - "alerts": [
- {
- "type": "string",
- "severity": "warning",
- "message": "string",
- "metric": "string",
- "currentValue": 0,
- "threshold": 0
}
], - "componentWeights": {
- "liquidity": 0,
- "volatility": 0,
- "revenueStability": 0,
- "expenseRatio": 0,
- "paymentBehavior": 0
}, - "calculationVersion": "string",
- "isLatest": true,
- "createdAt": "2019-08-24T14:15:22Z"
}
}Get BHI history
Authorizations:
path Parameters
| customerId required | string <uuid> |
query Parameters
| limit | integer <= 500 Default: 50 |
| offset | integer Default: 0 |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
| customerId | string |
Array of objects (BHIHistoryRecord) | |
object (Pagination) |
Response samples
- 200
{- "success": true,
- "customerId": "string",
- "history": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "bhiOverall": "string",
- "bhiBand": "string",
- "liquidityScore": "string",
- "volatilityScore": "string",
- "revenueStabilityScore": "string",
- "expenseRatioScore": "string",
- "paymentBehaviorScore": "string",
- "recordedAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "total": 0,
- "limit": 0,
- "offset": 0,
- "hasMore": true
}
}Get portfolio summary
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
object (BHISummary) |
Response samples
- 200
{- "success": true,
- "summary": {
- "totalCustomers": 0,
- "averageBhi": 0,
- "byBand": {
- "excellent": 0,
- "good": 0,
- "fair": 0,
- "poor": 0,
- "critical": 0
}, - "byTrend": {
- "improving": 0,
- "stable": 0,
- "declining": 0,
- "volatile": 0
}, - "alertCount": 0
}
}Generate Next-Best-Actions
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/jsonrequired
| customerId required | string <uuid> |
object |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (NBAAction) | |
| evaluatedRules | integer |
| matchedRules | integer |
Request samples
- Payload
{- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "bhi": {
- "bhiOverall": 0,
- "bhiBand": "string",
- "trend": "string"
}
}Response samples
- 200
{- "success": true,
- "actions": [
- {
- "id": "string",
- "actionType": "string",
- "title": "string",
- "description": "string",
- "priority": "critical",
- "category": "string",
- "suggestedSteps": [
- "string"
], - "expectedImpact": "string",
- "confidence": 0
}
], - "evaluatedRules": 0,
- "matchedRules": 0
}List workflows
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (Workflow) | |
| total | integer |
Response samples
- 200
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "version": "string",
- "status": "active",
- "triggers": [
- {
- "type": "string",
- "config": { }
}
], - "steps": [
- {
- "id": "string",
- "name": "string",
- "action": "string",
- "config": { }
}
], - "runCount": 0,
- "lastRunAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "total": 0
}Trigger workflow
Authorizations:
path Parameters
| workflowId required | string |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/json
| customerId | string <uuid> |
Responses
Response Schema: application/json
| success | boolean |
| runId | string |
| status | string |
| message | string |
Request samples
- Payload
{- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac"
}Response samples
- 200
{- "success": true,
- "runId": "string",
- "status": "string",
- "message": "string"
}List workflow runs
Authorizations:
query Parameters
| limit | integer <= 500 Default: 50 |
| workflowId | string |
| status | string Enum: "pending" "running" "succeeded" "failed" |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (WorkflowRun) | |
| total | integer |
Response samples
- 200
{- "success": true,
- "data": [
- {
- "id": "string",
- "workflowId": "string",
- "workflowName": "string",
- "status": "pending",
- "triggeredBy": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "duration": "string",
- "steps": [
- {
- "id": "string",
- "name": "string",
- "status": "pending",
- "startedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "error": "string"
}
], - "output": { },
- "error": "string"
}
], - "total": 0
}Generate customer BHI report
Authorizations:
path Parameters
| customerId required | string <uuid> |
query Parameters
| format | string Default: "json" Enum: "json" "csv" "pdf" |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema:
Response samples
- 200
{ }Advisory fraud signal detection. IMPORTANT: These endpoints produce advisory signals only. They do NOT block transactions, do NOT guarantee fraud detection, and require human review before any action. All signals are rule-based and deterministic.
List available fraud signal definitions
Returns all available fraud signal definitions. These define what patterns the system can detect. ADVISORY ONLY - does not block transactions.
Authorizations:
query Parameters
| enabledOnly | boolean Default: true Only return enabled signals |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (SignalDefinition) | |
| totalCount | integer |
| disclaimer | string |
Response samples
- 200
{- "success": true,
- "signals": [
- {
- "signalId": "string",
- "name": "string",
- "description": "string",
- "category": "velocity",
- "applicableTo": [
- "customer"
], - "defaultSeverity": "low",
- "isEnabled": true
}
], - "totalCount": 0,
- "disclaimer": "string"
}Evaluate fraud signals for an entity
Evaluates fraud signals for a specific entity (customer, account, agent, or merchant).
IMPORTANT: This produces ADVISORY signals only. It does NOT:
- Block or interdict transactions
- Make automated decisions
- Guarantee fraud detection or loss prevention
All results require human review before any action.
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/jsonrequired
| entityType required | string (EvaluableEntityType) Enum: "customer" "account" "agent" "merchant" |
| entityId required | string |
| windowDays | integer [ 1 .. 365 ] Default: 30 |
| signalIds | Array of strings Specific signals to run (optional - runs all applicable if omitted) |
Responses
Response Schema: application/json
| success | boolean |
object (FraudAlert) Advisory fraud alert - requires human review before any action. The isAdvisoryOnly field is always true to emphasize this is not a blocking decision. | |
| disclaimer | string Reminder that this is advisory only |
Request samples
- Payload
{- "entityType": "customer",
- "entityId": "string",
- "windowDays": 30,
- "signalIds": [
- "string"
]
}Response samples
- 200
- 400
{- "success": true,
- "alert": {
- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c",
- "tenantId": "string",
- "entityType": "customer",
- "entityId": "string",
- "severity": "low",
- "overallScore": 100,
- "summary": "string",
- "triggeredSignals": [
- {
- "signalId": "string",
- "signalName": "string",
- "triggered": true,
- "severity": "low",
- "confidence": 1,
- "evidence": [
- {
- "field": "string",
- "observed": "string",
- "expected": "string",
- "threshold": "string",
- "deviation": 0,
- "context": "string"
}
], - "computedAt": "2019-08-24T14:15:22Z",
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "entityType": "customer",
- "entityId": "string",
- "explanation": "string"
}
], - "nonTriggeredSignalCount": 0,
- "explainability": {
- "topContributors": [
- {
- "signalId": "string",
- "contribution": 0,
- "reason": "string"
}
], - "mitigatingFactors": [
- "string"
], - "recommendation": "string"
}, - "evaluatedAt": "2019-08-24T14:15:22Z",
- "windowDays": 0,
- "isAdvisoryOnly": true
}, - "disclaimer": "string"
}List fraud alerts (computed on-demand)
Currently returns empty as alerts are computed on-demand via POST /fraud/evaluate. Persistent alert storage is planned for future implementation.
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (FraudAlert) | |
| message | string |
| disclaimer | string |
Response samples
- 200
{- "success": true,
- "alerts": [
- {
- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c",
- "tenantId": "string",
- "entityType": "customer",
- "entityId": "string",
- "severity": "low",
- "overallScore": 100,
- "summary": "string",
- "triggeredSignals": [
- {
- "signalId": "string",
- "signalName": "string",
- "triggered": true,
- "severity": "low",
- "confidence": 1,
- "evidence": [
- {
- "field": "string",
- "observed": "string",
- "expected": "string",
- "threshold": "string",
- "deviation": 0,
- "context": "string"
}
], - "computedAt": "2019-08-24T14:15:22Z",
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "entityType": "customer",
- "entityId": "string",
- "explanation": "string"
}
], - "nonTriggeredSignalCount": 0,
- "explainability": {
- "topContributors": [
- {
- "signalId": "string",
- "contribution": 0,
- "reason": "string"
}
], - "mitigatingFactors": [
- "string"
], - "recommendation": "string"
}, - "evaluatedAt": "2019-08-24T14:15:22Z",
- "windowDays": 0,
- "isAdvisoryOnly": true
}
], - "message": "string",
- "disclaimer": "string"
}List fraud cases
List fraud cases with filtering and pagination. Cases are immutable records created from fraud alerts for compliance review.
Authorizations:
query Parameters
| entityType | string Enum: "customer" "account" "agent" "merchant" Filter by entity type |
| entityId | string Filter by entity ID |
| severity | string Filter by severity (comma-separated for multiple) |
| status | string Filter by status (comma-separated for multiple) |
| minScore | number Minimum fraud score |
| maxScore | number Maximum fraud score |
| startDate | string <date-time> Filter cases created after this date |
| endDate | string <date-time> Filter cases created before this date |
| limit | integer <= 500 Default: 50 |
| offset | integer Default: 0 |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (FraudCase) | |
| total | integer |
| limit | integer |
| offset | integer |
| hasMore | boolean |
| disclaimer | string |
Response samples
- 200
{- "success": true,
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "string",
- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c",
- "entityType": "customer",
- "entityId": "string",
- "severity": "low",
- "overallScore": 100,
- "title": "string",
- "summary": "string",
- "triggeredSignals": [
- {
- "signalId": "string",
- "signalName": "string",
- "triggered": true,
- "severity": "low",
- "confidence": 1,
- "evidence": [
- {
- "field": "string",
- "observed": "string",
- "expected": "string",
- "threshold": "string",
- "deviation": 0,
- "context": "string"
}
], - "computedAt": "2019-08-24T14:15:22Z",
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "entityType": "customer",
- "entityId": "string",
- "explanation": "string"
}
], - "explainability": { },
- "windowDays": 0,
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "currentStatus": "open",
- "disclaimer": "string",
- "metadata": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "lastEventAt": "2019-08-24T14:15:22Z"
}
], - "total": 0,
- "limit": 0,
- "offset": 0,
- "hasMore": true,
- "disclaimer": "string"
}Create a fraud case
Create a new fraud case from a fraud alert.
IMPORTANT: Fraud cases are APPEND-ONLY and IMMUTABLE for audit compliance. Once created, case data cannot be modified - only events can be added.
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/jsonrequired
| alertId required | string <uuid> |
| entityType required | string (EvaluableEntityType) Enum: "customer" "account" "agent" "merchant" |
| entityId required | string |
| severity required | string (FraudCaseSeverity) Enum: "low" "medium" "high" "critical" Severity classification for fraud cases |
| overallScore required | number [ 0 .. 100 ] |
| title | string |
| summary | string |
| triggeredSignals | Array of objects |
| explainability | object |
| windowDays | integer Default: 30 |
| windowStart | string <date-time> |
| windowEnd | string <date-time> |
| metadata | object |
Responses
Response Schema: application/json
| success | boolean |
object (FraudCase) Immutable fraud case record for compliance review. Cases are append-only - changes are recorded via events. | |
| disclaimer | string |
Request samples
- Payload
{- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e",
- "entityType": "customer",
- "entityId": "string",
- "severity": "low",
- "overallScore": 100,
- "title": "string",
- "summary": "string",
- "triggeredSignals": [
- { }
], - "explainability": { },
- "windowDays": 30,
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "metadata": { }
}Response samples
- 201
- 400
- 409
{- "success": true,
- "case": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "string",
- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c",
- "entityType": "customer",
- "entityId": "string",
- "severity": "low",
- "overallScore": 100,
- "title": "string",
- "summary": "string",
- "triggeredSignals": [
- {
- "signalId": "string",
- "signalName": "string",
- "triggered": true,
- "severity": "low",
- "confidence": 1,
- "evidence": [
- {
- "field": "string",
- "observed": "string",
- "expected": "string",
- "threshold": "string",
- "deviation": 0,
- "context": "string"
}
], - "computedAt": "2019-08-24T14:15:22Z",
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "entityType": "customer",
- "entityId": "string",
- "explanation": "string"
}
], - "explainability": { },
- "windowDays": 0,
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "currentStatus": "open",
- "disclaimer": "string",
- "metadata": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "lastEventAt": "2019-08-24T14:15:22Z"
}, - "disclaimer": "string"
}Get fraud case statistics
Get aggregate statistics for fraud cases in the tenant.
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
object | |
| disclaimer | string |
Response samples
- 200
{- "success": true,
- "stats": {
- "total": 0,
- "byStatus": {
- "property1": 0,
- "property2": 0
}, - "bySeverity": {
- "property1": 0,
- "property2": 0
}, - "byEntityType": {
- "property1": 0,
- "property2": 0
}, - "openCount": 0,
- "criticalCount": 0,
- "avgScore": 0
}, - "disclaimer": "string"
}Get a fraud case with events
Get a specific fraud case by ID including all audit events.
Authorizations:
path Parameters
| caseId required | string <uuid> The fraud case ID |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
object Immutable fraud case record for compliance review. Cases are append-only - changes are recorded via events. | |
| disclaimer | string |
Response samples
- 200
- 404
{- "success": true,
- "case": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "string",
- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c",
- "entityType": "customer",
- "entityId": "string",
- "severity": "low",
- "overallScore": 100,
- "title": "string",
- "summary": "string",
- "triggeredSignals": [
- {
- "signalId": "string",
- "signalName": "string",
- "triggered": true,
- "severity": "low",
- "confidence": 1,
- "evidence": [
- {
- "field": "string",
- "observed": "string",
- "expected": "string",
- "threshold": "string",
- "deviation": 0,
- "context": "string"
}
], - "computedAt": "2019-08-24T14:15:22Z",
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "entityType": "customer",
- "entityId": "string",
- "explanation": "string"
}
], - "explainability": { },
- "windowDays": 0,
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "currentStatus": "open",
- "disclaimer": "string",
- "metadata": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "lastEventAt": "2019-08-24T14:15:22Z",
- "events": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "string",
- "caseId": "af51d69f-996a-4891-a745-aadfcdec225a",
- "eventType": "created",
- "eventSequence": 0,
- "actorType": "user",
- "actorId": "string",
- "actorName": "string",
- "previousStatus": "open",
- "newStatus": "open",
- "assigneeId": "string",
- "assigneeName": "string",
- "noteContent": "string",
- "noteType": "string",
- "evidenceType": "string",
- "evidenceReference": { },
- "resolution": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c"
}
]
}, - "disclaimer": "string"
}List events for a fraud case
Get the audit event log for a specific fraud case.
Authorizations:
path Parameters
| caseId required | string <uuid> The fraud case ID |
query Parameters
| limit | integer <= 500 Default: 50 |
| offset | integer Default: 0 |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
| caseId | string <uuid> |
Array of objects (FraudCaseEvent) | |
| total | integer |
| limit | integer |
| offset | integer |
| hasMore | boolean |
Response samples
- 200
- 404
{- "success": true,
- "caseId": "af51d69f-996a-4891-a745-aadfcdec225a",
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "string",
- "caseId": "af51d69f-996a-4891-a745-aadfcdec225a",
- "eventType": "created",
- "eventSequence": 0,
- "actorType": "user",
- "actorId": "string",
- "actorName": "string",
- "previousStatus": "open",
- "newStatus": "open",
- "assigneeId": "string",
- "assigneeName": "string",
- "noteContent": "string",
- "noteType": "string",
- "evidenceType": "string",
- "evidenceReference": { },
- "resolution": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c"
}
], - "total": 0,
- "limit": 0,
- "offset": 0,
- "hasMore": true
}Add an event to a fraud case
Add an event to a fraud case (append-only). This is the primary method for recording changes to a case. Supports: status_changed, assigned, note_added, evidence_added, closed
Authorizations:
path Parameters
| caseId required | string <uuid> The fraud case ID |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/jsonrequired
| eventType required | string (FraudCaseEventType) Enum: "created" "status_changed" "assigned" "unassigned" "note_added" "evidence_added" "escalated" "closed" Type of fraud case event |
| actorType required | string Enum: "user" "system" "workflow" |
| actorId required | string |
| actorName | string |
| newStatus | string (FraudCaseStatus) Enum: "open" "under_review" "pending_info" "escalated" "closed_cleared" "closed_suspicious" "closed_reported" Status of a fraud case:
|
| assigneeId | string |
| assigneeName | string |
| noteContent | string |
| noteType | string |
| evidenceType | string |
| evidenceReference | object |
| resolution | object |
Responses
Response Schema: application/json
| success | boolean |
object (FraudCaseEvent) Immutable event in fraud case audit log |
Request samples
- Payload
{- "eventType": "created",
- "actorType": "user",
- "actorId": "string",
- "actorName": "string",
- "newStatus": "open",
- "assigneeId": "string",
- "assigneeName": "string",
- "noteContent": "string",
- "noteType": "string",
- "evidenceType": "string",
- "evidenceReference": { },
- "resolution": { }
}Response samples
- 201
- 400
- 404
{- "success": true,
- "event": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "string",
- "caseId": "af51d69f-996a-4891-a745-aadfcdec225a",
- "eventType": "created",
- "eventSequence": 0,
- "actorType": "user",
- "actorId": "string",
- "actorName": "string",
- "previousStatus": "open",
- "newStatus": "open",
- "assigneeId": "string",
- "assigneeName": "string",
- "noteContent": "string",
- "noteType": "string",
- "evidenceType": "string",
- "evidenceReference": { },
- "resolution": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c"
}
}Change fraud case status
Convenience endpoint to change case status via event.
Authorizations:
path Parameters
| caseId required | string <uuid> The fraud case ID |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/jsonrequired
| newStatus required | string (FraudCaseStatus) Enum: "open" "under_review" "pending_info" "escalated" "closed_cleared" "closed_suspicious" "closed_reported" Status of a fraud case:
|
| actorId required | string |
| actorName | string |
| actorType | string Default: "user" Enum: "user" "system" "workflow" |
Responses
Response Schema: application/json
| success | boolean |
object (FraudCaseEvent) Immutable event in fraud case audit log |
Request samples
- Payload
{- "newStatus": "open",
- "actorId": "string",
- "actorName": "string",
- "actorType": "user"
}Response samples
- 200
- 400
- 404
{- "success": true,
- "event": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "string",
- "caseId": "af51d69f-996a-4891-a745-aadfcdec225a",
- "eventType": "created",
- "eventSequence": 0,
- "actorType": "user",
- "actorId": "string",
- "actorName": "string",
- "previousStatus": "open",
- "newStatus": "open",
- "assigneeId": "string",
- "assigneeName": "string",
- "noteContent": "string",
- "noteType": "string",
- "evidenceType": "string",
- "evidenceReference": { },
- "resolution": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c"
}
}Add a note to a fraud case
Convenience endpoint to add a review note to a case.
Authorizations:
path Parameters
| caseId required | string <uuid> The fraud case ID |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/jsonrequired
| content required | string |
| noteType | string Default: "review" Enum: "review" "clarification" "decision" |
| actorId required | string |
| actorName | string |
| actorType | string Default: "user" Enum: "user" "system" "workflow" |
Responses
Response Schema: application/json
| success | boolean |
object (FraudCaseEvent) Immutable event in fraud case audit log |
Request samples
- Payload
{- "content": "string",
- "noteType": "review",
- "actorId": "string",
- "actorName": "string",
- "actorType": "user"
}Response samples
- 201
- 400
- 404
{- "success": true,
- "event": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "string",
- "caseId": "af51d69f-996a-4891-a745-aadfcdec225a",
- "eventType": "created",
- "eventSequence": 0,
- "actorType": "user",
- "actorId": "string",
- "actorName": "string",
- "previousStatus": "open",
- "newStatus": "open",
- "assigneeId": "string",
- "assigneeName": "string",
- "noteContent": "string",
- "noteType": "string",
- "evidenceType": "string",
- "evidenceReference": { },
- "resolution": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c"
}
}Evaluate and optionally create case
Combined endpoint: Evaluate fraud signals AND create a case if warranted.
This is the recommended production workflow:
- Evaluate signals for an entity
- If signals trigger above threshold, automatically create a case
- Return both the alert and case for downstream processing
ADVISORY ONLY - does not block transactions or take automated actions.
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/jsonrequired
| entityType required | string (EvaluableEntityType) Enum: "customer" "account" "agent" "merchant" |
| entityId required | string |
| windowDays | integer [ 1 .. 365 ] Default: 30 |
| signalIds | Array of strings Specific signals to run (optional - runs all applicable if omitted) |
| createCaseThreshold | number Default: 30 Minimum score to trigger case creation |
| autoCreateCase | boolean Default: true Automatically create case if threshold exceeded |
Responses
Response Schema: application/json
| success | boolean |
object (FraudAlert) Advisory fraud alert - requires human review before any action. The isAdvisoryOnly field is always true to emphasize this is not a blocking decision. | |
object (FraudCase) Immutable fraud case record for compliance review. Cases are append-only - changes are recorded via events. | |
| caseCreated | boolean True if a new case was created (false if already existed) |
| disclaimer | string |
Request samples
- Payload
{- "entityType": "customer",
- "entityId": "string",
- "windowDays": 30,
- "signalIds": [
- "string"
], - "createCaseThreshold": 30,
- "autoCreateCase": true
}Response samples
- 200
- 400
{- "success": true,
- "alert": {
- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c",
- "tenantId": "string",
- "entityType": "customer",
- "entityId": "string",
- "severity": "low",
- "overallScore": 100,
- "summary": "string",
- "triggeredSignals": [
- {
- "signalId": "string",
- "signalName": "string",
- "triggered": true,
- "severity": "low",
- "confidence": 1,
- "evidence": [
- {
- "field": "string",
- "observed": "string",
- "expected": "string",
- "threshold": "string",
- "deviation": 0,
- "context": "string"
}
], - "computedAt": "2019-08-24T14:15:22Z",
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "entityType": "customer",
- "entityId": "string",
- "explanation": "string"
}
], - "nonTriggeredSignalCount": 0,
- "explainability": {
- "topContributors": [
- {
- "signalId": "string",
- "contribution": 0,
- "reason": "string"
}
], - "mitigatingFactors": [
- "string"
], - "recommendation": "string"
}, - "evaluatedAt": "2019-08-24T14:15:22Z",
- "windowDays": 0,
- "isAdvisoryOnly": true
}, - "case": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenantId": "string",
- "alertId": "a9367074-b5c3-42c4-9be4-be129f43577e",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c",
- "entityType": "customer",
- "entityId": "string",
- "severity": "low",
- "overallScore": 100,
- "title": "string",
- "summary": "string",
- "triggeredSignals": [
- {
- "signalId": "string",
- "signalName": "string",
- "triggered": true,
- "severity": "low",
- "confidence": 1,
- "evidence": [
- {
- "field": "string",
- "observed": "string",
- "expected": "string",
- "threshold": "string",
- "deviation": 0,
- "context": "string"
}
], - "computedAt": "2019-08-24T14:15:22Z",
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "entityType": "customer",
- "entityId": "string",
- "explanation": "string"
}
], - "explainability": { },
- "windowDays": 0,
- "windowStart": "2019-08-24T14:15:22Z",
- "windowEnd": "2019-08-24T14:15:22Z",
- "currentStatus": "open",
- "disclaimer": "string",
- "metadata": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "lastEventAt": "2019-08-24T14:15:22Z"
}, - "caseCreated": true,
- "disclaimer": "string"
}SME business health intelligence. IMPORTANT: These endpoints produce advisory metrics only. They are NOT credit scores, NOT lending decisions, and should NOT be used as the sole basis for any financial decision. All metrics are derived from observable transaction patterns.
Calculate SME health metrics
Calculate business health indicators from transaction data. ADVISORY ONLY - not a credit score or lending decision.
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/jsonrequired
| customerId required | string <uuid> |
| windowDays | integer [ 7 .. 365 ] Default: 90 |
| includeCohort | boolean Default: true |
| includeNarrative | boolean Default: true |
Responses
Response Schema: application/json
| success | boolean |
| customerId | string |
| customerName | string |
object | |
object (CohortPlacement) | |
object (SMEHealthNarrative) | |
| evaluatedAt | string <date-time> |
| windowDays | integer |
| disclaimer | string Reminder that this is advisory only, not a credit score |
Request samples
- Payload
{- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "windowDays": 90,
- "includeCohort": true,
- "includeNarrative": true
}Response samples
- 200
- 400
{- "success": true,
- "customerId": "string",
- "customerName": "string",
- "health": {
- "metrics": {
- "stabilityIndex": 100,
- "growthTrend": "improving",
- "growthRatePercent": 0,
- "diversificationIndex": 100,
- "seasonalityScore": 100,
- "cashFlowHealth": 100,
- "activityIndex": 100
}, - "overallScore": 100,
- "overallTrend": "improving",
- "confidenceScore": 1,
- "evidence": [
- {
- "metric": "string",
- "value": 0,
- "interpretation": "string"
}
]
}, - "cohort": {
- "cohort": {
- "cohortId": "string",
- "name": "string",
- "description": "string",
- "criteria": {
- "minMonthlyTransactions": 0,
- "maxMonthlyTransactions": 0,
- "minMonthlyVolume": 0,
- "maxMonthlyVolume": 0
}
}, - "percentileRankings": {
- "property1": 0,
- "property2": 0
}, - "overallPercentile": 0,
- "performanceLabel": "below_average",
- "benchmarkComparison": {
- "aboveBenchmark": [
- "string"
], - "atBenchmark": [
- "string"
], - "belowBenchmark": [
- "string"
]
}
}, - "narrative": {
- "executiveSummary": "string",
- "sections": [
- {
- "title": "string",
- "content": "string"
}
], - "keyInsights": [
- "string"
], - "evidencePoints": [
- "string"
], - "disclaimer": "string"
}, - "evaluatedAt": "2019-08-24T14:15:22Z",
- "windowDays": 0,
- "disclaimer": "string"
}Get SME health for customer
Get business health indicators for a specific customer. ADVISORY ONLY - not a credit score or lending decision.
Authorizations:
path Parameters
| customerId required | string <uuid> |
query Parameters
| windowDays | integer Default: 90 Analysis window in days |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
| customerId | string |
| customerName | string |
object | |
object (CohortPlacement) | |
object (SMEHealthNarrative) | |
| evaluatedAt | string <date-time> |
| windowDays | integer |
| disclaimer | string Reminder that this is advisory only, not a credit score |
Response samples
- 200
- 404
{- "success": true,
- "customerId": "string",
- "customerName": "string",
- "health": {
- "metrics": {
- "stabilityIndex": 100,
- "growthTrend": "improving",
- "growthRatePercent": 0,
- "diversificationIndex": 100,
- "seasonalityScore": 100,
- "cashFlowHealth": 100,
- "activityIndex": 100
}, - "overallScore": 100,
- "overallTrend": "improving",
- "confidenceScore": 1,
- "evidence": [
- {
- "metric": "string",
- "value": 0,
- "interpretation": "string"
}
]
}, - "cohort": {
- "cohort": {
- "cohortId": "string",
- "name": "string",
- "description": "string",
- "criteria": {
- "minMonthlyTransactions": 0,
- "maxMonthlyTransactions": 0,
- "minMonthlyVolume": 0,
- "maxMonthlyVolume": 0
}
}, - "percentileRankings": {
- "property1": 0,
- "property2": 0
}, - "overallPercentile": 0,
- "performanceLabel": "below_average",
- "benchmarkComparison": {
- "aboveBenchmark": [
- "string"
], - "atBenchmark": [
- "string"
], - "belowBenchmark": [
- "string"
]
}
}, - "narrative": {
- "executiveSummary": "string",
- "sections": [
- {
- "title": "string",
- "content": "string"
}
], - "keyInsights": [
- "string"
], - "evidencePoints": [
- "string"
], - "disclaimer": "string"
}, - "evaluatedAt": "2019-08-24T14:15:22Z",
- "windowDays": 0,
- "disclaimer": "string"
}List cohort benchmarks
List all available cohort benchmark definitions. Benchmarks are used to compare SME health metrics against peer groups.
Authorizations:
Responses
Response Schema: application/json
| success | boolean |
Array of objects (CohortBenchmark) | |
| totalCount | integer |
| disclaimer | string |
Response samples
- 200
{- "success": true,
- "cohorts": [
- {
- "cohortId": "string",
- "sampleSize": 0,
- "metrics": {
- "property1": {
- "p25": 0,
- "p50": 0,
- "p75": 0,
- "mean": 0
}, - "property2": {
- "p25": 0,
- "p50": 0,
- "p75": 0,
- "mean": 0
}
}, - "computedAt": "2019-08-24T14:15:22Z"
}
], - "totalCount": 0,
- "disclaimer": "string"
}Mobile money agent network monitoring and health intelligence. IMPORTANT: These endpoints produce DIAGNOSTIC indicators only. They are NOT predictions, NOT automatic suspension decisions, and NOT definitive risk scores. All flags are advisory and require human review before any action. Do not use as the sole basis for agent management decisions.
Get agent health index
Calculate Agent Health Index (AHI) for a mobile money agent. DIAGNOSTIC ONLY - not a prediction, automatic suspension decision, or risk score. All flags are advisory and require human review before action.
Authorizations:
path Parameters
| agentId required | string Mobile money agent ID |
query Parameters
| windowDays | integer [ 7 .. 90 ] Default: 30 Analysis window in days |
| includePeerComparison | boolean Default: true Include peer benchmarking in response |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
object (AgentHealthReport) Complete agent health assessment (DIAGNOSTIC ONLY) |
Response samples
- 200
- 404
- 501
{- "success": true,
- "report": {
- "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c",
- "tenantId": "string",
- "agentId": "string",
- "agentCode": "string",
- "agentName": "string",
- "agentType": "individual",
- "agentTier": "basic",
- "agentStatus": "active",
- "ahiScore": 100,
- "ahiBand": "critical",
- "components": [
- {
- "componentId": "string",
- "name": "string",
- "score": 100,
- "weight": 1,
- "available": true,
- "interpretation": "string",
- "rawValue": 0,
- "threshold": 0
}
], - "flags": [
- {
- "type": "dormancy",
- "severity": "info",
- "description": "string",
- "detectedAt": "2019-08-24T14:15:22Z",
- "daysSinceActivity": 0,
- "percentageValue": 0,
- "threshold": 0,
- "suggestedAction": "string"
}
], - "evidence": [
- {
- "metric": "string",
- "value": 0,
- "interpretation": "string"
}
], - "peerComparison": {
- "ranking": {
- "transactionCount": 100,
- "transactionVolume": 100,
- "floatUtilization": 100,
- "overallHealth": 100
}, - "performanceClass": "below_average",
- "benchmarkGroup": {
- "groupId": "string",
- "name": "string",
- "sampleSize": 0,
- "metrics": {
- "avgTransactionCount30d": 0,
- "avgTransactionVolume30d": 0,
- "avgFloatUtilization": 1,
- "avgAHIScore": 100
}, - "percentiles": {
- "p25": 0,
- "p50": 0,
- "p75": 0
}
}, - "strengths": [
- "string"
], - "weaknesses": [
- "string"
]
}, - "confidenceScore": 1,
- "missingDataPoints": [
- "string"
], - "windowDays": 0,
- "computedAt": "2019-08-24T14:15:22Z",
- "isDiagnosticOnly": true,
- "disclaimer": "string"
}
}Calculate agent health with provided data
Calculate Agent Health Index (AHI) with agent data provided in request body. Use this endpoint when you have agent metrics available directly. DIAGNOSTIC ONLY - not a prediction or automatic decision.
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/jsonrequired
| agentId required | string |
| agentCode required | string |
| agentName | string |
| agentType | string Default: "individual" Enum: "individual" "corporate" "super_agent" |
| agentTier required | string (AgentTier) Enum: "basic" "standard" "premium" "super" Agent tier classification |
| agentStatus required | string (AgentStatus) Enum: "active" "inactive" "suspended" "pending_verification" Agent operational status |
| floatBalance required | number >= 0 |
| floatLimit required | number >= 0 |
| currency | string Default: "GHS" |
| transactionCount30d | integer >= 0 |
| transactionVolume30d | number >= 0 |
| transactionCount7d | integer >= 0 |
| transactionVolume7d | number >= 0 |
| previousPeriodCount | integer >= 0 |
| previousPeriodVolume | number >= 0 |
| cashInCount30d | integer >= 0 |
| cashOutCount30d | integer >= 0 |
| cashInVolume30d | number >= 0 |
| cashOutVolume30d | number >= 0 |
| lastTransactionAt | string <date-time> |
| activatedAt | string <date-time> |
| createdAt | string <date-time> |
| region | string |
| servesRegions | Array of strings |
| includePeerComparison | boolean Default: true |
Responses
Response Schema: application/json
| success | boolean |
object (AgentHealthReport) Complete agent health assessment (DIAGNOSTIC ONLY) |
Request samples
- Payload
{- "agentId": "string",
- "agentCode": "string",
- "agentName": "string",
- "agentType": "individual",
- "agentTier": "basic",
- "agentStatus": "active",
- "floatBalance": 0,
- "floatLimit": 0,
- "currency": "GHS",
- "transactionCount30d": 0,
- "transactionVolume30d": 0,
- "transactionCount7d": 0,
- "transactionVolume7d": 0,
- "previousPeriodCount": 0,
- "previousPeriodVolume": 0,
- "cashInCount30d": 0,
- "cashOutCount30d": 0,
- "cashInVolume30d": 0,
- "cashOutVolume30d": 0,
- "lastTransactionAt": "2019-08-24T14:15:22Z",
- "activatedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "region": "string",
- "servesRegions": [
- "string"
], - "includePeerComparison": true
}Response samples
- 200
- 400
{- "success": true,
- "report": {
- "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c",
- "tenantId": "string",
- "agentId": "string",
- "agentCode": "string",
- "agentName": "string",
- "agentType": "individual",
- "agentTier": "basic",
- "agentStatus": "active",
- "ahiScore": 100,
- "ahiBand": "critical",
- "components": [
- {
- "componentId": "string",
- "name": "string",
- "score": 100,
- "weight": 1,
- "available": true,
- "interpretation": "string",
- "rawValue": 0,
- "threshold": 0
}
], - "flags": [
- {
- "type": "dormancy",
- "severity": "info",
- "description": "string",
- "detectedAt": "2019-08-24T14:15:22Z",
- "daysSinceActivity": 0,
- "percentageValue": 0,
- "threshold": 0,
- "suggestedAction": "string"
}
], - "evidence": [
- {
- "metric": "string",
- "value": 0,
- "interpretation": "string"
}
], - "peerComparison": {
- "ranking": {
- "transactionCount": 100,
- "transactionVolume": 100,
- "floatUtilization": 100,
- "overallHealth": 100
}, - "performanceClass": "below_average",
- "benchmarkGroup": {
- "groupId": "string",
- "name": "string",
- "sampleSize": 0,
- "metrics": {
- "avgTransactionCount30d": 0,
- "avgTransactionVolume30d": 0,
- "avgFloatUtilization": 1,
- "avgAHIScore": 100
}, - "percentiles": {
- "p25": 0,
- "p50": 0,
- "p75": 0
}
}, - "strengths": [
- "string"
], - "weaknesses": [
- "string"
]
}, - "confidenceScore": 1,
- "missingDataPoints": [
- "string"
], - "windowDays": 0,
- "computedAt": "2019-08-24T14:15:22Z",
- "isDiagnosticOnly": true,
- "disclaimer": "string"
}
}List agent benchmarks
List all available tier and regional benchmarks for agent comparison. These benchmarks represent typical performance across the agent network.
Authorizations:
Responses
Response Schema: application/json
| success | boolean |
object | |
| disclaimer | string |
Response samples
- 200
{- "success": true,
- "benchmarks": {
- "tierBenchmarks": {
- "property1": {
- "groupId": "string",
- "name": "string",
- "sampleSize": 0,
- "metrics": {
- "avgTransactionCount30d": 0,
- "avgTransactionVolume30d": 0,
- "avgFloatUtilization": 1,
- "avgAHIScore": 100
}, - "percentiles": {
- "p25": 0,
- "p50": 0,
- "p75": 0
}
}, - "property2": {
- "groupId": "string",
- "name": "string",
- "sampleSize": 0,
- "metrics": {
- "avgTransactionCount30d": 0,
- "avgTransactionVolume30d": 0,
- "avgFloatUtilization": 1,
- "avgAHIScore": 100
}, - "percentiles": {
- "p25": 0,
- "p50": 0,
- "p75": 0
}
}
}, - "regionalBenchmarks": {
- "property1": {
- "groupId": "string",
- "name": "string",
- "sampleSize": 0,
- "metrics": {
- "avgTransactionCount30d": 0,
- "avgTransactionVolume30d": 0,
- "avgFloatUtilization": 1,
- "avgAHIScore": 100
}, - "percentiles": {
- "p25": 0,
- "p50": 0,
- "p75": 0
}
}, - "property2": {
- "groupId": "string",
- "name": "string",
- "sampleSize": 0,
- "metrics": {
- "avgTransactionCount30d": 0,
- "avgTransactionVolume30d": 0,
- "avgFloatUtilization": 1,
- "avgAHIScore": 100
}, - "percentiles": {
- "p25": 0,
- "p50": 0,
- "p75": 0
}
}
}
}, - "disclaimer": "string"
}Get portfolio-level agent health summary
Get aggregated health summary across the agent network. DIAGNOSTIC ONLY - requires human review before action on any flagged agents.
Authorizations:
query Parameters
| limit | integer <= 500 Default: 50 |
| offset | integer Default: 0 |
| tier | string Enum: "basic" "standard" "premium" "super" Filter by agent tier |
| region | string Filter by region |
| status | string Enum: "active" "inactive" "suspended" "pending_verification" Filter by agent status |
| minAHI | number [ 0 .. 100 ] Minimum AHI score filter |
| maxAHI | number [ 0 .. 100 ] Maximum AHI score filter |
| hasCriticalFlags | boolean Filter to agents with critical flags |
| sortBy | string Default: "ahiScore" Enum: "ahiScore" "floatBalance" "transactionVolume" "agentCode" Sort field |
| sortOrder | string Default: "desc" Enum: "asc" "desc" Sort order |
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (AgentHealthSummary) | |
| total | integer |
| limit | integer |
| offset | integer |
| disclaimer | string Reminder that all flags are diagnostic and require human review |
Response samples
- 200
- 501
{- "success": true,
- "agents": [
- {
- "agentId": "string",
- "agentCode": "string",
- "agentName": "string",
- "agentTier": "basic",
- "agentStatus": "active",
- "region": "string",
- "ahiScore": 100,
- "ahiBand": "critical",
- "flagCount": 0,
- "criticalFlagCount": 0,
- "floatUtilization": 1,
- "computedAt": "2019-08-24T14:15:22Z"
}
], - "total": 0,
- "limit": 0,
- "offset": 0,
- "disclaimer": "string"
}KYC/AML workflow orchestration layer. IMPORTANT: This module provides WORKFLOW ORCHESTRATION only. It does NOT perform identity verification, document validation, or automated sanctions screening (unless lists are explicitly provided). It does NOT claim to automate KYC decision-making. All case outcomes require human review and determination. Regulatory report preparation is for internal use only and does NOT constitute official filing.
Evaluate AML trigger rules for an entity
Evaluate AML trigger rules against entity transaction history.
IMPORTANT DISCLAIMERS:
- This produces ADVISORY signals only
- It does NOT perform identity verification
- It does NOT perform document validation
- It does NOT perform sanctions screening (unless lists explicitly provided)
- All outputs require human review before any action
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Request Body schema: application/jsonrequired
| entityType required | string Enum: "customer" "account" "agent" "merchant" "counterparty" Type of entity to evaluate |
| entityId required | string Entity identifier |
| windowDays | integer [ 7 .. 365 ] Default: 30 Number of days for analysis window |
| ruleIds | Array of strings Specific rule IDs to evaluate (default all enabled) |
| dryRun | boolean Default: false If true, evaluate without creating cases |
| highRiskCountries | Array of strings List of high-risk country codes (required for geographic rules) |
Responses
Response Schema: application/json
| success | boolean |
object (AmlEvaluationResult) | |
| disclaimer | string Mandatory compliance disclaimer |
Request samples
- Payload
{- "entityType": "customer",
- "entityId": "string",
- "windowDays": 30,
- "ruleIds": [
- "string"
], - "dryRun": false,
- "highRiskCountries": [
- "string"
]
}Response samples
- 200
- 400
{- "success": true,
- "result": {
- "correlationId": "48fb4cd3-2ef6-4479-bea1-7c92721b988c",
- "entityType": "string",
- "entityId": "string",
- "evaluatedAt": "2019-08-24T14:15:22Z",
- "dryRun": true,
- "triggeredRules": [
- {
- "ruleId": "string",
- "ruleName": "string",
- "triggered": true,
- "riskLevel": "low",
- "evidence": [
- {
- "field": "string",
- "observed": "string",
- "threshold": "string",
- "deviation": 0,
- "context": "string"
}
], - "explanation": "string",
- "triggeredAt": "2019-08-24T14:15:22Z"
}
], - "totalTriggered": 0,
- "highestRiskLevel": "low",
- "disclaimer": "string"
}, - "disclaimer": "string"
}List available AML trigger rules
List all available AML trigger rules and their configurations. Rules are deterministic and threshold-based - NOT ML models.
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
Array of objects (AmlRule) | |
| totalEnabled | integer |
| allRuleIds | Array of strings |
| disclaimer | string |
Response samples
- 200
{- "success": true,
- "rules": [
- {
- "ruleId": "string",
- "name": "string",
- "description": "string",
- "category": "threshold",
- "caseType": "string",
- "defaultRiskLevel": "low",
- "isEnabled": true,
- "thresholds": { },
- "regulatoryBasis": "string",
- "internalPolicy": "string"
}
], - "totalEnabled": 0,
- "allRuleIds": [
- "string"
], - "disclaimer": "string"
}Get default AML trigger thresholds
Get the default threshold values used by AML trigger rules. These can be customized per tenant via configuration.
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
object Default threshold values for AML rules | |
| disclaimer | string |
Response samples
- 200
{- "success": true,
- "thresholds": {
- "property1": 0,
- "property2": 0
}, - "disclaimer": "string"
}Get valid case status transitions
Get the state machine for KYC/AML case status transitions. Cases follow a strict lifecycle from open to closed states.
Authorizations:
header Parameters
| x-tenant-id required | string <uuid> Tenant identifier |
Responses
Response Schema: application/json
| success | boolean |
object Map of status to valid target statuses | |
Array of objects | |
| disclaimer | string |
Response samples
- 200
{- "success": true,
- "transitions": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "statusDetails": [
- {
- "status": "string",
- "label": "string",
- "isTerminal": true,
- "validTransitions": [
- "string"
]
}
], - "disclaimer": "string"
}