Accessing audit logs requires the
audit_logs:read permission with ANY scope. Read-only operations (viewing pages, running reports, searching records) are intentionally excluded from the audit trail to keep it focused on meaningful state changes.What the Audit Trail Records
Agatabo logs all CREATE, UPDATE, DELETE, and CONFIGURE operations automatically. You do not need to configure anything — logging is always on.| Logged ✅ | Not Logged ❌ |
|---|---|
| Creating a new loan | Viewing a loan |
| Recording a deposit or withdrawal | Running a report |
| Modifying loan terms | Searching for members |
| Approving a loan application | Browsing the dashboard |
| Recording an expense | Viewing the trial balance |
| Adding or disposing an asset | Downloading an export |
| Changing organization settings | |
| Assigning or revoking roles | |
| Sending an invitation | |
| Deleting an expense | |
| Deactivating a member |
Access the Audit Logs
Navigate to Settings → Audit Logs in the Agatabo interface, or query the API directly:Query Parameters
Use these parameters to filter, sort, and paginate the log.| Parameter | Type | Default | Description |
|---|---|---|---|
actorType | Enum | — | Filter by who acted: organization_admin or organization_user |
resourceType | Enum | — | Filter by the type of resource affected (see table below) |
actionType | Enum | — | Filter by action: CREATE, UPDATE, DELETE, DEFAULT, or CONFIGURE |
startDate | ISO date string | — | Return only logs on or after this date |
endDate | ISO date string | — | Return only logs on or before this date |
search | String | — | Case-insensitive search across actorName and description fields |
page | Number | 1 | Page number for pagination |
limit | Number | 20 | Records per page (max recommended: 100) |
sortBy | Enum | createdAt | Sort field: createdAt, actorName, actionType, or resourceType |
sortOrder | Enum | desc | Sort direction: asc or desc |
Resource Types
| Value | What It Covers |
|---|---|
ORGANIZATION | Organization settings and configuration |
ORGANIZATION_USER | Members and user accounts |
SAVINGS | Deposits and withdrawals |
LOAN | Loan creation and modifications |
LOAN_INSTALLMENT | Changes to loan installment schedules |
LOAN_PAYMENT | Loan payment recording |
EXPENSE | Expense entries |
ASSET | Fixed asset management |
TRANSACTION | General ledger transactions |
UPLOAD | File uploads |
CONFIG | System configuration changes |
Response Structure
Response Fields
| Field | Type | Description |
|---|---|---|
id | String | Unique identifier for this audit log entry |
actorName | String | Full name of the person who performed the action |
actorType | Enum | organization_admin or organization_user |
actionType | Enum | CREATE, UPDATE, DELETE, DEFAULT, or CONFIGURE |
resourceType | Enum | The type of resource that was acted upon |
description | String | A human-readable summary of the action taken |
metadata.status | String | success (HTTP 2xx) or failed (HTTP 4xx/5xx) |
metadata | Object | Additional context: amounts, member names, rates, etc. |
createdAt | ISO datetime | Timestamp of when the action occurred |
Pagination Fields
| Field | Type | Description |
|---|---|---|
totalCount | Number | Total log entries matching your filters |
totalPages | Number | Total number of pages |
hasNextPage | Boolean | true if more pages follow the current one |
hasPreviousPage | Boolean | true if pages precede the current one |
Filtering Examples
By Actor Type — Admins Only
By Resource Type — Loan Activity
By Action — Deletions Only
By Date Range — A Specific Month
Keyword Search — A Specific Person
actorName (who acted) and description (what they did), case-insensitively.
Combined — Admin Deletions Last Month
Detecting Failed Operations
Agatabo determines success or failure from the HTTP response code at the time the action was attempted:status: "success"— the operation completed with an HTTP 2xx responsestatus: "failed"— the operation was rejected with an HTTP 4xx or 5xx response
failed entry means the action was attempted but did not complete. The underlying record was not modified. Use this to identify workflow errors, permission misconfigurations, and potential unauthorized access attempts.
Use Cases
Compliance and External Audits
Export the full activity history for a fiscal year and provide it to your external auditors as evidence of internal controls. The audit trail demonstrates that your organization maintains proper authorization procedures, tracks every financial change, and retains records permanently.Security Monitoring
Conduct a monthly security review to confirm that admin-level actions align with expected operations. Look specifically for unusual DELETE activity, configuration changes, or a spike in failed operations — these can indicate either a system problem or an unauthorized access attempt.Troubleshooting Data Discrepancies
When a member disputes a transaction or a balance doesn’t match expectations, the audit trail gives you a chronological reconstruction of every action that touched the relevant records.actorName, description, and createdAt fields against the actual record to identify exactly when and by whom an error was introduced.
Staff Training and Quality Control
Review the actions of newly onboarded staff to confirm they are following correct procedures. Filter by actor name to see their activity, and check themetadata.status field to catch patterns of failed operations that may indicate confusion about a workflow.
Log Retention
Audit logs are stored permanently. No user — including administrators — can delete audit entries. This is intentional: compliance obligations often require 7 or more years of financial records, and a mutable audit trail would undermine its legal and investigative value. For large organizations with thousands of entries, always apply date ranges and resource type filters rather than retrieving all logs at once. Paginate through results using thepagination.hasNextPage flag.
Best Practices
- Filter before you browse. Use
resourceType,actionType, and date range parameters together to scope your review before looking at individual entries. - Always check
metadatafor context. Thedescriptionfield gives a one-line summary;metadatacontains amounts, member names, rates, and other details that make the entry meaningful. - Sort chronologically for investigations. Set
sortBy=createdAt&sortOrder=ascto see events in the sequence they occurred rather than most-recent-first. - Review audit logs before closing a period. Confirm that all entries look correct and no unexpected deletions or modifications occurred before you lock the period permanently.
- Keep copies with your financial reports. When you archive a period-end balance sheet and profit & loss statement, export the corresponding audit log segment and store it alongside those reports.
Period Closing
Review the audit trail before you lock a period — corrections become much harder after closing.
Permissions
Control who holds
audit_logs:read and understand the ANY scope requirement.Organization Settings
See what configuration changes look like in the audit trail.
Settings Overview
Return to the top-level settings guide.