Get User Activities
Retrieve all activities performed by a specific user. This is a convenience query that wraps GetActivitiesQuery with entity type set to User.
Command
Use GetActivitiesQuery with entity: "User":
{
"Cmd": "GetActivitiesQuery",
"Data": {
"entity": "User",
"entityId": "12345",
"pageSize": 50
}
}
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
entity | string | Yes | Must be "User" |
entityId | string | No* | Database ID of the user |
encodedKey | string | No* | User's encoded key |
startDate | string | No | Start date filter (YYYY-MM-DD) |
endDate | string | No | End date filter (YYYY-MM-DD) |
pageNumber | integer | No | Page number (default: 1) |
pageSize | integer | No | Items per page (default: 50) |
*Either entityId or encodedKey is required.
Examples
Using User ID
{
"Cmd": "GetActivitiesQuery",
"Data": {
"entity": "User",
"entityId": "12345",
"startDate": "2025-12-01",
"pageSize": 100
}
}
Using User Encoded Key
{
"Cmd": "GetActivitiesQuery",
"Data": {
"entity": "User",
"encodedKey": "8a80866e7f123456",
"pageSize": 50
}
}
Response Example
{
"Status": "00",
"Message": "Activities retrieved successfully",
"Data": {
"activities": [
{
"Id": 4001,
"CreationDate": "2025-12-24T09:00:00",
"UserName": "jane.doe@banklingo.com",
"UserKey": "8a80866e7f123456",
"Action": "Create",
"ActivityDescription": "Created new client: John Smith",
"AffectedItemType": "Customer",
"AffectedCustomerName": "John Smith",
"AffectedCustomerEncodedKey": "8a80866e7f654321"
},
{
"Id": 4002,
"CreationDate": "2025-12-24T10:30:00",
"UserName": "jane.doe@banklingo.com",
"UserKey": "8a80866e7f123456",
"Action": "Approval",
"ActivityDescription": "Approved loan application",
"AffectedItemType": "LoanAccount",
"AffectedLoanAccountName": "Personal Loan",
"AffectedLoanEncodedKey": "8a80866e7f987654",
"AffectedLoanId": "LN-2025-00123"
},
{
"Id": 4003,
"CreationDate": "2025-12-24T14:15:00",
"UserName": "jane.doe@banklingo.com",
"UserKey": "8a80866e7f123456",
"Action": "Transaction",
"ActivityDescription": "Processed deposit: ₦50,000",
"AffectedItemType": "DepositAccount",
"AffectedDepositName": "Savings Account",
"AffectedDepositEncodedKey": "8a80866e7f456789",
"AffectedDepositId": "DEP-2025-00456"
}
],
"totalRows": 87,
"totalPages": 2,
"currentPage": 1,
"pageSize": 50
}
}
TypeScript Example
async function getUserActivities(userId: string, startDate?: string): Promise<ActivityResponse> {
const response = await fetch('/api/core/cmd', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
Cmd: 'GetActivitiesQuery',
Data: {
entity: 'User',
entityId: userId,
startDate: startDate,
pageSize: 50
}
})
});
return await response.json();
}
// Usage
const activities = await getUserActivities('12345', '2025-12-01');
console.log(`User performed ${activities.Data.totalRows} activities`);
Common Activity Types for Users
- Create: Entity creation (clients, accounts, loans)
- Update: Entity modifications
- Delete: Entity deletions
- Approval: Approved transactions/applications
- Rejection: Rejected transactions/applications
- Transaction: Financial transactions processed
- Login: User login events
- Logout: User logout events
- Export: Data exports performed
- Import: Data imports performed
- Configuration: System configuration changes
Use Cases
User Performance Tracking
Monitor user productivity and activities:
{
"Cmd": "GetActivitiesQuery",
"Data": {
"entity": "User",
"encodedKey": "8a80866e7f123456",
"startDate": "2025-12-01",
"endDate": "2025-12-24",
"pageSize": 100
}
}
Audit User Actions
Audit trail for specific user (compliance/security):
{
"Cmd": "GetActivitiesQuery",
"Data": {
"entity": "User",
"entityId": "12345",
"startDate": "2025-01-01",
"pageSize": 1000
}
}
User Activity Report
Generate daily/weekly activity report for a user:
{
"Cmd": "GetActivitiesQuery",
"Data": {
"entity": "User",
"encodedKey": "8a80866e7f123456",
"startDate": "2025-12-17",
"endDate": "2025-12-24",
"pageSize": 200
}
}
Security Investigation
Investigate suspicious user activities:
{
"Cmd": "GetActivitiesQuery",
"Data": {
"entity": "User",
"entityId": "12345",
"searchText": "Failed",
"startDate": "2025-12-20",
"pageSize": 100
}
}
Comparison with GetLoggedInUserActivitiesQuery
| Feature | GetUserActivities | GetLoggedInUserActivitiesQuery |
|---|---|---|
| Target User | Any user (specified) | Current logged-in user |
| Access Level | Admin/Manager | Any authenticated user |
| User Selection | Manual (provide userId/encodedKey) | Automatic (from JWT) |
| Use Case | User management, auditing | Personal dashboard |
When to use GetUserActivities:
- Admin monitoring user performance
- Compliance auditing specific users
- Security investigations
- User activity reports for management
When to use GetLoggedInUserActivitiesQuery:
- Personal activity dashboard
- Self-service activity history
- User viewing own activities
Frontend Integration Example
// React component for user activity dashboard
import React, { useEffect, useState } from 'react';
interface UserActivityStats {
totalActivities: number;
byType: Record<string, number>;
recentActivities: Activity[];
}
export const UserActivityDashboard: React.FC<{ userId: string }> = ({ userId }) => {
const [stats, setStats] = useState<UserActivityStats | null>(null);
useEffect(() => {
async function fetchUserActivities() {
const response = await fetch('/api/core/cmd', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
Cmd: 'GetActivitiesQuery',
Data: {
entity: 'User',
entityId: userId,
startDate: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
pageSize: 100
}
})
});
const result = await response.json();
if (result.Status === '00') {
const activities = result.Data.activities;
// Calculate stats
const byType = activities.reduce((acc: any, act: any) => {
acc[act.Action] = (acc[act.Action] || 0) + 1;
return acc;
}, {});
setStats({
totalActivities: result.Data.totalRows,
byType,
recentActivities: activities.slice(0, 10)
});
}
}
fetchUserActivities();
}, [userId]);
if (!stats) return <div>Loading...</div>;
return (
<div className="user-activity-dashboard">
<h3>User Activity Summary (Last 30 Days)</h3>
<p>Total Activities: {stats.totalActivities}</p>
<h4>By Activity Type:</h4>
<ul>
{Object.entries(stats.byType).map(([type, count]) => (
<li key={type}>{type}: {count}</li>
))}
</ul>
<h4>Recent Activities:</h4>
<ul>
{stats.recentActivities.map(activity => (
<li key={activity.Id}>
{new Date(activity.CreationDate).toLocaleString()}: {activity.ActivityDescription}
</li>
))}
</ul>
</div>
);
};
Related Commands
- Get Activities - Main query with all entity types
- Get Logged-In User Activities - Current user's activities
- Get Client Activities - Client-specific activities
- Get Loan Activities - Loan-specific activities
- Get Deposit Activities - Deposit-specific activities
Security Note: This query typically requires administrative permissions. Use GetLoggedInUserActivitiesQuery for users to view their own activities.