Skip to main content

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

ParameterTypeRequiredDescription
entitystringYesMust be "User"
entityIdstringNo*Database ID of the user
encodedKeystringNo*User's encoded key
startDatestringNoStart date filter (YYYY-MM-DD)
endDatestringNoEnd date filter (YYYY-MM-DD)
pageNumberintegerNoPage number (default: 1)
pageSizeintegerNoItems 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

FeatureGetUserActivitiesGetLoggedInUserActivitiesQuery
Target UserAny user (specified)Current logged-in user
Access LevelAdmin/ManagerAny authenticated user
User SelectionManual (provide userId/encodedKey)Automatic (from JWT)
Use CaseUser management, auditingPersonal 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>
);
};

Security Note: This query typically requires administrative permissions. Use GetLoggedInUserActivitiesQuery for users to view their own activities.