Download OpenAPI specification:Download
We are working towards documenting our APIs using the OpenAPI 3+ specification.
This documentation is BETA and subject to change.
Note: Older API documentation remains available from Legacy API Documentation for areas not covered in this OpenApi documentation.
Note: Usage of the API requires a user-specific api-key which can be requested via the Musoni Service Desk.
Musoni is a secure, multi-tenanted microfinance platform.
The goal of the Musoni API is to empower developers to build apps on top of the Musoni Platform.
The API is organized around REST and is designed to have:
JSON is returned in all responses from the API, including errors.
An API capability that allows applications to peform authentication with platform using username password credentials.
On success API will return details that support ability to call platform APIs using their supported security mechanism: HTTP Basic Authentication
Authenticates username password credentials.
If multi-factor authentication is enabled then a secondary security token will be requested once username, password are verified.
username | string Deprecated Example: username=johnsmith The username to authenticate with. |
password | string Deprecated Example: password=myfav0uritePassw0rd The password to use with |
username | string The |
password | string The |
{- "username": "johnsmith",
- "password": "myfav0uritePassw0rd"
}
{- "username": "johnsmith",
- "userId": 1,
- "base64EncodedAuthenticationKey": "vbnsdGVzdHVzZXItODIyaTN0OnRlc3R1cABC909877adfa=",
- "authenticated": true,
- "officeId": 1,
- "officeName": "Head Office",
- "staffId": 1,
- "staffDisplayName": "John Smith",
- "roles": [
- {
- "id": 4709,
- "name": "SuperUser",
- "description": "Superadmin Role",
- "disabled": true,
- "systemDefined": true
}
], - "permissions": [
- "UPDATE_FUND"
], - "shouldRenewPassword": false,
- "renewPasswordOnNextLogin": false,
- "isSelfServiceUser": false,
- "clients": [
- {
- "client": {
- "id": 4709,
- "accountNo": "0001-0000-0001",
- "displayname": "John Smith",
- "isStaff": false,
- "tags": [ ]
}
}
]
}
An API capability to support registration and use of multi-factor authentication (MFA) on users accounts.
Note: MFA cannot be enabled on Client Users (users where isSelfServiceUser = true
)
Registers the user account of user making request for MFA.
This involves auto generating a secret and proving a QR code back that end user can use to register with a device.
Note: MFA cannot be enabled on Client Users (users where isSelfServiceUser = true
)
{- "email": "johnsmith@example.com",
- "username": "johnsmith",
- "mfaSecret": "AAJ33I4IOUCAWGXNFPHVOFSWGTYI4UTZ",
- "qrCodeImageDataUri": "string"
}
Validates a provided mfaToken
against the users MFA setup.
Two successful validation requests with different mfaToken
s are required in order to complete MFA registration.
Note: MFA cannot be enabled on Client Users (users where isSelfServiceUser = true
)
mfaToken required | string Example: mfaToken=149087 The code provided by the device where mfa account was setup. Typically configured to return a six digit pin but can be different. |
{- "isValid": true,
- "mfa": {
- "enabled": true,
- "registered": false,
- "codeExpired": true
}
}
Validates a MFA code (mfaToken
) against the users MFA setup.
Note: MFA cannot be enabled on Client Users (users where isSelfServiceUser = true
)
mfaToken required | string Example: mfaToken=149087 The code provided by the device where mfa account was setup. Typically configured to return a six digit pin but can be different. |
{- "isValid": true,
- "mfa": {
- "enabled": true,
- "registered": false,
- "codeExpired": true
}
}
Groups are used to provide a distinctive banking distribution channel used in microfinances throughout the world.
The Group is an administrative unit. It can contain as few as 5 people or as many as 40 depending on how its used.
Different styles of group lending
List all Groups
See The Data Filter API for better approach for search/filter.
paged | string Defaults to |
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
search | string Performs a partial matching search across the follow properties of Group to see if they contain the search term:
|
orderBy | string Deprecated Enum: "id" "external_id" "display_name" Deprecated and not used. Use |
sortOrder | string Deprecated Deprecated and not used. Use |
sortBy | string Expects a valid SQL fragment that used in e.g. |
officeId | integer The id of an office. Used to restrict to the set of groups associated with this offices hierarchy (office + sub-offices). |
underHierarchy | string Example: underHierarchy=.14. if provided only groups that exist on or under the office hierarchy provided will be returned. This parameter overrides any data-scoping that is performed against the current users office hierarchy allowing the user to fetch groups not in their office hierarchy. Note: Do not place single or double quotes around the value. |
staffId | integer The id of an staff (loanofficer). Used to restrict to the set of groups associated with the staff. |
name | string Use name of groups to restrict results using exact match. |
externalId | string Use externalId of groups to restrict results using exact match. |
status | integer Enum: 100 300 600 700 Examples: Used to restrict the search to groups whoose status (code) matches the status code provided. |
modifiedSinceTimestamp | integer Examples: Should be passed as a UNIX Timestamp. When provided only groups that have been created or updated since the provided timestamp are returned. Groups will be marked as modified whenever there is any modification to the group. This parameter can be used in integrations to fetch changed data since a last fetch, timestamps will be treated as UTC and returned as UTC. |
orphansOnly | string Deprecated Deprecated. To be removed. Set to Center or parents groups are not support on musoni system applications. |
sqlSearch | string Deprecated Deprecated. Use other parameters such as Expects a valid SQL fragment that used in e.g. |
[- {
- "id": 4709,
- "officeId": 1,
- "officeName": "Head Office",
- "parentId": 1,
- "parentName": "Head Group",
- "accountNo": "0001-0001",
- "name": "Group A",
- "externalId": "0001-000A",
- "status": {
- "id": 300,
- "code": "clientStatusType.pending",
- "value": "Pending"
}, - "active": true,
- "hierarchy": "name",
- "groupLevel": 1,
- "timeline": {
- "submittedOnDate": [
- 2000,
- 1,
- 1
], - "submittedByUsername": "musoni",
- "submittedByFirstname": "John",
- "submittedByLastname": "Doe"
}, - "originChannel": "my-api-integration",
- "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
]
The supported schema for creating groups.
name
, openingDate
, parentId
are required. locale
is required when dealing with numbers or dates dateFormat
is required when dealing with dates
name required | string The name of the group. |
officeId required | integer <int64> The |
active required | boolean A boolean to indicate if this group should be created in active state. if true, |
activationDate | string The opening date in a date format supported by Joda Time. |
submittedOnDate | string The date this group application was submitted in a date format supported by Joda Time. If provided when creating the group and the group is set to |
accountNo | string A unique account no. which identifies this group. If not provided on creation of the group, it is automatically generated based on the Account Number Format setup. (see Account Number Format and Configuration) |
externalId | string A place to put an external reference for this group e.g. The ID another system uses for it. If provided, it must be unique. If not provided on creation of the group, it is automatically generated based on the Account Number Format setup. (see Account Number Format and Configuration) |
clientMembers | Array of integers An array of integers that represent client ids. The clients provided must exist in the same office as group office. There is also configurable rules around the min and max number of clients that are allowed when forming a group from existing clients. |
locale | string The locale to use when interpreting number and date fields in the request. |
dateFormat | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
{- "name": "name",
- "officeId": 1,
- "active": false,
- "activationDate": "01 July 2007",
- "submittedOnDate": "01 July 2007",
- "accountNo": "0001-0001",
- "externalId": "ABC-0001",
- "clientMembers": [
- 1,
- 6,
- 8
], - "locale": "en",
- "dateFormat": "dd MMMM yyyy"
}
{- "resourceId": 12
}
Find a Group by Id
id required | integer <int64> Example: 1 The unique identifer of a group. |
[- {
- "id": 4709,
- "officeId": 1,
- "officeName": "Head Office",
- "parentId": 1,
- "parentName": "Head Group",
- "accountNo": "0001-0001",
- "name": "Group A",
- "externalId": "0001-000A",
- "status": {
- "id": 300,
- "code": "clientStatusType.pending",
- "value": "Pending"
}, - "active": true,
- "hierarchy": "name",
- "groupLevel": 1,
- "timeline": {
- "submittedOnDate": [
- 2000,
- 1,
- 1
], - "submittedByUsername": "musoni",
- "submittedByFirstname": "John",
- "submittedByLastname": "Doe"
}, - "originChannel": "my-api-integration",
- "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
]
TODO (but never with brackets around it again...)
id required | integer <int64> Example: 1 The unique identifer of a group. |
Update existing group
name required | string The name of the group. |
officeId required | integer <int64> The |
active required | boolean A boolean to indicate if this group should be created in active state. if true, |
activationDate | string The opening date in a date format supported by Joda Time. |
submittedOnDate | string The date this group application was submitted in a date format supported by Joda Time. If provided when creating the group and the group is set to |
accountNo | string A unique account no. which identifies this group. If not provided on creation of the group, it is automatically generated based on the Account Number Format setup. (see Account Number Format and Configuration) |
externalId | string A place to put an external reference for this group e.g. The ID another system uses for it. If provided, it must be unique. If not provided on creation of the group, it is automatically generated based on the Account Number Format setup. (see Account Number Format and Configuration) |
clientMembers | Array of integers An array of integers that represent client ids. The clients provided must exist in the same office as group office. There is also configurable rules around the min and max number of clients that are allowed when forming a group from existing clients. |
locale | string The locale to use when interpreting number and date fields in the request. |
dateFormat | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
{- "name": "name",
- "officeId": 1,
- "active": false,
- "activationDate": "01 July 2007",
- "submittedOnDate": "01 July 2007",
- "accountNo": "0001-0001",
- "externalId": "ABC-0001",
- "clientMembers": [
- 1,
- 6,
- 8
], - "locale": "en",
- "dateFormat": "dd MMMM yyyy"
}
{- "resourceId": 1,
- "changes": { }
}
Allows transfer of group to new office
id required | integer <int64> Example: 1 The unique identifer of a group. |
command required | string Default: "transferGroup" Example: command=transferGroup Command to indicate transfer of group |
destinationOfficeId required | integer <int64> The id of the office this group is to be associated with after the transfer. It cannot be the same Note: The user making the request must have visibility of the source and destination office. |
staffId | integer <int64> The id of the staff member you wish the group and/or client members to be associated with after the transfer. Note: The Note: The user making the request must have visibility of the source and destination office. |
note | string A note related to the requested transfer. |
{- "destinationOfficeId": 1,
- "staffId": 1,
- "note": "description related to transfer."
}
{- "commandId": 400,
- "resourceId": 12,
- "rollbackTransaction": false
}
List all Clients.
See The Data Filter API for better approach to search/filter.
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
search | string Performs a partial matching search across the following properties of Client to see if they contain the search term:
|
orderBy | string Enum: "id" "external_id" "display_name" The SQL,Database name of the field |
sortOrder | string DESC or ASC |
officeId | integer The id of an office. Used to restrict to set of clients associated with the office. |
staffId | integer The id of a staff member. Used to restrict to set of clients associated with the staff member. |
externalId | string The externalId of a client. Used to restrict to set of clients where external id is like provided value. e.g. ABC-123% will find all clients that have externalId starting with ABC-123 |
displayName | string The display name of a client. Used to restrict to set of clients where display name is like provided value. e.g. john will find all clients that have display name with text 'john' |
firstname | string The first name of a client. Used to restrict to set of clients where first name is like provided value. e.g. john will find all clients that have first name with text 'john' |
lastname | string The last name of a client. Used to restrict to set of clients where last name is like provided value. e.g. smith will find all clients that have last name with text 'smith' |
hierarchy | string The textual representation of the office hierarchy of a client. Used to restrict to set of clients where their office hierarchy is like provided value. e.g. '.2' will find all clients that have hierarchy starting with '.2' |
modifiedSinceTimestamp | integer Examples: Should be passed as a UNIX Timestamp. When provided only clients that have been created or updated since the provided timestamp are returned. Clients will be marked as modified whenever there is any modification to the client. This parameter can be used in integrations to fetch changed data since a last fetch, timestamps will be treated as UTC and returned as UTC. |
orphansOnly | boolean Use orphansOnly as true to list clients which are not associated to any group/parent. |
sqlSearch | string Deprecated Deprecated. Use other parameters such as A valid sql fragment that will work with backend query for this api. If |
[- {
- "id": 4709,
- "officeId": 1,
- "officeName": "Head Office",
- "accountNo": "0001-0000-0001",
- "externalId": "ID_LGEHJEZ",
- "status": {
- "id": 300,
- "code": "clientStatusType.active",
- "value": "active"
}, - "subStatus": {
- "active": false,
- "isDefault": false
}, - "active": true,
- "activationDate": [
- 2000,
- 1,
- 1
], - "firstname": "John",
- "lastname": "Doe",
- "displayname": "John Doe",
- "gender": {
- "active": false,
- "isDefault": false
}, - "clientType": {
- "active": false,
- "isDefault": false
}, - "clientClassification": {
- "active": false,
- "isDefault": false
}, - "timeline": {
- "submittedOnDate": [
- 2000,
- 1,
- 1
], - "submittedByUsername": "musoni",
- "submittedByFirstname": "musoni",
- "submittedByLastname": "musoni",
- "activatedOnDate": [
- 2000,
- 1,
- 1
], - "activatedByUsername": "musoni",
- "activatedByFirstname": "musoni",
- "activatedByLastname": "musoni"
}, - "groups": [ ],
- "clientUsers": [ ],
- "clientNonPersonDetails": {
- "constitution": {
- "active": false,
- "isDefault": false
}, - "mainBusinessLine": {
- "active": false,
- "isDefault": false
}
}, - "clientLoanOfficerAssignmentHistoryData": [
- {
- "staffId": 1,
- "startDate": [
- 2019,
- 1,
- 25
]
}
], - "isStaff": false,
- "countryIsoCode": "NL",
- "tags": [ ],
- "originChannel": "my-api-integration",
- "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
]
The supported schema for creating a new client.
officeId
is mandatory when creating a client fullname
or any of firstname
, middlename
, lastname
must be provided as name for client active
must be provided when creating a client, if true its possible client creation will fail if it is a member of a group and breaks group rules. dateFormat
and locale
are required even with no date fields at present. \
officeId required | integer <int64> The id of the office this client is associated with. |
firstname | string Facility to break up name into parts suitable for humans. |
middlename | string Facility to break up name into parts suitable for humans. |
lastname | string Facility to break up name into parts suitable for humans. |
fullname | string Facility to set name of a client or business that doesn't suit the firstname,middlename,lastname structure. |
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
active required | boolean Default: false Indicates if this client should be created in Defaults to false if omitted. |
activationDate | string The date the client account was activated. |
groupId | integer <int64> The id of the group this client is associated with. |
staffId | integer <int64> The id of the staff member dealing with the client office. |
isStaff | boolean Indicates if this client is a staff member also. |
genderId | integer <int64> The id of the code value related to the code |
clientTypeId | integer <int64> The id of the code value related to the code |
clientClassificationId | integer <int64> The id of the code value related to the code |
savingsProductId | integer <int64> The id of the default overdraft savings account product this client is associated with. |
legalFormId | integer Enum: 1 2 An integer representing the legal form of the client. 1 for Person, 2 for Entity If provided and set to 2 (for Entity) then |
tagIds | Array of strings Tags are a way of classifying a client (see Tags for more details.) |
accountNo | string If provided, its value is set as account no. for client account. Otherwise an auto generated account no. is put in place based on the configured strategy. (see Configuration: Account Number Format) If provided, it must be unique. |
externalId | string A place to put an external reference for this resource e.g. The ID another system uses for it. If provided, it must be unique. |
dateOfBirth | string The clients date of birth in a date format supported by Joda Time. |
mobileNo | string Contact Details: The mobile telephone number of staff member. If provided it must be unique. This mobile number maybe be used by SMS or Mobile Money functionality. |
mobileNoSecondary | string Contact Details; The secondary mobile telephone number of staff member. |
emailAddress | string Contact Details; The clients email address |
submittedOnDate | string The date the client application was submitted. |
object (ClientNonPersonRequestModel) Business client related fields that are used when a client is created with | |
Array of objects |
{- "officeId": 1,
- "firstname": "John",
- "middlename": "John",
- "lastname": "Doe",
- "fullname": "James Michael Patrick Anderson or ElectricBikes Ltd.",
- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "active": false,
- "activationDate": "01 July 2007",
- "groupId": 1,
- "staffId": 1,
- "isStaff": false,
- "genderId": 218,
- "clientTypeId": 0,
- "clientClassificationId": 0,
- "savingsProductId": 1,
- "legalFormId": 1,
- "tagIds": [
- "Rural"
], - "accountNo": "000-0001",
- "externalId": "CLIENT-0001",
- "dateOfBirth": "01 July 1970",
- "mobileNo": "+353 78 90987877",
- "mobileNoSecondary": "+353 78 90987000",
- "emailAddress": "testmeout@musoni.eu",
- "submittedOnDate": "01 July 2007",
- "clientNonPersonDetails": {
- "incorpNumber": "string",
- "remarksParamName": "string",
- "incorpValidityTillDate": "string",
- "constitutionId": 0,
- "mainBusinessLineId": 0
}, - "address": [
- {
- "addressTypeId": 0
}
]
}
{- "resourceId": 12
}
Find a client by id
id required | integer <int64> Example: 1 The unique identifer of a client. |
template | boolean Default: false Example: template=false if true, returns all active staff in office hierarchy that are above the provided |
staffInSelectedOfficeOnly | boolean Default: false Example: staffInSelectedOfficeOnly=false 'Only relevant if If true, returns all active staff in office hierarchy associated with this client.' |
associations | string Enum: "all" "clientGuarantees" "identifiers" Indications what additional details to bring back from areas associated with client |
[- {
- "id": 4709,
- "officeId": 1,
- "officeName": "Head Office",
- "accountNo": "0001-0000-0001",
- "externalId": "ID_LGEHJEZ",
- "status": {
- "id": 300,
- "code": "clientStatusType.active",
- "value": "active"
}, - "subStatus": {
- "active": false,
- "isDefault": false
}, - "active": true,
- "activationDate": [
- 2000,
- 1,
- 1
], - "firstname": "John",
- "lastname": "Doe",
- "displayname": "John Doe",
- "gender": {
- "active": false,
- "isDefault": false
}, - "clientType": {
- "active": false,
- "isDefault": false
}, - "clientClassification": {
- "active": false,
- "isDefault": false
}, - "timeline": {
- "submittedOnDate": [
- 2000,
- 1,
- 1
], - "submittedByUsername": "musoni",
- "submittedByFirstname": "musoni",
- "submittedByLastname": "musoni",
- "activatedOnDate": [
- 2000,
- 1,
- 1
], - "activatedByUsername": "musoni",
- "activatedByFirstname": "musoni",
- "activatedByLastname": "musoni"
}, - "groups": [ ],
- "clientUsers": [ ],
- "clientNonPersonDetails": {
- "constitution": {
- "active": false,
- "isDefault": false
}, - "mainBusinessLine": {
- "active": false,
- "isDefault": false
}
}, - "clientLoanOfficerAssignmentHistoryData": [
- {
- "staffId": 1,
- "startDate": [
- 2019,
- 1,
- 25
]
}
], - "isStaff": false,
- "countryIsoCode": "NL",
- "tags": [ ],
- "originChannel": "my-api-integration",
- "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
]
Allows transfer of client to new office or group or both.
id required | integer <int64> Example: 1 The unique identifer of a client. |
command required | string Default: "proposeAndAcceptTransfer" Example: command=proposeAndAcceptTransfer Command to indicate transfer of client |
destinationOfficeId required | integer <int64> The id of the office this client is to be associated with after the transfer. It can be the same Note: The user making the request must have visibility of the source and destination office. |
destinationGroupId | integer <int64> The id of the group this client is to be associated with after the transfer. Optional but if this transfer is not to another branch, then this becomes required. Note: The Note: The user making the request must have visibility of the source and destination office. |
staffId | integer <int64> The id of the staff member you wish the client and/or group to be associated with after the transfer. Note: The Note: The user making the request must have visibility of the source and destination office. |
note | string A note related to the requested transfer. |
{- "destinationOfficeId": 1,
- "destinationGroupId": 1,
- "staffId": 1,
- "note": "description related to transfer."
}
{- "commandId": 400,
- "resourceId": 12,
- "rollbackTransaction": false
}
List all identifiers belonging to client.
id required | integer <int64> Example: 1 The unique identifer of a client. |
[- {
- "id": 23,
- "clientId": 23,
- "identifierType": {
- "id": 23,
- "name": "Passport",
- "position": -1,
- "description": "Passport identity",
- "active": false,
- "default": false
}, - "documentKey": "0001-000ABC",
- "description": "Passport identity",
- "status": "clientIdentifierStatus.active",
- "validationPolicyExpression": "^.{1,12}$",
- "validationPolicyCode": "national_id_countryname_validator"
}
]
Creates a new client identifier and associates it with the client.
id required | integer <int64> Example: 1 The unique identifer of a client. |
identifierTypeId | integer <integer64> The |
documentKey | string [ 1 .. 50 ] characters A value that together with the |
description | string [ 1 .. 500 ] characters A description of identifier type. |
status | string Enum: "Active" "Inactive" A status of this identifier. |
{- "identifierTypeId": 23,
- "documentKey": "Passport",
- "description": "Passport identity",
- "status": "Active"
}
{- "resourceId": 12
}
Find Client Identifier By Id
id required | integer <int64> Example: 1 The unique identifer of a client. |
id required | integer <int64> Example: 1 The unique identifer of a client identifier. |
{- "id": 23,
- "clientId": 23,
- "identifierType": {
- "id": 23,
- "name": "Passport",
- "position": -1,
- "description": "Passport identity",
- "active": false,
- "default": false
}, - "documentKey": "0001-000ABC",
- "description": "Passport identity",
- "status": "clientIdentifierStatus.active",
- "validationPolicyExpression": "^.{1,12}$",
- "validationPolicyCode": "national_id_countryname_validator"
}
Update an existing Client Identifier
id required | integer <int64> Example: 1 The unique identifer of a client. |
id required | integer <int64> Example: 1 The unique identifer of a client identifier. |
Update an existing Client Identifier
identifierTypeId | integer <integer64> The |
documentKey | string [ 1 .. 50 ] characters A value that together with the |
description | string [ 1 .. 500 ] characters A description of identifier type. |
status | string Enum: "Active" "Inactive" A status of this identifier. |
{- "identifierTypeId": 23,
- "documentKey": "Passport",
- "description": "Passport identity",
- "status": "Active"
}
{- "resourceId": 1,
- "changes": { }
}
Delete an existing Client Identifier
The deletion is a hard delete removing the client identifer entry and association with client.
id required | integer <int64> Example: 1 The unique identifer of a client. |
id required | integer <int64> Example: 1 The unique identifer of a client identifier. |
{- "resourceId": 1
}
List all validation polices.
[- {
- "id": 23,
- "regex": "^.{1,12}$",
- "description": "1 character and not more that 12 characters long.",
- "code": "national_id_countryname_validator"
}
]
Creates new validation policy.
expressionValue required | string [ 1 .. 255 ] characters A regular expression that is used as validation policy. |
validationType required | string [ 1 .. 255 ] characters A unique name or code associated with this validation policy. |
description required | string [ 1 .. 255 ] characters A description of what the regex validates. |
{- "expressionValue": "^.{1,12}$",
- "validationType": "national_id_countryname_validator",
- "description": "1 character and not more that 12 characters long."
}
{- "resourceId": 12
}
Find Validation Policy By Id
id required | integer <int64> Example: 1 The unique identifer of a client identifier validation policy. |
{- "id": 23,
- "regex": "^.{1,12}$",
- "description": "1 character and not more that 12 characters long.",
- "code": "national_id_countryname_validator"
}
Update an existing Validation Policy
id required | integer <int64> Example: 1 The unique identifer of a client identifier validation policy. |
Update existing validation policy
expressionValue | string [ 1 .. 255 ] characters A regular expression that is used as validation policy. |
validationType | string [ 1 .. 255 ] characters A unique name or code associated with this valiation policy. |
description | string [ 1 .. 255 ] characters A description of what the regex validates. |
{- "expressionValue": "^.{1,12}$",
- "validationType": "national_id_countryname_validator",
- "description": "1 character and not more that 12 characters long."
}
{- "resourceId": 1
}
Delete an existing Validation Policy
The deletion is a hard delete fully removing the entry.
id required | integer <int64> Example: 1 The unique identifer of a client identifier validation policy. |
{- "resourceId": 1
}
List all client identifier types.
[- {
- "id": 23,
- "name": "Passport",
- "description": "Passport identity",
- "validationPolicy": {
- "id": 23,
- "regex": "^.{1,12}$",
- "description": "1 character and not more that 12 characters long.",
- "code": "national_id_countryname_validator"
}, - "deleted": false,
- "mandatory": false,
- "default": false
}
]
Creates new client identifier type.
name | string [ 1 .. 100 ] characters A unique name that identifies the type of identity this represents. |
description | string [ 1 .. 500 ] characters A description of identifier type. |
validationPolicy | integer <integer64> Unique |
deleted | boolean Indicates if identifier type is deleted |
mandatory | boolean Indicates if identifier type is mandatory |
default | boolean Indicates if identifier type is default |
{- "name": "Passport",
- "description": "Passport identity",
- "validationPolicy": 23,
- "deleted": false,
- "mandatory": false,
- "default": false
}
{- "resourceId": 12
}
Find Client Identifier Type By Id
id required | integer <int64> Example: 1 The unique identifer of a client identifier type. |
{- "id": 23,
- "name": "Passport",
- "description": "Passport identity",
- "validationPolicy": {
- "id": 23,
- "regex": "^.{1,12}$",
- "description": "1 character and not more that 12 characters long.",
- "code": "national_id_countryname_validator"
}, - "deleted": false,
- "mandatory": false,
- "default": false
}
Update an existing Client Identifier Type
id required | integer <int64> Example: 1 The unique identifer of a client identifier type. |
Update existing Client Identifier Type
name | string [ 1 .. 100 ] characters A unique name that identifies the type of identity this represents. |
description | string [ 1 .. 500 ] characters A description of identifier type. |
validationPolicy | integer <integer64> Unique |
mandatory | boolean Indicates if identifier type is mandatory |
default | boolean Indicates if identifier type is default |
{- "name": "Passport",
- "description": "Passport identity",
- "validationPolicy": 23,
- "mandatory": false,
- "default": false
}
{- "resourceId": 1
}
Delete an existing Client Identifier Type
The deletion is a soft delete marking the entry as deleted.
id required | integer <int64> Example: 1 The unique identifer of a client identifier type. |
{- "resourceId": 1
}
Blacklisting enables the ability to blacklist a client using different client identifiers e.g (National ID number).
The system will then block the creation of any client, savings account or loan account where any of these identifers are used.
List all blacklist entries.
A blacklist entry is made up of documentType
and documentKey
.
The documentType
relates to a Client Identifier Type setup and the documentKey
is the value of it e.g. National ID and National ID number or Passport and Passport number.
The blacklist is used by account creation and approval APIs to verify the related client or account is not blacklisted.
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
orderBy | string Expects a valid SQL fragment that is used in e.g. |
sortOrder | enum - ASC - DESC Used with If |
{- "totalFilteredRecords": 52,
- "pageItems": [
- { },
- { }
]
}
Adds an new entry to blacklist.
A blacklist entry is made up of documentTypeId
and documentKey
.
The documentTypeId
relates to a Client Identifier Type setup and the documentKey
is the value of it e.g. National ID and National ID number or Passport and Passport number.
The blacklist is used by account creation and approval APIs to verify the related client or account is not blacklisted.
documentTypeId required | integer <int64> The id of the client identifier type being used. |
documentKey required | string [ 1 .. 50 ] characters A value associated with the The system will use this |
note | string [ 1 .. 500 ] characters A more detailed note or description in relation to this blacklist entry. |
submittedOnDate | string The date this blacklist entry was submitted in a date format supported by Joda Time. If omitted when creating the blacklist entry, the date defaults to todays date. |
locale | string The locale to use when interpreting number and date fields in the request. |
dateFormat | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
{- "documentTypeId": 10,
- "documentKey": "ABC-09878",
- "note": "Blacklisted due to loan default.",
- "submittedOnDate": "01 July 2007",
- "locale": "en",
- "dateFormat": "dd MMMM yyyy"
}
{- "resourceId": 12
}
Find a Blacklist entry by Id
id required | integer <int64> Example: 1 The unique identifer of a blacklist entry. |
[- {
- "id": 4709,
- "documentType": {
- "id": 10,
- "name": "custom-ci-8678uqi4",
- "description": "Custom client identifier type for country.",
- "isDeleted": false,
- "isMandatory": false,
- "isDefault": false
}, - "documentKey": "0001-AKH",
- "note": "string",
- "timelineData": {
- "submittedOnDate": [
- 2000,
- 1,
- 1
], - "submittedByUsername": "musoni",
- "submittedByFirstname": "John",
- "submittedByLastname": "Doe",
- "updatedOnDate": [
- 2000,
- 1,
- 1
], - "updatedByUsername": "musoni",
- "updatedByFirstname": "John",
- "updatedByLastname": "Doe",
- "deletedOnDate": [
- 2000,
- 1,
- 1
], - "deletedByUsername": "musoni",
- "deletedByFirstname": "John",
- "deletedByLastname": "Doe"
}, - "clientId": 4709,
- "clientName": "Doe",
- "active": true
}
]
Update an existing blacklist entry.
id required | integer <int64> Example: 1 The unique identifer of a blacklist entry. |
Update existing blacklist entry
documentTypeId | integer <int64> The id of the client identifier type being used. |
documentKey | string [ 1 .. 50 ] characters A value associated with the The system will use this |
note | string [ 1 .. 500 ] characters A more detailed note or description in relation to this blacklist entry. |
{- "documentTypeId": 10,
- "documentKey": "ABC-09878",
- "note": "Blacklisted due to loan default."
}
{- "resourceId": 1
}
Delete an existing blacklist entry.
The deletion is a soft delete, marking the entry as not active.
id required | integer <int64> Example: 1 The unique identifer of a blacklist entry. |
{- "resourceId": 1
}
Blacklist an existing Client.
The process takes the Client Identifier Types associated with the existing client and adds them to the blacklist.
This has the effect of blacklisting the client.
clientId required | integer <int64> Example: 1 The unique identifer of a client. |
{- "clientId": 1
}
The creditbureaus api allows access to creditbureau data stored in Musoni through pre-integrated CRB providers.
List all Credit Bureaus
creditbureauIdentifier | string looks up a creditbureau by identifier, eg mcix/metropol etc. |
[- {
- "id": 4709,
- "identifier": "mcix",
- "name": "MCIX",
- "description": "MCIX Search API",
- "active": true,
- "configurations": {
- "id": 23,
- "fieldName": "SUBSCRIPTION_KEY",
- "fieldValue": 12345
}
}
]
Find Credit Bureau member by id
id required | integer <int64> Example: 1 The unique identifer of the selected resource. |
[- {
- "id": 4709,
- "identifier": "mcix",
- "name": "MCIX",
- "description": "MCIX Search API",
- "active": true,
- "configurations": {
- "id": 23,
- "fieldName": "SUBSCRIPTION_KEY",
- "fieldValue": 12345
}
}
]
List Credit reference requests for Credit bureau, without parameters will only return 200 results. This endpoint will return all requests, including failed requests
clientId | string Looks up credit reference requests for a specific clientId |
loanId | string Looks up credit reference requests for a specific loanId |
[- {
- "id": 4709,
- "identifier": "mcix",
- "responseBody": "{\"api_code_description\":\"Client NRC number is invalid. Please provide a valid short or long NRC number to perform the MCIX request\",\"has_error\":true}",
- "creditBureau": {
- "id": 4709,
- "identifier": "mcix",
- "name": "MCIX",
- "description": "MCIX Search API",
- "active": true
}, - "startDate": 1643189387000,
- "endDate": 1643189387000,
- "clientId": 167873,
- "clientDisplayName": "John Doe",
- "loanId": 167873,
- "loanAccountNumber": "001-0023-333333",
- "status": {
- "id": 400,
- "code": "creditReferenceRequestStatus.complete.with.errors",
- "value": "Complete With Errors"
}
}
]
Find Reference request by Id
bureauId required | integer <int64> Example: 1 The id of the bureau being used |
referenceRequestId required | integer <int64> Example: 1 The unique identifer of the selected resource. |
[- {
- "id": 4709,
- "identifier": "mcix",
- "responseBody": "{\"api_code_description\":\"Client NRC number is invalid. Please provide a valid short or long NRC number to perform the MCIX request\",\"has_error\":true}",
- "creditBureau": {
- "id": 4709,
- "identifier": "mcix",
- "name": "MCIX",
- "description": "MCIX Search API",
- "active": true
}, - "startDate": 1643189387000,
- "endDate": 1643189387000,
- "clientId": 167873,
- "clientDisplayName": "John Doe",
- "loanId": 167873,
- "loanAccountNumber": "001-0023-333333",
- "status": {
- "id": 400,
- "code": "creditReferenceRequestStatus.complete.with.errors",
- "value": "Complete With Errors"
}
}
]
List succesfully completed Credit reference responses for Credit bureau, without parameters will only return 200 results. This endpoint will not return any failed requests
clientId | string Looks up credit reference requests for a specific clientId |
loanId | string Looks up credit reference requests for a specific loanId |
[- {
- "id": 4709,
- "identifier": "mcix",
- "responseBody": "{\"api_code_description\":\"Client NRC number is invalid. Please provide a valid short or long NRC number to perform the MCIX request\",\"has_error\":true}",
- "creditBureau": {
- "id": 4709,
- "identifier": "mcix",
- "name": "MCIX",
- "description": "MCIX Search API",
- "active": true
}, - "startDate": 1643189387000,
- "endDate": 1643189387000,
- "clientId": 167873,
- "clientDisplayName": "John Doe",
- "loanId": 167873,
- "loanAccountNumber": "001-0023-333333",
- "status": {
- "id": 400,
- "code": "creditReferenceRequestStatus.complete.with.errors",
- "value": "Complete With Errors"
}
}
]
The supported schema for creating a new loan product.
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
name required | string [ 1 .. 100 ] characters The full name of the loan product. |
shortName required | string = 4 characters The short name of the loan product. An abbreviated version of the name, used in reports or menus where space is limited. |
description | string <= 500 characters A description to provide users with more information about the product. |
productGroupId | integer <integer64> The id of associated product group. |
fundId | integer <integer64> The id of associated fund source. The original source of your funds (for example a grant). |
loanIncomeTaxGroupId | integer <integer64> The id of associated TaxGroup to be used for tax on loan income. If provided, it means that loan accounts created against this product will support tax on their income. Only supported when the Periodic Accruals accounting is configured if provided, |
currencyCode required | string <= 3 characters Relates to the the currency of the loan product. A three character identifer of currency this loan product uses. |
digitsAfterDecimal required | integer Relates to the the currency of the loan product. The number of digits after decimal to be supported on the currency. |
inMultiplesOf | integer Relates to the the currency of the loan product. Relevant for currencies where digitsAfterDecimal is zero. This will round the monetary amount to the nearest multiple. |
installmentAmountInMultiplesOf required | integer Relates to the loan repayment schedule. This will round the monetary amount of an installment to the nearest multiple. Must be greater than or equal to |
principal | number <decimal> The Can be used with |
minPrincipal | number <decimal> The minimum size of any loan under this loan product. See also |
maxPrincipal | number <decimal> The maximum size of any loan under this loan product. See also |
numberOfRepayments required | integer The Can be used with |
minNumberOfRepayments | integer The See also |
maxNumberOfRepayments | integer The See also |
repaymentEvery required | integer Used together with |
repaymentFrequencyType required | integer Enum: 0 1 2 3 Used together with Supported options are: 0=Days 1=Weeks 2=Months 3=Years |
isLinkedToFloatingInterestRates | boolean Default: false A boolean that indicates if the product is using the "floating" interest rates concept or not. if false, if true, |
interestRatePerPeriod | number <decimal> The default interest rate shown to user that create loans via forms. Can be used with Used with Mandatory if |
minInterestRatePerPeriod | number <decimal> The minimum interest rate allowed in loans that use this product. See also |
maxInterestRatePerPeriod | number <decimal> The maximum interest rate allowed in loans that use this product. See also |
interestRateFrequencyType | integer Enum: 2 3 Used together with Supported options are: 2=Months 3=Years Mandatory if |
floatingRatesId | integer <integer64> The id on a floating rate entry on the system. |
interestRateDifferential | number <decimal> The difference between the base rate and this loan products floating interest rate. |
minDifferentialLendingRate | number <decimal> The min allowed difference between the base rate and this loan products floating interest rate. |
maxDifferentialLendingRate | number <decimal> The max allowed difference between the base rate and this loan products floating interest rate. |
defaultDifferentialLendingRate | number <decimal> The default difference between the base rate and this loan products floating interest rate. |
isFloatingInterestRateCalculationAllowed | boolean Default: false A boolean that indicates if floating interest rate caclulation is allowed. |
repayPrincipalEvery | integer Related to |
repayInterestEvery | integer Related to |
firstRepaymentOffsetPeriod | integer
For example, if the See also |
allowVariableInstallments | boolean Default: false Use 'allowVariableInstallments' if you wish to be able to change the repayment schedule. Example - if If true, then |
minimumGap | integer Mandatory if |
maximumGap | integer Mandatory if |
graceOnPrincipalPayment | integer If populated, indicates the number of installments you wish your grace period on principal payments to be. |
graceOnInterestPayment | integer If populated, indicates the number of installments you wish your grace period on interest payments to be. |
graceOnInterestCharged | integer If populated, indicates the number of installments you wish there to be no interest charged / calculated for. |
graceOnPrincipalAndInterestPayment | boolean Default: false Related to attribute overrides for loans. see |
graceOnArrearsAgeing | boolean Default: false Related to attribute overrides for loans. see |
inArrearsTolerance | number <decimal> Deprecated Deprecated from 1.45. No longer used. |
standingInstruction | boolean Deprecated Default: false Deprecated. if passed as direct parameter not processed or used. Related to attribute overrides for loans. see |
allowAdditionalCharges | boolean Deprecated Default: true If false, when adding or editing loans with this product users will not be allowed to add additional charges to the loan. Deprecated. if passed as direct parameter not processed or used. Related to attribute overrides for loans. see |
canUseForTopup | boolean Default: false if true, a new loan of this product type is allowed to top-up an existing loan of the client. |
interestType required | integer Enum: 0 1 Relates to the Dictates how the the interest is calculated for the loan schedule. Supported options are: 0=Declining Balance 1=Flat Flat Interest loans charge equal interest amounts on each loan instalment, based on the original loan principal. Declining Balance loans calculate the interest amount on each instalment based upon the outstanding balance of the loan (therefore the interest amount charged on each instalment reduces as the loan is repaid). |
isInterestRecalculationEnabled | boolean Default: false Mandatory and only applicable if Used to denote whether interest recalculation is enabled or disabled. When a client falls into arrears, additional interest will be recalculated. On declining balance loans interest is always calculated across the new loan term. |
allowPartialPeriodInterestCalcualtion | boolean Default: false Only Applicable if |
recalculateInterestOnArrears | boolean Default: false Only Applicable if |
interestRecalculationCompoundingMethod | integer Enum: 0 1 2 3 Mandatory and only applicable if Only supported if Supported options are: 0=None 1=Interest 2=Fee 3=Interest and Fee When a client falls into arrears, additional interest is calculated. Use this setting to determine whether the new interest amount is calculated on fees, interest or fees & interest. |
rescheduleStrategyMethod | integer Enum: 1 2 3 Mandatory and only applicable if Supported options are: 1=Reschedule next repayments 2=Reduce number of installements 3=Reduce installment amount (Reduce EMI Amount) Select 2="Reduce number of installments" if you wish the loan to finish earlier in the case of early repayments Select 3="Reduce installment amount" if you wish the interest due on future installments to be reduced in the case of early repayments. |
recalculationRestFrequencyType | integer Enum: 1 2 3 4 Mandatory and only applicable if Supported options are: 1=Same as repayment period 2=Daily 3=Weekly 4=Monthly Use 2=Daily if you wish interest to be calculated on the outstanding loan balance from the previous day. Use 3=weekly for the previous week Use 4=monthly for the previous month. Using 0=Same as Repayment period will use the repayment frequency of the loan itself. |
recalculationRestFrequencyInterval | integer Optional and only applicable if Not supported through Musoni UI #TODO review if needed |
recalculationRestFrequencyNthDayType | integer Optional and only applicable if Not supported through Musoni UI #TODO review if needed |
recalculationRestFrequencyDayOfWeekType | integer Optional and only applicable if Not supported through Musoni UI #TODO review if needed |
recalculationRestFrequencyOnDayType | integer Optional and only applicable if Not supported through Musoni UI #TODO review if needed |
recalculationCompoundingFrequencyInterval | integer Optional and only applicable if Not supported through Musoni UI #TODO review if needed |
recalculationCompoundingFrequencyNthDayType | integer Optional and only applicable if Not supported through Musoni UI #TODO review if needed |
recalculationCompoundingFrequencyDayOfWeekType | integer Optional and only applicable if Not supported through Musoni UI #TODO review if needed |
recalculationCompoundingFrequencyOnDayType | integer Optional and only applicable if Not supported through Musoni UI #TODO review if needed |
isArrearsBasedOnOriginalSchedule | boolean Optional and only applicable if Not supported through Musoni UI #TODO review if needed |
isCompoundingToBePostedAsTransaction | boolean Optional and only applicable if Not supported through Musoni UI #TODO review if needed |
preClosureInterestCalculationStrategy | integer Enum: 1 2 Optional and only applicable if Supported options are: 1=TILL_PRE_CLOSURE_DATE 2=TILL_REST_FREQUENCY_DATE When a customer pays off a loan ahead of schedule and not on the due date of the installment, \n this option controls whether the interest is calculated on the date of the transaction, \n or uses interest as per the end date of the current installment. |
inDuplum | boolean Optional and only applicable if if true, the system will stop calculating additional (penalty) interest on loans in arrears once the total interest, fees and penalties outstanding is the same as the outstanding principal. This only applies to interest recalculation loans. |
amortizationType required | integer Enum: 0 1 Relates to the the repayment schedule. Dictates how the the loan is amortized over the loan schedule. Supported options are: 0=Equal Principal 1=Equal Installments Mandatory and only relevant if Selecting 0=Equal Principal ensures that the principal of the loan installment remains the same through the loan term (with the interest and installment size therefore declining). Selecting 1=Equal Installments ensures the principal is adjusted to ensure equal installment sizes. |
interestCalculationPeriodType required | integer Default: 1 Enum: 0 1 Relates to the the repayment schedule. Dictates how the the interest is calculated for the loan schedule. Supported options are: 0=Daily 1=Same as repayment period Defaults to 1="Same as Repayment Period". This ensures that all loans of the same loan term have the same interest amount charged over the course of the loan. Selecting 0=Daily means that the interest amount charged on a loan product will vary slightly based on the number of days in the months over which the loan term runs. |
daysInYearType required | integer Enum: 1 360 364 365 An enumeration that indicates the number of days in year to be used. This determines whether the daily interest rate is calculated by dividing the ‘Nominal Annual Interest Rate’ by 360, or 365. Supported options are: 1=Actual 360=360 364=364 365=365 |
daysInMonthType required | integer Enum: 1 30 An enumeration that indicates the number of days in month to be used. Specifies the number of days in a Month, used to calculate partial periods for monthly loans. Supported options are: 1=Actual 30=30 |
transactionProcessingStrategyId required | integer Enum: 1 5 6 An This relates to functionality that is also known as Payment Application Logic. A number of out of the box approaches exist and custom approaches can be added if required. Determines the order in which Interest, Principal, Penalties and Fees are paid off when repayments are made. Supported options are: 1=Stanard (Penalties, Fees, Interest, Principal order) 5=Principal, Interest, Penalties, Fees Order 6=Interest, Principal, Penalties, Fees Order |
includeInBorrowerCycle | boolean Default: false Used to denote whether the loans should include in loan cycle counter or not. |
holdGuaranteeFunds | boolean Default: false If true, a guarantor will not be able to withdraw funds linked as a guarantee to the loan until the loan is repaid. if true, see |
mandatoryGuarantee | number <decimal> Mandatory and only applicable if This is the percentage of the loan that has to be guaranteed before the loan can be created. |
minimumGuaranteeFromOwnFunds | number <decimal> This is the minimum percentage that has to be guaranteed from the client's own savings, rather than the savings of other guarantors. |
minimumGuaranteeFromGuarantor | number <decimal> This is the minimum percentage that any other guarantors have to guarantee for the loan to be created. |
splitInterestAmongGuarantors | boolean Default: false Mandatory and only applicable if If true, then when the loan is fully repaid, the interest from the loan will be paid into each guarantor's savings account in proportion to the percentage of the loan they guaranteed. |
canAutoAllocateOverpayments | boolean Default: false If true then if the loan is overpaid, the overpaid amount will be automatically transferred to the linked savings account. If there is no linked savings account, the overpaid amount has to be transferred manually. This will also apply to already active accounts. |
autoDisburse | boolean Default: false If true, newly created loans will automatically be approved and disbursed. |
paymentTypeId | integer Value: 1 Mandatory if |
checkNumber | string <= 45 characters Optional and only applicable if |
receiptNumber | string <= 45 characters Mandatory if |
restrictSavingsProductId | integer <integer64> The Linked savings account will then be required to be associated with this selected savings product. |
requiresLinkedSavingsAccount | boolean Used to indicate if a linked savings account is required or not. |
requiresMandatorySavings | boolean Optional and only applicable if |
mandatorySavingsMethod | string Enum: "UPFRONT" "SPREAD" Mandatory and only applicable if |
mandatorySavingsPercentage | number <decimal> Mandatory and only applicable if |
object | |
accountingRule | integer Enum: 1 2 3 4 Indicates what type of accounting is enabled for this loan product. Supported options are: 1=None 2=Cash Based Accounting 3=Accrual Periodic 4=Accrual Upfront |
fundSourceAccountId | integer <integer64> The |
loanPortfolioAccountId | integer <integer64> The |
transfersInSuspenseAccountId | integer <integer64> The |
interestOnLoanAccountId | integer <integer64> The |
incomeFromFeeAccountId | integer <integer64> The |
incomeFromPenaltyAccountId | integer <integer64> The |
incomeFromRecoveryAccountId | integer <integer64> The |
writeOffAccountId | integer <integer64> The |
overpaymentLiabilityAccountId | integer <integer64> The |
receivableInterestAccountId | integer <integer64> The |
receivableFeeAccountId | integer <integer64> The |
receivablePenaltyAccountId | integer <integer64> The |
interestWriteOffAccountId | integer <integer64> The |
feeWriteOffAccountId | integer <integer64> The |
penaltyWriteOffAccountId | integer <integer64> The |
suspendedInterestIncomeAccountId | integer <integer64> The |
interestTaxOnLoanAccountId | integer <integer64> The This GL account is used to book tax on interest when the tax feature is setup for loans and |
{- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "name": "Green Loans 1",
- "shortName": "Green Loans 1",
- "description": "12.5% Declining Balance",
- "productGroupId": 1,
- "fundId": 1,
- "loanIncomeTaxGroupId": 1,
- "currencyCode": "KES",
- "digitsAfterDecimal": 0,
- "inMultiplesOf": 1,
- "installmentAmountInMultiplesOf": 1,
- "principal": 1000.5,
- "minPrincipal": 100,
- "maxPrincipal": 100,
- "numberOfRepayments": 1,
- "minNumberOfRepayments": 1,
- "maxNumberOfRepayments": 1,
- "repaymentEvery": 1,
- "repaymentFrequencyType": 2,
- "isLinkedToFloatingInterestRates": false,
- "interestRatePerPeriod": 10.5,
- "minInterestRatePerPeriod": 10.5,
- "maxInterestRatePerPeriod": 10.5,
- "interestRateFrequencyType": 2,
- "floatingRatesId": 1,
- "interestRateDifferential": 2.5,
- "minDifferentialLendingRate": 1,
- "maxDifferentialLendingRate": 4,
- "defaultDifferentialLendingRate": 2.5,
- "isFloatingInterestRateCalculationAllowed": false,
- "repayPrincipalEvery": 1,
- "repayInterestEvery": 1,
- "firstRepaymentOffsetPeriod": 1,
- "allowVariableInstallments": false,
- "minimumGap": 1,
- "maximumGap": 1,
- "graceOnPrincipalPayment": 1,
- "graceOnInterestPayment": 1,
- "graceOnInterestCharged": 1,
- "graceOnPrincipalAndInterestPayment": false,
- "graceOnArrearsAgeing": false,
- "inArrearsTolerance": 0,
- "standingInstruction": false,
- "allowAdditionalCharges": false,
- "canUseForTopup": false,
- "interestType": 0,
- "isInterestRecalculationEnabled": false,
- "allowPartialPeriodInterestCalcualtion": false,
- "recalculateInterestOnArrears": false,
- "interestRecalculationCompoundingMethod": 1,
- "rescheduleStrategyMethod": 1,
- "recalculationRestFrequencyType": 1,
- "recalculationRestFrequencyInterval": 1,
- "recalculationRestFrequencyNthDayType": 1,
- "recalculationRestFrequencyDayOfWeekType": 1,
- "recalculationRestFrequencyOnDayType": 1,
- "recalculationCompoundingFrequencyInterval": 1,
- "recalculationCompoundingFrequencyNthDayType": 1,
- "recalculationCompoundingFrequencyDayOfWeekType": 1,
- "recalculationCompoundingFrequencyOnDayType": 1,
- "isArrearsBasedOnOriginalSchedule": false,
- "isCompoundingToBePostedAsTransaction": false,
- "preClosureInterestCalculationStrategy": 1,
- "inDuplum": false,
- "amortizationType": 1,
- "interestCalculationPeriodType": 1,
- "daysInYearType": 1,
- "daysInMonthType": 1,
- "transactionProcessingStrategyId": 1,
- "includeInBorrowerCycle": false,
- "holdGuaranteeFunds": false,
- "mandatoryGuarantee": 0,
- "minimumGuaranteeFromOwnFunds": 0,
- "minimumGuaranteeFromGuarantor": 0,
- "splitInterestAmongGuarantors": false,
- "canAutoAllocateOverpayments": false,
- "autoDisburse": false,
- "paymentTypeId": 1,
- "checkNumber": 1,
- "receiptNumber": 1,
- "restrictSavingsProductId": 1,
- "requiresLinkedSavingsAccount": false,
- "requiresMandatorySavings": false,
- "mandatorySavingsMethod": "UPFRONT",
- "mandatorySavingsPercentage": 0,
- "allowAttributeOverrides": {
- "allowAdditionalCharges": true,
- "amortizationType": false,
- "interestType": false,
- "interestCalculationPeriodType": false,
- "inArrearsTolerance": false,
- "repaymentEvery": true,
- "multipleBalloonRepayments": false,
- "transactionProcessingStrategyId": false,
- "graceOnPrincipalAndInterestPayment": false,
- "graceOnArrearsAgeing": false,
- "standingInstruction": false
}, - "accountingRule": 2,
- "fundSourceAccountId": 0,
- "loanPortfolioAccountId": 0,
- "transfersInSuspenseAccountId": 0,
- "interestOnLoanAccountId": 0,
- "incomeFromFeeAccountId": 0,
- "incomeFromPenaltyAccountId": 0,
- "incomeFromRecoveryAccountId": 0,
- "writeOffAccountId": 0,
- "overpaymentLiabilityAccountId": 0,
- "receivableInterestAccountId": 0,
- "receivableFeeAccountId": 0,
- "receivablePenaltyAccountId": 0,
- "interestWriteOffAccountId": 0,
- "feeWriteOffAccountId": 0,
- "penaltyWriteOffAccountId": 0,
- "suspendedInterestIncomeAccountId": 0,
- "interestTaxOnLoanAccountId": 0
}
{- "resourceId": 12
}
Activates a closed loan product.
id required | integer <int64> Example: 1 The unique identifer of a Loan Product. |
command required | string Example: command=activate The activate command. |
null
{- "resourceId": 12,
- "changes": {
- "status": {
- "id": 300,
- "code": "loanProductStatus.active",
- "value": "Active",
- "active": true,
- "closed": false
}
}
}
Closes an active loan product.
id required | integer <int64> Example: 1 The unique identifer of a Loan Product. |
command required | string Example: command=close The close command. |
null
{- "resourceId": 12,
- "changes": {
- "status": {
- "id": 600,
- "code": "loanProductStatus.closed",
- "value": "Closed",
- "active": false,
- "closed": true
}
}
}
List all Loans
See The Data Filter API for better approach to search/filter.
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
search | string Example: search=John Doe Searches (matching around) across:
|
officeId | integer The id of an office. Used to restrict to set of staff associated with the office. |
externalId | string Example: externalId=L00001 if provided only loans with this exact externalId will be returned |
staffId | integer id of a staff/loanofficer, if provided will only return the loans linked to this staff id |
groupId | integer id of a staff/loanofficer, if provided will only return the loans linked to this staff id |
underHierarchy | string Example: underHierarchy=.2.3 if provided only loans that exist under the hierarchy provided will be return (office + child offices) |
orderBy | string Enum: "id" "loan_status_id" "submittedon_date" "disbursedon_date" "expectedmaturedon_date" "firstrepaymenton_date" "principal_amount" The database field name that you wish to order the list of loans by. |
sortOrder | string Enum: "ASC" "DESC" Used with |
accountNo | string Example: accountNo=L00001 if provided only loans with this exact accountNo will be returned |
skipRowCount | boolean Default: false Example: skipRowCount=false if true, does not return rowcount, improving search speed. |
disbursementFromDate | string Example: disbursementFromDate=2020-01-01 Allows to only return a subset of loans based on disbursement date, should be provided in format "yyyy-MM-dd" |
disbursementToDate | string Example: disbursementToDate=2021-01-01 Allows to only return a subset of loans based on disbursement date, should be provided in format "yyyy-MM-dd" |
clientOfficeName | string Example: clientOfficeName=Head office Only returns loans that are part of an exact office name. |
modifiedSinceTimestamp | integer Examples: Should be passed as a UNIX Timestamp. When provided only loans that have been created or updated since the provided timestamp are returned. Loans will be marked as modified whenever there is any modification to the loan, the underlying schedule, transactions, charges etc. This parameter can be used in integrations to fetch changed data since a last fetch, timestamps will be treated as UTC and returned as UTC. |
sqlSearch | string Deprecated Deprecated. Use other parameters such as A valid sql fragment that will work with backend query for this api. |
[- {
- "id": 4709,
- "accountNo": "0001-0000-0001",
- "externalId": "ID_LGEHJEZ",
- "status": { },
- "clientId": 4709,
- "clientAccountNo": "0001-0000-0001",
- "clientName": "John Doe",
- "clientOfficeId": 10,
- "loanProductId": 4709,
- "loanProductName": "Mobile Loan",
- "loanProductDescription": "Mobile loan for repeat customers with max limit of 10,000",
- "loanOfficerId": 1,
- "loanOfficerName": "Lockman, Aron",
- "loanType": {
- "id": 1,
- "code": "accountType.individual",
- "value": "individual"
}, - "currency": {
- "code": "KES",
- "name": "Kenyan Shilling",
- "nameCode": "currency.KES",
- "decimalPlaces": 2,
- "displaySymbol": "KSh",
- "displayLabel": "currency.KES"
}, - "principal": 5000,
- "approvedPrincipal": 5000,
- "proposedPrincipal": 5000,
- "termFrequency": 12,
- "termPeriodFrequencyType": {
- "id": 2,
- "code": "loanTermFrequency.periodFrequencyType.months",
- "value": "Months"
}, - "numberOfRepayments": 6,
- "repaymentEvery": 2,
- "repaymentFrequencyType": {
- "id": 2,
- "code": "loanTermFrequency.periodFrequencyType.months",
- "value": "Months"
}, - "interestRatePerPeriod": 2,
- "interestRateFrequencyType": {
- "id": 2,
- "code": "interestRateFrequency.periodFrequencyType.months",
- "value": "Months"
}, - "annualInterestRate": 24,
- "amortizationType": {
- "id": 1,
- "code": "amortizationType.equal.installments",
- "value": "Equal installments"
}, - "interestType": {
- "id": 0,
- "code": "interestType.declining.balance",
- "value": "Declining Balance"
}, - "interestCalculationPeriodType": {
- "id": 1,
- "code": "interestCalculationPeriodType.same.as.repayment.period",
- "value": "Same as repayment period"
}, - "allowPartialPeriodInterestCalcualtion": true,
- "transactionProcessingStrategyId": 1,
- "transactionProcessingStrategyName": "Penalties, Fees, Interest, Principal order",
- "expectedFirstRepaymentOnDate": [
- 2000,
- 1,
- 1
], - "timeline": {
- "submittedOnDate": [
- 2000,
- 1,
- 1
], - "submittedByUsername": "musoni",
- "submittedByFirstname": "musoni",
- "submittedByLastname": "musoni",
- "expectedDisbursementDate": [
- 2000,
- 1,
- 1
], - "expectedMaturityDate": [
- 2000,
- 1,
- 1
]
}, - "multiDisburseLoan": true,
- "canDefineInstallmentAmount": true,
- "canDisburse": true,
- "canUseForTopup": true,
- "isTopup": true,
- "stopApplyingPenalty": true,
- "closureLoanId": 132,
- "inArrears": true,
- "isNPA": true,
- "daysInMonthType": {
- "id": 1,
- "code": "DaysInMonthType.actual",
- "value": "Actual"
}, - "daysInYearType": {
- "id": 1,
- "code": "DaysInYearType.actual",
- "value": "Actual"
}, - "isInterestRecalculationEnabled": true,
- "recalculateInterestOnArrears": false,
- "createStandingInstructionAtDisbursement": true,
- "isVariableInstallmentsAllowed": true,
- "internalRateOfReturn": 2,
- "effectiveInterestRate": 2,
- "repayPrincipalEvery": 1,
- "repayInterestEvery": 1,
- "isInDuplum": true,
- "officeId": true,
- "officeName": "Head Office",
- "originChannel": "my-api-integration",
- "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
]
Create new Loan or use command=calculateLoanSchedule
to calculate a repayment schedule using loan terms.
loanType required | string Enum: "individual" "group" "jlg" This fields indicates the type of loan that is being applied for. Three types of loans are supported at present:
|
productId required | integer <integer64> The |
clientId | integer <integer64> The Mandatory when Impact on repayment schedule: If |
groupId | integer <integer64> The Mandatory when Impact on repayment schedule: If |
calendarId | integer <integer64> The Applicable only to JLG loans and where configuration is enabled for |
syncDisbursementWithMeeting | boolean A boolean indicating if disbursement date should be fall in with the groups meeting date. Applicable only to JLG loans and where configuration is enabled for |
principal required | number <decimal> The |
loanTermFrequency required | integer Used together with |
loanTermFrequencyType required | integer Enum: 0 1 2 3 Used together with Supported options are: 0=Days 1=Weeks 2=Months 3=Years |
numberOfRepayments required | integer The |
repaymentEvery required | integer Used together with |
repaymentFrequencyType required | integer Enum: 0 1 2 3 Used together with Supported options are: 0=Days 1=Weeks 2=Months 3=Years When months option is selected two futher fields are relevant and can be optionally provided; |
repaymentFrequencyNthDayType | integer Enum: 1 2 3 4 -1 Used together with It supports frequencies like: First Monday (of the month). Only applicable when Supported options are: 1=First 2=Second 3=Third 4=Fourth |
repaymentFrequencyDayOfWeekType | integer Enum: 1 2 3 4 5 6 7 Used together with It supports frequencies like: First Monday (of the month). Only applicable when Supported options are: 1=Monday 2=Tuesday 3=Wednesday 4=Thursday 5=Friday 6=Saturday 7=Sunday |
interestType required | integer Enum: 0 1 Relates to the Dictates how the interest is calculated for the loan schedule. Supported options are: 0=Declining Balance 1=Flat Flat Interest loans charge equal interest amounts on each loan instalment, based on the original loan principal. Declining Balance loans calculate the interest amount on each instalment based upon the outstanding balance of the loan (the interest amount charged on each instalment reduces as the loan is repaid). |
interestCalculationPeriodType required | integer Default: 1 Enum: 0 1 Relates to the repayment schedule. Dictates how the interest is calculated for the loan schedule. Supported options are: 0=Daily 1=Same as repayment period Defaults to 1="Same as Repayment Period". This ensures that all loans of the same loan term have the same interest amount charged over the course of the loan. Selecting 0=Daily means that the interest amount charged on a loan product will vary slightly based on the number of days in the months over which the loan term runs. |
interestRatePerPeriod required | number <decimal> The interest rate per selected period type. Used with |
interestRateFrequencyType | integer Deprecated Enum: 2 3 Used together with Supported options are: 2=Months 3=Years If omitted, the loan inherits this property from its Loan Product. if provided, it overrides any property that is set in Loan Product. |
amortizationType required | integer Enum: 0 1 Relates to the the repayment schedule. Dictates how a declining balance loan is amortized over the loan schedule. Supported options are: 0=Equal Principal 1=Equal Installments Mandatory and only relevant if Selecting 0=Equal Principal ensures that the principal of the loan installment remains the same through the loan term (with the interest and installment size therefore declining). Selecting 1=Equal Installments ensures the principal is adjusted to ensure equal installment sizes. |
transactionProcessingStrategyId required | integer Enum: 1 5 6 An This relates to functionality that is also referred to elsewhere in documentation as Payment Application Logic. A number of out of the box approaches exist and custom approaches can be added if required. The key responsiblity of the strategy is to determines the order in which Interest, Principal, Penalties and Fees are paid off when repayments are made. Supported options are: 1=Standard (Penalties, Fees, Interest, Principal order) 5=Principal, Interest, Penalties, Fees Order 6=Interest, Principal, Penalties, Fees Order |
expectedDisbursementDate required | string The proposed disbursement date for the loan. Provided as a string and used together with |
submittedOnDate required | string The date on which the loan application was submitted for approval. Provided as a string and used together with |
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
submittedOnNote | string <= 500 characters A note provided along with |
repaymentsStartingFromDate | string Related to When provided, the loan schedule is generated using this date as the first repayment date due date. see also loan product setting Provided as a string and used together with |
graceOnPrincipalPayment | integer Related to If populated, indicates the number of installments you wish your grace period on principal payments to be. e.g 1 means that the first installment of the loan schedule will have no principal due. |
graceOnInterestPayment | integer Related to If populated, indicates the number of installments you wish your grace period on interest payments to be. e.g 1 means that the first installment of the loan schedule will have no interest due. |
graceOnInterestCharged | integer Related to If populated, indicates the number of installments you wish there to be no interest charged / calculated for. e.g 1 means that interest will only begin being calculated based on the principal outstanding from installment two. |
fundId | integer <integer64> The id of associated fund source. The original source of your funds (for example a grant). |
loanOfficerId | integer <integer64> The id of associated staff member that is a loan officer. |
loanPurposeId | integer <integer64> The id of a code value that relates to the loan purpose code (see Code and Code Values). |
linkAccountId | integer <integer64> The Linked savings account will then be required to be associated with the selected client and also any product restriction setup on loan product. |
Array of objects Ability to add multiple loan charges to the loan in one at time of creation. Applicable only when the loan product is configured to allow this. see | |
Array of objects Ability to add multiple loan collateral entries to the loan at time of creation. | |
accountNo | string <= 20 characters A unique account no. which identifies the account for this loan. If not provided on creation, it is automatically generated based on the Account Number Format setup. (see Account Number Format and Configuration) |
externalId | string <= 100 characters A place to put an external reference for this loan e.g. The ID another system uses for it. If provided, it must be unique. |
allowPartialPeriodInterestCalcualtion | boolean Default: false Only Applicable if |
createStandingInstructionAtDisbursement | boolean Default: false A boolean indicating if a standing instruction should be created on disbursement for the repayments. Applicable only when the loan product is configured to allow this. see |
interestChargedFromDate | string Deprecated The date from which interest is to be calculated from. Provided as a string and used together with When the loan is disbursed, there is an option on disbusrsement known as Global confiruation related to this field:
|
{- "loanType": "individual",
- "productId": 1,
- "clientId": 1,
- "groupId": 1,
- "calendarId": 1,
- "syncDisbursementWithMeeting": false,
- "principal": 1000.5,
- "loanTermFrequency": 1,
- "loanTermFrequencyType": 2,
- "numberOfRepayments": 1,
- "repaymentEvery": 1,
- "repaymentFrequencyType": 2,
- "repaymentFrequencyNthDayType": 1,
- "repaymentFrequencyDayOfWeekType": 1,
- "interestType": 0,
- "interestCalculationPeriodType": 1,
- "interestRatePerPeriod": 10.5,
- "interestRateFrequencyType": 2,
- "amortizationType": 1,
- "transactionProcessingStrategyId": 1,
- "expectedDisbursementDate": "16-11-2020",
- "submittedOnDate": "16-11-2020",
- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "submittedOnNote": "Loan application completed and submitted for approval by manager.",
- "repaymentsStartingFromDate": "16-11-2020",
- "graceOnPrincipalPayment": 1,
- "graceOnInterestPayment": 1,
- "graceOnInterestCharged": 0,
- "fundId": 1,
- "loanOfficerId": 1,
- "loanPurposeId": 1,
- "linkAccountId": 1,
- "charges": [
- {
- "chargeId": 1,
- "amount": 5.5,
- "chargeTimeType": 2,
- "chargeCalculationType": 2,
- "dueDate": "16-11-2020"
}
], - "collateral": [
- {
- "id": 1,
- "value": 5.5,
- "type": 1,
- "description": "A short description of collateral entry."
}
], - "accountNo": "0001-0001",
- "externalId": "ABC-0001",
- "allowPartialPeriodInterestCalcualtion": false,
- "createStandingInstructionAtDisbursement": false,
- "interestChargedFromDate": "16-11-2020"
}
{- "resourceId": 12
}
Search for loans by state
The response returned is dynamic and based upon loans metadata (See Loan Metadata ) and responseParameters
provided in the API request.
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided or if higher than 200 limit will be 200 |
stateName required | string Used to find loans that match this state name exactly. The state name should match one of the states defined in the state machine. |
officeId | integer Used in addition to |
loanOfficerId | integer Used in addition to |
required | Array of objects Specifies which fields the search should return. |
Array of objects Specifies how the search results should be sorted. |
{- "stateName": "SUBMITTED_AND_PENDING_APPROVAL",
- "officeId": 24,
- "loanOfficerId": 24,
- "responseParameters": [
- {
- "ordinal": 0,
- "name": "accountNo"
}
], - "sortByParameters": [
- {
- "ordinal": 0,
- "name": "accountNo",
- "direction": "ASC"
}
]
}
{- "totalFilteredRecords": 52,
- "pageItems": [
- { },
- { }
]
}
Find a Loan by Id
id required | integer <int64> Example: 1 The unique identifer of a Loan. |
staffInSelectedOfficeOnly | boolean Default: false loan officers of the loan office. |
transactionLimit | integer <int32> Example: transactionLimit=10 number of loan transactions to be returned |
associations | string Enum: "all" "repaymentSchedule" "futureSchedule" "originalSchedule" "transactions" "charges" "guarantors" "collateral" "notes" "linkedAccount" "multiDisburseDetails" "creditChecks" "loanHistoryOfficer" "prepayLoan" "standingInstructions" "meeting" "groupMemberAllocation" Example: associations=all associated entity to be return |
[- {
- "id": 4709,
- "accountNo": "0001-0000-0001",
- "externalId": "ID_LGEHJEZ",
- "status": { },
- "clientId": 4709,
- "clientAccountNo": "0001-0000-0001",
- "clientName": "John Doe",
- "clientOfficeId": 10,
- "loanProductId": 4709,
- "loanProductName": "Mobile Loan",
- "loanProductDescription": "Mobile loan for repeat customers with max limit of 10,000",
- "loanOfficerId": 1,
- "loanOfficerName": "Lockman, Aron",
- "loanType": {
- "id": 1,
- "code": "accountType.individual",
- "value": "individual"
}, - "currency": {
- "code": "KES",
- "name": "Kenyan Shilling",
- "nameCode": "currency.KES",
- "decimalPlaces": 2,
- "displaySymbol": "KSh",
- "displayLabel": "currency.KES"
}, - "principal": 5000,
- "approvedPrincipal": 5000,
- "proposedPrincipal": 5000,
- "termFrequency": 12,
- "termPeriodFrequencyType": {
- "id": 2,
- "code": "loanTermFrequency.periodFrequencyType.months",
- "value": "Months"
}, - "numberOfRepayments": 6,
- "repaymentEvery": 2,
- "repaymentFrequencyType": {
- "id": 2,
- "code": "loanTermFrequency.periodFrequencyType.months",
- "value": "Months"
}, - "interestRatePerPeriod": 2,
- "interestRateFrequencyType": {
- "id": 2,
- "code": "interestRateFrequency.periodFrequencyType.months",
- "value": "Months"
}, - "annualInterestRate": 24,
- "amortizationType": {
- "id": 1,
- "code": "amortizationType.equal.installments",
- "value": "Equal installments"
}, - "interestType": {
- "id": 0,
- "code": "interestType.declining.balance",
- "value": "Declining Balance"
}, - "interestCalculationPeriodType": {
- "id": 1,
- "code": "interestCalculationPeriodType.same.as.repayment.period",
- "value": "Same as repayment period"
}, - "allowPartialPeriodInterestCalcualtion": true,
- "transactionProcessingStrategyId": 1,
- "transactionProcessingStrategyName": "Penalties, Fees, Interest, Principal order",
- "expectedFirstRepaymentOnDate": [
- 2000,
- 1,
- 1
], - "timeline": {
- "submittedOnDate": [
- 2000,
- 1,
- 1
], - "submittedByUsername": "musoni",
- "submittedByFirstname": "musoni",
- "submittedByLastname": "musoni",
- "expectedDisbursementDate": [
- 2000,
- 1,
- 1
], - "expectedMaturityDate": [
- 2000,
- 1,
- 1
]
}, - "multiDisburseLoan": true,
- "canDefineInstallmentAmount": true,
- "canDisburse": true,
- "canUseForTopup": true,
- "isTopup": true,
- "stopApplyingPenalty": true,
- "closureLoanId": 132,
- "inArrears": true,
- "isNPA": true,
- "daysInMonthType": {
- "id": 1,
- "code": "DaysInMonthType.actual",
- "value": "Actual"
}, - "daysInYearType": {
- "id": 1,
- "code": "DaysInYearType.actual",
- "value": "Actual"
}, - "isInterestRecalculationEnabled": true,
- "recalculateInterestOnArrears": false,
- "createStandingInstructionAtDisbursement": true,
- "isVariableInstallmentsAllowed": true,
- "internalRateOfReturn": 2,
- "effectiveInterestRate": 2,
- "repayPrincipalEvery": 1,
- "repayInterestEvery": 1,
- "isInDuplum": true,
- "officeId": true,
- "officeName": "Head Office",
- "originChannel": "my-api-integration",
- "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
]
id required | integer <int64> Example: 1 The unique identifer of a Loan. |
command required | string Enum: "reject" "undoreject" "withdrawnByApplicant" "undowithdraw" "approve" "undoapprove" "disburse" "disburseToSavings" "undodisbursal" Example: command=approve The name of the command being performed on the loan. |
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
withdrawnOnDate required | string The date on which the loan application was withdrawn. Provided as a string and used together with |
note | string <= 1000 characters An optional comment or note in relation to this command. |
{- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "withdrawnOnDate": "16-11-2020",
- "note": "A short note in relation to this."
}
{- "resourceId": 12
}
Set of commands that creates or alters a loan transaction which in turn can alter the state of a loan, e.g. make repayment, loan write off, interest waiver, loan prepayment, recovery payment
id required | integer <int64> Example: 1 The unique identifer of a Loan. |
command required | string Enum: "repayment" "waiveinterest" "writeoff" "undowriteoff" "prepayLoan" "recoverypayment" "refundoverpayment" Example: command=repayment The name of the command being performed on the loan transaction. |
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
transactionDate required | string The date on which the repayment was made. Provided as a string and used together with |
transactionAmount required | number <decimal> The amount of money repaid. |
note | string <= 1000 characters An optional comment or note in relation to this command. |
paymentTypeId required | integer <integer64> The |
accountNumber | string <= 50 characters An account number related to payment |
checkNumber | string <= 50 characters The check number related to payment |
routingCode | string <= 50 characters The routing code related to payment |
receiptNumber required | string <= 50 characters The receipt number related to payment |
bankNumber | string <= 50 characters The bank number related to payment |
{- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "transactionDate": "14 May 2013",
- "transactionAmount": 5.5,
- "note": "A short note in relation to this.",
- "paymentTypeId": 1,
- "accountNumber": "ACC000001",
- "checkNumber": "CHK000001",
- "routingCode": "RO-ABC001",
- "receiptNumber": "RPT-ABC-001",
- "bankNumber": "CB001"
}
{- "officeId": 1,
- "clientId": 1,
- "loanId": 1,
- "resourceId": 12,
- "changes": { }
}
The creditbureaus api allows access to creditbureau data stored in Musoni through pre-integrated CRB providers.
List all Credit Bureaus
creditbureauIdentifier | string looks up a creditbureau by identifier, eg mcix/metropol etc. |
[- {
- "id": 4709,
- "identifier": "mcix",
- "name": "MCIX",
- "description": "MCIX Search API",
- "active": true,
- "configurations": {
- "id": 23,
- "fieldName": "SUBSCRIPTION_KEY",
- "fieldValue": 12345
}
}
]
Find Credit Bureau member by id
id required | integer <int64> Example: 1 The unique identifer of the selected resource. |
[- {
- "id": 4709,
- "identifier": "mcix",
- "name": "MCIX",
- "description": "MCIX Search API",
- "active": true,
- "configurations": {
- "id": 23,
- "fieldName": "SUBSCRIPTION_KEY",
- "fieldValue": 12345
}
}
]
List Credit reference requests for Credit bureau, without parameters will only return 200 results. This endpoint will return all requests, including failed requests
clientId | string Looks up credit reference requests for a specific clientId |
loanId | string Looks up credit reference requests for a specific loanId |
[- {
- "id": 4709,
- "identifier": "mcix",
- "responseBody": "{\"api_code_description\":\"Client NRC number is invalid. Please provide a valid short or long NRC number to perform the MCIX request\",\"has_error\":true}",
- "creditBureau": {
- "id": 4709,
- "identifier": "mcix",
- "name": "MCIX",
- "description": "MCIX Search API",
- "active": true
}, - "startDate": 1643189387000,
- "endDate": 1643189387000,
- "clientId": 167873,
- "clientDisplayName": "John Doe",
- "loanId": 167873,
- "loanAccountNumber": "001-0023-333333",
- "status": {
- "id": 400,
- "code": "creditReferenceRequestStatus.complete.with.errors",
- "value": "Complete With Errors"
}
}
]
Find Reference request by Id
bureauId required | integer <int64> Example: 1 The id of the bureau being used |
referenceRequestId required | integer <int64> Example: 1 The unique identifer of the selected resource. |
[- {
- "id": 4709,
- "identifier": "mcix",
- "responseBody": "{\"api_code_description\":\"Client NRC number is invalid. Please provide a valid short or long NRC number to perform the MCIX request\",\"has_error\":true}",
- "creditBureau": {
- "id": 4709,
- "identifier": "mcix",
- "name": "MCIX",
- "description": "MCIX Search API",
- "active": true
}, - "startDate": 1643189387000,
- "endDate": 1643189387000,
- "clientId": 167873,
- "clientDisplayName": "John Doe",
- "loanId": 167873,
- "loanAccountNumber": "001-0023-333333",
- "status": {
- "id": 400,
- "code": "creditReferenceRequestStatus.complete.with.errors",
- "value": "Complete With Errors"
}
}
]
List succesfully completed Credit reference responses for Credit bureau, without parameters will only return 200 results. This endpoint will not return any failed requests
clientId | string Looks up credit reference requests for a specific clientId |
loanId | string Looks up credit reference requests for a specific loanId |
[- {
- "id": 4709,
- "identifier": "mcix",
- "responseBody": "{\"api_code_description\":\"Client NRC number is invalid. Please provide a valid short or long NRC number to perform the MCIX request\",\"has_error\":true}",
- "creditBureau": {
- "id": 4709,
- "identifier": "mcix",
- "name": "MCIX",
- "description": "MCIX Search API",
- "active": true
}, - "startDate": 1643189387000,
- "endDate": 1643189387000,
- "clientId": 167873,
- "clientDisplayName": "John Doe",
- "loanId": 167873,
- "loanAccountNumber": "001-0023-333333",
- "status": {
- "id": 400,
- "code": "creditReferenceRequestStatus.complete.with.errors",
- "value": "Complete With Errors"
}
}
]
Savings accounts support features that allow the accounts to be used as typical savings accounts or as every day accounts like current/checking accounts:
Supports creation of new product offerings related to savings.
locale required | string The locale to use when interpreting number and date fields in the request. |
name required | string [ 1 .. 100 ] characters The full name of the product. |
shortName required | string = 4 characters The short name of the product. An abbreviated version of the name, used in reports or menus where space is limited. |
description required | string <= 500 characters A description to provide users with more information about the product. |
currencyCode required | string <= 3 characters A three character identifer of currency. The currency of the product. |
digitsAfterDecimal required | integer Relates to the the currency of the product. The number of digits after decimal to be supported on the currency. |
inMultiplesOf | integer Relates to the the currency of the product. Relevant for currencies where |
productGroupId | integer <integer64> The id of associated product group. |
nominalAnnualInterestRate required | decimal Simple way of describing the interest rate as a nominal APR to use for interest calculation e.g. 5% Per annum If not suitable for product it can be set to zero and |
Array of objects (SavingsInterestRateChartWithNoSlabs) | |
interestPostingPeriodType required | integer Enum: 4 5 6 7 Part of interest calculation settings. Indicates how often interest is to be posted to the account. Supported options are: 4=Monthly 5=Quarterly 6=Bi-Annualy 7=Annual |
interestCompoundingPeriodType required | integer Enum: 4 5 6 7 Part of interest calculation settings. Indicates how often interest is to be compounded. Supported options are: 1=Daily 4=Monthly 5=Quarterly 6=Bi-Annualy 7=Annual |
interestCalculationType required | integer Enum: 1 2 Part of interest calculation settings. There are two methods to calculate the interest on a savings account: 1=Daily Balance 2=Average Balance |
interestCalculationDaysInYearType required | integer Enum: 360 365 Part of interest calculation settings. Supported options are: 1=360 2=365 |
minBalanceForInterestCalculation | decimal Part of interest calculation settings. The mimimum balance of the savings account for interest calculation to be permitted. |
withHoldTax | boolean Default: false A boolean that indicates if withholding tax is configured. if The withholding tax is shown as an additional transaction on the account. |
taxGroupId | integer <integer64> The id of associated tax group. Required if |
lockinPeriodFrequency | integer If provided, used along with |
lockinPeriodFrequencyType | integer Enum: 0 1 2 3 If provided, used along with Supported options are: 0=Days 1=Weeks 2=Months 3=Years |
minRequiredOpeningBalance | decimal Related to account activation. Specifies the mimimum balance that savings accounts of this product must have upon activation. When the account is activated, it will auto create a deposit transaction for the |
enforceMinRequiredBalance | boolean Default: false Indicates that Used together with if enabled, then attempts to withdraw amounts that result in the account balance falling below |
minRequiredBalance | decimal Mandatory if Specifies the mimimum balance that savings accounts of this product must have whilst active. if |
allowOverdraft | boolean Default: false Indicates if an overdraft facility is be allowed on savings accounts of this product. |
overdraftLimit | decimal Mandatory if Specifies the maximum amount of overdraft that savings accounts of this product can have. |
nominalAnnualInterestRateOverdraft | decimal Interest rate as a nominal APR to use for interest calculation when account is in overdraft e.g. 20% Per annum |
minOverdraftForInterestCalculation | decimal Applicable if If provided, indicates how much into an overdraft before interest is calculated against the overdraft. |
isDormancyTrackingActive | boolean Default: false Indicates if accounts of this product should support movement to dormant status by end of day scheduled jobs. |
daysToInactive | number <integer> Mandatory if If provided, indicates how many days before the account should be considered inactive. |
daysToDormancy | number <integer> Mandatory if If provided, indicates how many days before the account should be considered dormant. |
daysToEscheat | number <integer> Mandatory if If provided, indicates how many days before the account should be considered escheat. |
calculateInterestDuringDormancy | boolean Default: false Mandatory if Indicates if interest should be calculated for accounts that are marked as dormant. |
stopInterestIfDormant | boolean Deprecated Default: false Duplicate of Applicable if Indicates if interest should be calculated for accounts that are marked as dormant. |
enableWithdrawalNotice | boolean Default: false Indicates if notice is required for withdrawals. |
noticePeriod | number <integer> Mandatory if If provided, indicates how many days notice required prior to withdrawal. |
validationPeriod | number <integer> Mandatory if If provided, indicates how many days ???. |
withdrawalFeeForTransfers | boolean Deprecated Default: false Indicates if fee applied for withdrawals. |
feeAmount | decimal Deprecated Used as an annual fee. |
monthDayFormat | string Deprecated Joda time compatile date format for day-month used by |
feeOnMonthDay | string Deprecated describe day and month of annual fee |
charges | Array of arrays The set of charge definitions applicable to this product. |
minimumNegativeBalance | decimal Must be less than zero. TBC |
maximumPositiveBalance | decimal Must be greater than zero. TBC |
accountingRule required | integer Enum: 1 2 Indicates what type of accounting is enabled for this product. Supported options are: 1=None 2=Cash Based Accounting |
savingsControlAccountId | integer <integer64> The |
savingsReferenceAccountId | integer <integer64> The |
transfersInSuspenseAccountId | integer <integer64> The |
interestOnSavingsAccountId | integer <integer64> The |
incomeFromFeeAccountId | integer <integer64> The |
incomeFromPenaltyAccountId | integer <integer64> The |
overdraftPortfolioControlId | integer <integer64> The |
incomeFromInterestId | integer <integer64> The |
writeOffAccountId | integer <integer64> The |
escheatLiabilityId | integer <integer64> The |
incomeFromSmallPositiveBalanceId | integer <integer64> The |
expenseFromSmallNegativeBalanceId | integer <integer64> The |
Array of objects | |
Array of objects | |
Array of objects |
{- "locale": "en",
- "name": "6 month Deposit",
- "shortName": "FT01",
- "description": "6 month fixed deposit with monthly compounding",
- "currencyCode": "KES",
- "digitsAfterDecimal": 0,
- "inMultiplesOf": 1,
- "productGroupId": 1,
- "nominalAnnualInterestRate": 12.5,
- "interestRateCharts": [
- {
- "locale": "en",
- "dateFormat": "yyyy-MM-dd",
- "name": "Deposit Account Chart",
- "description": "multi-band interest rate chart",
- "fromDate": "2022-01-01T00:00:00.000Z",
- "endDate": "2022-12-31T00:00:00.000Z",
- "annualInterestRate": 9.75
}
], - "interestPostingPeriodType": 4,
- "interestCompoundingPeriodType": 4,
- "interestCalculationType": 1,
- "interestCalculationDaysInYearType": 1,
- "minBalanceForInterestCalculation": 1,
- "withHoldTax": false,
- "taxGroupId": 1,
- "lockinPeriodFrequency": 2,
- "lockinPeriodFrequencyType": 2,
- "minRequiredOpeningBalance": 500.5,
- "enforceMinRequiredBalance": false,
- "minRequiredBalance": 500.5,
- "allowOverdraft": false,
- "overdraftLimit": 1000,
- "nominalAnnualInterestRateOverdraft": 20,
- "minOverdraftForInterestCalculation": 10,
- "isDormancyTrackingActive": false,
- "daysToInactive": 90,
- "daysToDormancy": 120,
- "daysToEscheat": 120,
- "calculateInterestDuringDormancy": false,
- "stopInterestIfDormant": false,
- "enableWithdrawalNotice": false,
- "noticePeriod": 1,
- "validationPeriod": 1,
- "withdrawalFeeForTransfers": false,
- "feeAmount": 10,
- "monthDayFormat": "dd-MM",
- "feeOnMonthDay": "01-04",
- "charges": [ ],
- "minimumNegativeBalance": -3.5,
- "maximumPositiveBalance": 2.2,
- "accountingRule": 2,
- "savingsControlAccountId": 0,
- "savingsReferenceAccountId": 0,
- "transfersInSuspenseAccountId": 0,
- "interestOnSavingsAccountId": 0,
- "incomeFromFeeAccountId": 0,
- "incomeFromPenaltyAccountId": 0,
- "overdraftPortfolioControlId": 0,
- "incomeFromInterestId": 0,
- "writeOffAccountId": 0,
- "escheatLiabilityId": 0,
- "incomeFromSmallPositiveBalanceId": 0,
- "expenseFromSmallNegativeBalanceId": 0,
- "paymentChannelToFundSourceMappings": [
- {
- "paymentTypeId": 0,
- "fundSourceAccountId": 0
}
], - "feeToIncomeAccountMappings": [
- {
- "chargeId": 0,
- "incomeAccountId": 0
}
], - "penaltyToIncomeAccountMappings": [
- {
- "chargeId": 0,
- "incomeAccountId": 0
}
]
}
{- "resourceId": 12
}
Activates closed savings product
id required | integer <int64> Example: 1 The unique identifer of a Savings Product. |
command required | string Example: command=activate The activate command. |
null
{- "resourceId": 12,
- "changes": {
- "status": {
- "id": 300,
- "code": "savingsProductStatus.active",
- "value": "Active",
- "active": true,
- "closed": false
}
}
}
Close an active savings product
id required | integer <int64> Example: 1 The unique identifer of a Savings Product. |
command required | string Example: command=close The close command. |
null
{- "resourceId": 12,
- "changes": {
- "status": {
- "id": 600,
- "code": "savingsProductStatus.closed",
- "value": "Closed",
- "active": false,
- "closed": true
}
}
}
Used to create a new Savings Account
Savings Accounts can be associated with a client
or group
but not both. The model is the same for client and group except for the clientId
and groupId
fields.
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
clientId required | integer <integer64> The |
productId required | integer <integer64> The |
submittedOnDate required | string <date> The date that the account application was submited. |
fieldOfficerId | integer <integer64> The id of associated staff member that is a field officer. |
externalId | string <= 100 characters A place to put an external reference for this account e.g. The ID another system uses for it. If provided, it must be unique. |
nominalAnnualInterestRate | integer <number> |
interestCompoundingPeriodType | integer |
interestPostingPeriodType | integer |
interestCalculationType | integer |
interestCalculationDaysInYearType | integer <number> |
minRequiredOpeningBalance | number <decimal> |
lockinPeriodFrequency | integer |
lockinPeriodFrequencyType | integer |
charges | Array of arrays |
{- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "clientId": 1,
- "productId": 1,
- "submittedOnDate": "2022-12-01T00:00:00.000Z",
- "fieldOfficerId": 1,
- "externalId": "ABC-0001",
- "nominalAnnualInterestRate": 2,
- "interestCompoundingPeriodType": 1,
- "interestPostingPeriodType": 4,
- "interestCalculationType": 1,
- "interestCalculationDaysInYearType": 360,
- "minRequiredOpeningBalance": 1000,
- "lockinPeriodFrequency": 2,
- "lockinPeriodFrequencyType": 0,
- "charges": [
- {
- "chargeId": "13",
- "amount": "1"
}
]
}
{- "resourceId": 12
}
List Savings Accounts
See The Data Filter API for better approach for search/filter.
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
search | string Example: search=John Doe 'Searches (matching around) across:
|
officeId | integer The id of an office. Used to restrict to set of savings associated with the office. |
externalId | string Example: externalId=S00001 if provided only savings with this exact externalId will be returned |
staffId | integer id of a staff/savingsofficer, if provided will only return the savings linked to this staff id |
groupId | integer id of a group the savings belongs to, if provided will only return the savings linked to this group id |
underHierarchy | string Example: underHierarchy=.2.3 if provided only savings that exist under the hierarchy provided will be return (office + child offices) |
orderBy | string Enum: "id" "submittedon_date" "office_id" "account_no" The database field name that you wish to order the list of savings by. |
sortOrder | string Enum: "ASC" "DESC" Used with |
skipRowCount | boolean Default: false Example: skipRowCount=false if true, does not return rowcount, improving search speed. |
modifiedSinceTimestamp | integer Examples: Should be passed as a UNIX Timestamp. When provided only savings accounts that have been created or updated since the provided timestamp are returned. Savings accounts will be marked as modified whenever there is any modification to the savings account, its transactions, charges etc. This parameter can be used in integrations to fetch changed data since a last fetch, timestamps will be treated as UTC and returned as UTC. |
sqlSearch | string Deprecated Deprecated. Use other parameters such as A valid sql fragment that will work with backend query for this api. |
[- {
- "id": 4709,
- "accountNo": "0001-0000-0001",
- "depositType": {
- "id": 100,
- "code": "depositAccountType.savingsDeposit",
- "value": "Savings"
}, - "externalId": "ID_LGEHJEZ",
- "clientId": 4709,
- "clientName": "John Doe",
- "savingsProductId": 4709,
- "savingsProductName": "Mobile Loan",
- "fieldOfficerId": 1,
- "fieldOfficerName": "Lockman, Aron",
- "status": {
- "id": 100,
- "code": "savingsAccountStatusType.submitted.and.pending.approval",
- "value": "Submitted and pending approval",
- "submittedAndPendingApproval": true,
- "approved": true,
- "rejected": true,
- "withdrawnByApplicant": true,
- "active": true,
- "closed": true,
- "prematureClosed": true,
- "transferInProgress": true,
- "transferOnHold": true,
- "matured": true
}, - "subStatus": {
- "id": 0,
- "code": "SavingsAccountSubStatusEnum.none",
- "value": "Submitted and pending approval",
- "none": true,
- "inactive": false,
- "dormant": false,
- "escheat": false,
- "writeoff": false
}, - "timeline": {
- "submittedOnDate": [
- 2000,
- 1,
- 1
], - "submittedByUsername": "musoni",
- "submittedByFirstname": "musoni",
- "submittedByLastname": "musoni",
- "approvedOnDate": [
- 2000,
- 1,
- 1
], - "approvedByUsername": "musoni",
- "approvedByFirstname": "musoni",
- "approvedByLastname": "musoni",
- "activatedOnDate": [
- 2000,
- 1,
- 1
], - "activatedByUsername": "musoni",
- "activatedByFirstname": "musoni",
- "activatedByLastname": "musoni",
- "closedOnDate": [
- 2000,
- 1,
- 1
], - "closedByUsername": "musoni",
- "closedByFirstname": "musoni",
- "closedByLastname": "musoni",
- "expectedMaturityDate": [
- 2000,
- 1,
- 1
]
}, - "currency": {
- "code": "KES",
- "name": "Kenyan Shilling",
- "nameCode": "currency.KES",
- "decimalPlaces": 2,
- "displaySymbol": "KSh",
- "displayLabel": "currency.KES"
}, - "nominalAnnualInterestRate": 15,
- "interestCompoundingPeriodType": { },
- "interestPostingPeriodType": {
- "id": 4,
- "code": "savingsPostingInterestPeriodType.monthly",
- "value": "monthly"
}, - "interestCalculationType": {
- "id": 1,
- "code": "savingsInterestCalculationType.dailybalance",
- "value": "DailyBalance"
}, - "interestCalculationDaysInYearType": {
- "id": 365,
- "code": "savingsInterestCalculationDaysInYearType.days365",
- "value": "DailyBalance"
}, - "withdrawalFeeForTransfers": false,
- "allowOverdraft": false,
- "overdraftLimit": 100,
- "enforceMinRequiredBalance": false,
- "minBalanceForInterestCalculation": 100,
- "withHoldTax": false,
- "lastActivityDate": [
- 2000,
- 7,
- 30
], - "isDormancyTrackingActive": false,
- "summary": {
- "currency": {
- "code": "KES",
- "name": "Kenyan Shilling",
- "nameCode": "currency.KES",
- "decimalPlaces": 2,
- "displaySymbol": "KSh",
- "displayLabel": "currency.KES"
}, - "totalDeposits": 5000,
- "totalWithdrawals": 10448,
- "totalInterestEarned": 753,
- "totalInterestPosted": 753,
- "accountBalance": 0,
- "totalOverdraftInterestDerived": 0,
- "interestNotPosted": 0,
- "lastInterestCalculationDate": [
- 2000,
- 7,
- 30
]
}, - "transactions": {
- "id": "080246",
- "transactionType": {
- "id": 24,
- "code": "savingsAccountTransactionType.smallPositiveBalance",
- "value": "Small Positive Balance",
- "deposit": false,
- "dividendPayout": false,
- "withdrawal": false,
- "interestPosting": false,
- "feeDeduction": false,
- "initiateTransfer": false,
- "approveTransfer": false,
- "withdrawTransfer": false,
- "rejectTransfer": false,
- "overdraftInterest": false,
- "writtenoff": false,
- "overdraftFee": true,
- "guarantorInterestDeposit": false,
- "withholdTax": false,
- "escheat": false,
- "reverseEscheat": false,
- "quarterlyFee": false,
- "writtenOffNegativeBalance": false,
- "closedByPositiveBalance": true
}
}, - "savingsOfficerAssignmentHistory": {
- "firstName": "Jhon",
- "lastName": "Doe",
- "startDate": [
- 2000,
- 7,
- 30
], - "id": 322
}, - "calculateInterestDuringDormancy": false,
- "maximumWithdrawableAmount": 100,
- "officeId": 1,
- "officeName": "Head Office",
- "originChannel": "my-api-integration",
- "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
]
Find a savings account by Id
accountId required | integer <int64> Example: 1 The unique identifer of a Savings Account. |
staffInSelectedOfficeOnly | boolean Default: false loan officers of the office where the savingsaccount is registered. |
chargeStatus | string Default: "all" Enum: "all" "active" "inactive" Example: chargeStatus=all filter savings to be return by account status |
associations | string Enum: "all" "withdrawalNotices" "charges" "linkedAccounts" "transactions" "standingInstructions" "loanhistoryofficer" Example: associations=all associated entity to be return |
[- {
- "id": 4709,
- "accountNo": "0001-0000-0001",
- "depositType": {
- "id": 100,
- "code": "depositAccountType.savingsDeposit",
- "value": "Savings"
}, - "externalId": "ID_LGEHJEZ",
- "clientId": 4709,
- "clientName": "John Doe",
- "savingsProductId": 4709,
- "savingsProductName": "Mobile Loan",
- "fieldOfficerId": 1,
- "fieldOfficerName": "Lockman, Aron",
- "status": {
- "id": 100,
- "code": "savingsAccountStatusType.submitted.and.pending.approval",
- "value": "Submitted and pending approval",
- "submittedAndPendingApproval": true,
- "approved": true,
- "rejected": true,
- "withdrawnByApplicant": true,
- "active": true,
- "closed": true,
- "prematureClosed": true,
- "transferInProgress": true,
- "transferOnHold": true,
- "matured": true
}, - "subStatus": {
- "id": 0,
- "code": "SavingsAccountSubStatusEnum.none",
- "value": "Submitted and pending approval",
- "none": true,
- "inactive": false,
- "dormant": false,
- "escheat": false,
- "writeoff": false
}, - "timeline": {
- "submittedOnDate": [
- 2000,
- 1,
- 1
], - "submittedByUsername": "musoni",
- "submittedByFirstname": "musoni",
- "submittedByLastname": "musoni",
- "approvedOnDate": [
- 2000,
- 1,
- 1
], - "approvedByUsername": "musoni",
- "approvedByFirstname": "musoni",
- "approvedByLastname": "musoni",
- "activatedOnDate": [
- 2000,
- 1,
- 1
], - "activatedByUsername": "musoni",
- "activatedByFirstname": "musoni",
- "activatedByLastname": "musoni",
- "closedOnDate": [
- 2000,
- 1,
- 1
], - "closedByUsername": "musoni",
- "closedByFirstname": "musoni",
- "closedByLastname": "musoni",
- "expectedMaturityDate": [
- 2000,
- 1,
- 1
]
}, - "currency": {
- "code": "KES",
- "name": "Kenyan Shilling",
- "nameCode": "currency.KES",
- "decimalPlaces": 2,
- "displaySymbol": "KSh",
- "displayLabel": "currency.KES"
}, - "nominalAnnualInterestRate": 15,
- "interestCompoundingPeriodType": { },
- "interestPostingPeriodType": {
- "id": 4,
- "code": "savingsPostingInterestPeriodType.monthly",
- "value": "monthly"
}, - "interestCalculationType": {
- "id": 1,
- "code": "savingsInterestCalculationType.dailybalance",
- "value": "DailyBalance"
}, - "interestCalculationDaysInYearType": {
- "id": 365,
- "code": "savingsInterestCalculationDaysInYearType.days365",
- "value": "DailyBalance"
}, - "withdrawalFeeForTransfers": false,
- "allowOverdraft": false,
- "overdraftLimit": 100,
- "enforceMinRequiredBalance": false,
- "minBalanceForInterestCalculation": 100,
- "withHoldTax": false,
- "lastActivityDate": [
- 2000,
- 7,
- 30
], - "isDormancyTrackingActive": false,
- "summary": {
- "currency": {
- "code": "KES",
- "name": "Kenyan Shilling",
- "nameCode": "currency.KES",
- "decimalPlaces": 2,
- "displaySymbol": "KSh",
- "displayLabel": "currency.KES"
}, - "totalDeposits": 5000,
- "totalWithdrawals": 10448,
- "totalInterestEarned": 753,
- "totalInterestPosted": 753,
- "accountBalance": 0,
- "totalOverdraftInterestDerived": 0,
- "interestNotPosted": 0,
- "lastInterestCalculationDate": [
- 2000,
- 7,
- 30
]
}, - "transactions": {
- "id": "080246",
- "transactionType": {
- "id": 24,
- "code": "savingsAccountTransactionType.smallPositiveBalance",
- "value": "Small Positive Balance",
- "deposit": false,
- "dividendPayout": false,
- "withdrawal": false,
- "interestPosting": false,
- "feeDeduction": false,
- "initiateTransfer": false,
- "approveTransfer": false,
- "withdrawTransfer": false,
- "rejectTransfer": false,
- "overdraftInterest": false,
- "writtenoff": false,
- "overdraftFee": true,
- "guarantorInterestDeposit": false,
- "withholdTax": false,
- "escheat": false,
- "reverseEscheat": false,
- "quarterlyFee": false,
- "writtenOffNegativeBalance": false,
- "closedByPositiveBalance": true
}
}, - "savingsOfficerAssignmentHistory": {
- "firstName": "Jhon",
- "lastName": "Doe",
- "startDate": [
- 2000,
- 7,
- 30
], - "id": 322
}, - "calculateInterestDuringDormancy": false,
- "maximumWithdrawableAmount": 100,
- "officeId": 1,
- "officeName": "Head Office",
- "originChannel": "my-api-integration",
- "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
]
Used to enable or disable deposit lock on a savings account
accountId required | integer <int64> Example: 1 The unique identifer of a Savings Account. |
depositLock | boolean Enable (true) or disable (false) deposit lock setting |
{- "depositLock": true
}
{- "resourceId": 12
}
Used to enable or disable withdrawal lock on a savings account
accountId required | integer <int64> Example: 1 The unique identifer of a Savings Account. |
depositLock | boolean Enable (true) or disable (false) withdrawal lock setting |
{- "depositLock": false
}
{- "resourceId": 12
}
List all Savings account Locks by savings account id
accountId required | integer <int64> Example: 1 The unique identifer of a Savings Account. |
[- {
- "id": 1,
- "onHoldAmount": 200,
- "startDate": [
- "2022-01-20T00:00:00.000Z"
], - "endDate": [
- "2024-01-20T00:00:00.000Z"
], - "release": false,
- "note": "A short note in relation to this.",
- "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
]
Used to add a new lock to the savings account.
accountId required | integer <int64> Example: 1 The unique identifer of a Savings Account. |
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
note | string <= 1000 characters An optional comment or note in relation to this command. |
onHoldAmount | decimal Amount to hold on the savings account to prevent withdrawal |
startDate | string <date> The date the lock on the savings account is effective from (inclusive) |
endDate | string <date> The date when the lock on the savings account will be released optional (inclusive) |
{- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "note": "A short note in relation to this.",
- "onHoldAmount": 200,
- "startDate": "2022-01-20T00:00:00.000Z",
- "endDate": "2024-01-20T00:00:00.000Z"
}
{- "resourceId": 12
}
Used to get a Savings Account Lock
accountId required | integer <int64> Example: 1 The unique identifer of a Savings Account. |
id required | integer <int64> Example: 1 The unique identifer of a lock. |
{ }
Used to update existing lock
accountId required | integer <int64> Example: 1 The unique identifer of a Savings Account. |
id required | integer <int64> Example: 1 The unique identifer of a lock. |
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
onHoldAmount | decimal Amount to hold on the savings account to prevent withdrawal |
startDate | string <date> The date the lock on the savings account is effective from (inclusive) |
endDate | string <date> The date when the lock on the savings account will be released optional (inclusive) |
{- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "onHoldAmount": 200,
- "startDate": "2022-01-20T00:00:00.000Z",
- "endDate": "2024-01-20T00:00:00.000Z"
}
{- "resourceId": 12
}
Used to release lock on a savings account
accountId required | integer <int64> Example: 1 The unique identifer of a Savings Account. |
id required | integer <int64> Example: 1 The unique identifer of a lock. |
{- "resourceId": 12
}
Used to delete a lock on a savings account.
accountId required | integer <int64> Example: 1 The unique identifer of a Savings Account. |
id required | integer <int64> Example: 1 The unique identifer of a lock. |
{- "resourceId": 12
}
Fixed Term Deposit are specialised savings accounts and support the following features:
The supported schema for creating a new fixed term deposit product.
locale required | string The locale to use when interpreting number and date fields in the request. |
name required | string [ 1 .. 100 ] characters The full name of the product. |
shortName required | string = 4 characters The short name of the product. An abbreviated version of the name, used in reports or menus where space is limited. |
description required | string <= 500 characters A description to provide users with more information about the product. |
currencyCode required | string <= 3 characters Relates to the the currency of the product. A three character identifer of currency this product uses. |
digitsAfterDecimal required | integer Relates to the the currency of the product. The number of digits after decimal to be supported on the currency. |
inMultiplesOf | integer Relates to the the currency of the product. Relevant for currencies where digitsAfterDecimal is zero. This will round the monetary amount to the nearest multiple. |
productGroupId | integer <integer64> The id of associated product group. |
minDepositAmount | number <decimal> The minimum size of any deposit under this product. See also |
maxDepositAmount | number <decimal> The maximum size of any deposit under this product. See also |
depositAmount required | number <decimal> Is the default amount that can be shown to users by when creating a new account using this product. Its value must be within the range defined by |
minDepositTerm required | number <integer> Used together with |
minDepositTermTypeId | integer Enum: 0 1 2 3 The type of term period being described. e.g 6 months Supported options are: 0=Days 1=Weeks 2=Months 3=Years |
maxDepositTerm | number <integer> Used together with |
maxDepositTermTypeId | integer Enum: 0 1 2 3 The type of term period being described. e.g 6 months Supported options are: 0=Days 1=Weeks 2=Months 3=Years |
inMultiplesOfDepositTerm | number <integer> Used together with |
inMultiplesOfDepositTermTypeId | integer Enum: 0 1 2 3 The type of term period being described. e.g 2 months Supported options are: 0=Days 1=Weeks 2=Months 3=Years |
interestPostingPeriodType required | integer Enum: 4 5 6 7 Part of interest calculation settings. Indicates how often interest is to be posted to the account. Supported options are: 4=Monthly 5=Quarterly 6=Bi-Annualy 7=Annual |
interestCompoundingPeriodType required | integer Enum: 4 5 6 7 Part of interest calculation settings. Indicates how often interest is to be compounded. Supported options are: 1=Daily 4=Monthly 5=Quarterly 6=Bi-Annualy 7=Annual |
interestCalculationType required | integer Enum: 1 2 Part of interest calculation settings. There are two methods to calculate the interest on a savings account: 1=Daily Balance 2=Average Balance |
interestCalculationDaysInYearType required | integer Enum: 360 365 Part of interest calculation settings. Supported options are: 1=360 2=365 |
lockinPeriodFrequency | integer If provided, used along with |
lockinPeriodFrequencyType | integer Enum: 0 1 2 3 If provided, used along with Supported options are: 0=Days 1=Weeks 2=Months 3=Years |
Array of objects (SavingsInterestRateChart) | |
withHoldTax | boolean Default: false A boolean that indicates if withholding tax is configured. if The withholding tax is shown as an additional transaction on the account. |
taxGroupId | integer <integer64> The id of associated tax group. Required if |
autoRenewOnClosure | boolean Default: false A boolean that indicates if accounts of this product should be renewed upon reaching maturity. Fixed Term Deposit accounts are moved are checked by end of day process that is scheduled to run every night. |
preClosurePenalApplicable | boolean Default: false A boolean that indicates if penalty is to be applied on pre-closure of accounts of this product. |
preClosurePenalInterest | decimal Deprecated The interest rate to use in case of pre-closure e.g. 5% Per annum |
preClosurePenalInterestOnTypeId | integer Deprecated Enum: 1 2 Indicates how the Supported options are: 1=Whole Term 2=Until Premature Withdrawal |
charges | Array of arrays The set of charge definitions applicable to this product. |
accountingRule required | integer Enum: 1 2 Indicates what type of accounting is enabled for this product. Supported options are: 1=None 2=Cash Based Accounting |
savingsControlAccountId | integer <integer64> The |
savingsReferenceAccountId | integer <integer64> The |
transfersInSuspenseAccountId | integer <integer64> The |
interestOnSavingsAccountId | integer <integer64> The |
incomeFromFeeAccountId | integer <integer64> The |
incomeFromPenaltyAccountId | integer <integer64> The |
Array of objects | |
Array of objects | |
Array of objects |
{- "locale": "en",
- "name": "6 month Deposit",
- "shortName": "FT01",
- "description": "6 month fixed deposit with monthly compounding",
- "currencyCode": "KES",
- "digitsAfterDecimal": 0,
- "inMultiplesOf": 1,
- "productGroupId": 1,
- "minDepositAmount": 1000,
- "maxDepositAmount": 5000,
- "depositAmount": 1000,
- "minDepositTerm": 6,
- "minDepositTermTypeId": 2,
- "maxDepositTerm": 12,
- "maxDepositTermTypeId": 2,
- "inMultiplesOfDepositTerm": 2,
- "inMultiplesOfDepositTermTypeId": 2,
- "interestPostingPeriodType": 4,
- "interestCompoundingPeriodType": 4,
- "interestCalculationType": 1,
- "interestCalculationDaysInYearType": 1,
- "lockinPeriodFrequency": 2,
- "lockinPeriodFrequencyType": 2,
- "charts": [
- {
- "locale": "en",
- "dateFormat": "yyyy-MM-dd",
- "name": "Deposit Account Chart",
- "description": "multi-band interest rate chart",
- "fromDate": "2022-12-01T00:00:00.000Z",
- "endDate": "2022-12-31T00:00:00.000Z",
- "chartSlabs": [
- {
- "locale": "en",
- "description": "from 6+ months",
- "periodType": 2,
- "fromPeriod": 1,
- "toPeriod": 6,
- "amountRangeFrom": 1000,
- "amountRangeTo": 5000,
- "annualInterestRate": 8.5
}
], - "productId": 1,
- "isPrimaryGroupingByAmount": false
}
], - "withHoldTax": false,
- "taxGroupId": 1,
- "autoRenewOnClosure": false,
- "preClosurePenalApplicable": false,
- "preClosurePenalInterest": 5,
- "preClosurePenalInterestOnTypeId": 2,
- "charges": [ ],
- "accountingRule": 2,
- "savingsControlAccountId": 0,
- "savingsReferenceAccountId": 0,
- "transfersInSuspenseAccountId": 0,
- "interestOnSavingsAccountId": 0,
- "incomeFromFeeAccountId": 0,
- "incomeFromPenaltyAccountId": 0,
- "paymentChannelToFundSourceMappings": [
- {
- "paymentTypeId": 0,
- "fundSourceAccountId": 0
}
], - "feeToIncomeAccountMappings": [
- {
- "chargeId": 0,
- "incomeAccountId": 0
}
], - "penaltyToIncomeAccountMappings": [
- {
- "chargeId": 0,
- "incomeAccountId": 0
}
]
}
{- "resourceId": 12
}
Find a fixed term deposit product by id
id required | integer <int64> Example: 1 The unique identifer of a fixed term deposit product. |
[- {
- "id": 4709,
- "name": "6 month Deposit",
- "shortName": "FT01",
- "description": "6 month fixed deposit with monthly compounding",
- "status": "savingsProduct.active",
- "currency": {
- "code": "KES",
- "name": "Kenyan Shilling",
- "nameCode": "currency.KES",
- "decimalPlaces": 2,
- "displaySymbol": "KSh",
- "displayLabel": "currency.KES"
}, - "minDepositAmount": 1000,
- "maxDepositAmount": 5000,
- "depositAmount": 1000,
- "minDepositTerm": 6,
- "minDepositTermTypeId": 2,
- "maxDepositTerm": 12,
- "maxDepositTermTypeId": 2,
- "inMultiplesOfDepositTerm": 2,
- "inMultiplesOfDepositTermTypeId": 2,
- "interestPostingPeriodType": {
- "id": 4,
- "code": "savings.interest.period.savingsPostingInterestPeriodType.monthly",
- "value": "Monthly"
}, - "interestCompoundingPeriodType": {
- "id": 4,
- "code": "savings.interest.period.savingsCompoundingInterestPeriodType.monthly",
- "value": "Monthly"
}, - "interestCalculationType": {
- "id": 1,
- "code": "savingsInterestCalculationType.dailybalance",
- "value": "Monthly"
}, - "interestCalculationDaysInYearType": {
- "id": 365,
- "code": "savingsInterestCalculationDaysInYearType.days365",
- "value": "365 Days"
}, - "nominalAnnualInterestRate": 12.5,
- "interestRateCharts": [
- {
- "locale": "en",
- "dateFormat": "yyyy-MM-dd",
- "name": "Deposit Account Chart",
- "description": "multi-band interest rate chart",
- "fromDate": "2022-12-01T00:00:00.000Z",
- "endDate": "2022-12-31T00:00:00.000Z",
- "chartSlabs": [
- {
- "locale": "en",
- "description": "from 6+ months",
- "periodType": 2,
- "fromPeriod": 1,
- "toPeriod": 6,
- "amountRangeFrom": 1000,
- "amountRangeTo": 5000,
- "annualInterestRate": 8.5
}
], - "productId": 1,
- "isPrimaryGroupingByAmount": false
}
], - "activeChart": {
- "locale": "en",
- "dateFormat": "yyyy-MM-dd",
- "name": "Deposit Account Chart",
- "description": "multi-band interest rate chart",
- "fromDate": "2022-12-01T00:00:00.000Z",
- "endDate": "2022-12-31T00:00:00.000Z",
- "chartSlabs": [
- {
- "locale": "en",
- "description": "from 6+ months",
- "periodType": 2,
- "fromPeriod": 1,
- "toPeriod": 6,
- "amountRangeFrom": 1000,
- "amountRangeTo": 5000,
- "annualInterestRate": 8.5
}
], - "productId": 1,
- "isPrimaryGroupingByAmount": false
}, - "withHoldTax": false,
- "taxGroup": {
- "id": 1,
- "name": "10% WHT"
}, - "autoRenewOnClosure": false,
- "preClosurePenalApplicable": false,
- "preClosurePenalInterest": 5,
- "preClosurePenalInterestOnTypeId": 2
}
]
The supported schema for creating a new fixed term deposit account.
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
productId required | integer <integer64> The |
clientId required | integer <integer64> The |
groupId | integer <integer64> The |
fieldOfficerId | integer <integer64> The id of associated staff member that is a field officer. |
externalId | string <= 100 characters A place to put an external reference for this account e.g. The ID another system uses for it. If provided, it must be unique. |
submittedOnDate required | string <date> The date that the account application was submited. |
depositAmount required | number <decimal> Is the amount deposited when setting up the account. Its value must be within the range defined by |
depositPeriod required | number <integer> Used together with |
depositPeriodFrequencyId required | integer Enum: 0 1 2 3 The type of term period being described. e.g 6 months Supported options are: 0=Days 1=Weeks 2=Months 3=Years |
interestPostingPeriodType | integer Enum: 4 5 6 7 Part of interest calculation settings. Indicates how often interest is to be posted to the account. If provided it overrides the setting on the product, otherwise the account inherits from the product. Supported options are: 4=Monthly 5=Quarterly 6=Bi-Annualy 7=Annual |
interestCompoundingPeriodType | integer Enum: 4 5 6 7 Part of interest calculation settings. Indicates how often interest is to be compounded. If provided it overrides the setting on the product, otherwise the account inherits from the product. Supported options are: 1=Daily 4=Monthly 5=Quarterly 6=Bi-Annualy 7=Annual |
interestCalculationType | integer Enum: 1 2 Part of interest calculation settings. If provided it overrides the setting on the product, otherwise the account inherits from the product. There are two methods to calculate the interest on a savings account: 1=Daily Balance 2=Average Balance |
interestCalculationDaysInYearType | integer Enum: 360 365 Part of interest calculation settings. If provided it overrides the setting on the product, otherwise the account inherits from the product. Supported options are: 1=360 2=365 |
lockinPeriodFrequency | integer If provided, used along with If provided it overrides the setting on the product, otherwise the account inherits from the product. |
lockinPeriodFrequencyType | integer Enum: 0 1 2 3 If provided, used along with If provided it overrides the setting on the product, otherwise the account inherits from the product. Supported options are: 0=Days 1=Weeks 2=Months 3=Years |
chartId | integer The id of an existing interest rate chart associated with product. If omitted, then an applicable interest rate chart will be looked for on the associated product based on the |
autoRenewOnClosure | boolean Default: false A boolean that indicates if accounts of this product should be renewed upon reaching maturity. |
preClosurePenalApplicable | boolean Default: false A boolean that indicates if penalty is to be applied on pre-closure of accounts of this product. |
preClosurePenalInterest | decimal The interest rate to use in case of pre-closure e.g. 5% Per annum |
preClosurePenalInterestOnTypeId | integer Enum: 1 2 Indicates how the Supported options are: 1=Whole Term 2=Until Premature Withdrawal |
charges | Array of arrays The set of charge definitions applicable to this account. |
{- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "productId": 1,
- "clientId": 1,
- "groupId": 1,
- "fieldOfficerId": 1,
- "externalId": "ABC-0001",
- "submittedOnDate": "2022-12-01T00:00:00.000Z",
- "depositAmount": 1000,
- "depositPeriod": 6,
- "depositPeriodFrequencyId": 2,
- "interestPostingPeriodType": 4,
- "interestCompoundingPeriodType": 4,
- "interestCalculationType": 1,
- "interestCalculationDaysInYearType": 1,
- "lockinPeriodFrequency": 2,
- "lockinPeriodFrequencyType": 2,
- "chartId": 0,
- "autoRenewOnClosure": false,
- "preClosurePenalApplicable": false,
- "preClosurePenalInterest": 5,
- "preClosurePenalInterestOnTypeId": 2,
- "charges": [ ]
}
{- "resourceId": 12
}
Standing instructions (aka standing orders) refer to instructions an account holder ("the payer") gives to his or her financial institute to pay a set amount at regular intervals to another's ("the payee's") account.
At present the following scenarios support standing instructions:
List all Standing Instructions
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
orderBy | string The database field name that you wish to order the list of standing instructions by. It must also include the alias used in the generated query:
|
sortOrder | string Enum: "ASC" "DESC"
Used with This parameter is ignored unless |
transferType | integer Enum: 1 2 3 4 5 Examples: Used to restrict the search to standing instructions that match the Options include:
|
clientId | integer The id of a client. Used to restrict to set of standing instructions where the from account is associated with the client. |
clientName | integer The name of a client. Used to restrict to set of standing instructions where the from account has a client that has a name that exactly matches. |
groupId | integer The id of a group. Used to restrict to set of standing instructions where the from account is associated with the group. |
groupName | integer The name of a group. Used to restrict to set of standing instructions where the from account has a group that has a name that exactly matches. |
fromAccountType | integer Enum: 1 2 6 Examples: The account type of the account refered to by This parameter is required if Used to restrict the search to standing instructions that match the Options include:
|
fromAccountId | integer The id of an account. Used to restrict to set of standing instructions where the from account matches. This parameter is required if |
{- "totalFilteredRecords": 52,
- "pageItems": [
- { },
- { }
]
}
Ability to create new instruction for transfer of monetary funds from one account to another.
name required | string [ 1 .. 250 ] characters A unique name assigned to identify the standing instruction. |
transferType required | integer Enum: 1 2 3 4 5 The id of a transfer type enumeration. Options include:
|
priority required | integer Enum: 1 2 3 4 The id of a priority enumeration. Options include:
|
status required | integer Enum: 1 2 3 The id of a status enumeration. Options include:
|
instructionType required | integer Enum: 1 2 The id of a instruction type enumeration. Options include:
|
amount | number <decimal> The amount of the standing instruction. Mandatory if |
validFrom required | string <date> The date the standing instruction is in effect from. |
validTo | string <date> The date the standing instruction is no longer in effect. |
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
recurrenceType required | integer Enum: 1 2 Options include:
|
recurrenceFrequency | number <integer32> Enum: 0 1 2 3 Used with Mandatory if Example Values:
|
recurrenceInterval | number <integer> Used in combination with Mandatory if |
recurrenceOnMonthDay | Array of arrays If Used in combination with |
fromOfficeId | integer <integer64> An |
toOfficeId | integer <integer64> An |
fromGroupId | integer <integer64> An |
toGroupId | integer <integer64> An |
fromClientId | integer <integer64> An |
toClientId | integer <integer64> An |
fromAccountType | integer Enum: 1 2 6 An integer representing the account type from which the transfer is made. Account types:
|
fromAccountId | integer <integer64> An |
toAccountType | integer Enum: 1 2 6 An integer representing the account type from which the transfer is made. Account types:
|
toAccountId | integer <integer64> An |
{- "name": "string",
- "transferType": 2,
- "priority": 2,
- "status": 1,
- "instructionType": 2,
- "amount": 5000,
- "validFrom": "2020-01-15T00:00:00.000Z",
- "validTo": "2020-01-15T00:00:00.000Z",
- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "recurrenceType": 2,
- "recurrenceFrequency": 2,
- "recurrenceInterval": 12,
- "recurrenceOnMonthDay": "02 April",
- "fromOfficeId": 2,
- "toOfficeId": 2,
- "fromGroupId": 2,
- "toGroupId": 2,
- "fromClientId": 2,
- "toClientId": 2,
- "fromAccountType": 2,
- "fromAccountId": 2,
- "toAccountType": 2,
- "toAccountId": 2
}
{- "resourceId": 12
}
Find standing instruction by id
id required | integer <int64> Example: 1 The unique identifer of a standing instruction. |
{- "id": 4709,
- "accountDetailId": 4709,
- "name": "Regular Repayment",
- "fromOffice": {
- "id": 2,
- "name": "Local Branch-A"
}, - "fromClient": {
- "id": 2,
- "displayName": "John A. Smith",
- "officeId": 2,
- "officeName": "Local Branch-A"
}, - "fromGroup": {
- "id": 2,
- "displayName": "ABC-Group",
- "officeId": 2,
- "officeName": "Local Branch-A"
}, - "fromAccountType": {
- "id": 2,
- "code": "string",
- "value": "string"
}, - "fromAccount": {
- "id": 2,
- "accountNo": "ABC-Group",
- "productId": 2,
- "productName": "Local Branch-A"
}, - "toOffice": {
- "id": 2,
- "name": "Local Branch-A"
}, - "toClient": {
- "id": 2,
- "displayName": "John A. Smith",
- "officeId": 2,
- "officeName": "Local Branch-A"
}, - "toGroup": {
- "id": 2,
- "displayName": "ABC-Group",
- "officeId": 2,
- "officeName": "Local Branch-A"
}, - "toAccountType": {
- "id": 2,
- "code": "string",
- "value": "string"
}, - "toAccount": {
- "id": 2,
- "accountNo": "ABC-Group",
- "productId": 2,
- "productName": "Local Branch-A"
}, - "transferType": {
- "id": 2,
- "code": "string",
- "value": "string"
}, - "priority": {
- "id": 2,
- "code": "string",
- "value": "string"
}, - "instructionType": {
- "id": 2,
- "code": "string",
- "value": "string"
}, - "status": {
- "id": 1,
- "code": "string",
- "value": "string"
}, - "amount": 5000,
- "validFrom": [
- 2022,
- 5,
- 1
], - "validTo": [
- 2023,
- 5,
- 1
], - "recurrenceType": {
- "id": 2,
- "code": "string",
- "value": "string"
}, - "recurrenceFrequency": {
- "id": 2,
- "code": "recurrenceperiodFrequencyType.months",
- "value": "Months"
}, - "recurrenceInterval": 12,
- "recurrenceOnMonthDay": [
- 1,
- 1
]
}
Update or Delete existing standing instruction.
Use command=delete
to mark the standing instruction as deleted. This is a soft delete and only changes the status to deleted (also updates name to indicate its deleted.) No request body is required when marking the standing instruction as deleted.
Use command=update
to update the standing instruction. An update expects a request body and at least one parameter that should be updated.
id required | integer <int64> Example: 1 The unique identifer of a standing instruction. |
command required | string Enum: "update" "delete" Example: command=update The name of the command being performed. |
Update or delete exisiting standing instruction.
name | string [ 1 .. 250 ] characters A unique name assigned to identify the standing instruction. |
transferType | integer Enum: 1 2 3 4 5 The id of a transfer type enumeration. Options include:
|
priority | integer Enum: 1 2 3 4 The id of a priority enumeration. Options include:
|
status | integer Enum: 1 2 3 The id of a status enumeration. Options include:
|
instructionType | integer Enum: 1 2 The id of a instruction type enumeration. Options include:
|
amount | number <decimal> The amount of the standing instruction. Mandatory if |
validFrom | string <date> The date the standing instruction is in effect from. |
validTo | string <date> The date the standing instruction is no longer in effect. |
locale | string The locale to use when interpreting number and date fields in the request. |
dateFormat | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
recurrenceType | integer Enum: 1 2 Options include:
|
recurrenceFrequency | number <integer32> Enum: 0 1 2 3 Used with Mandatory if Example Values:
|
recurrenceInterval | number <integer> Used in combination with Mandatory if |
recurrenceOnMonthDay | Array of arrays If Used in combination with |
fromOfficeId | integer <integer64> An |
toOfficeId | integer <integer64> An |
fromGroupId | integer <integer64> An |
toGroupId | integer <integer64> An |
fromClientId | integer <integer64> An |
toClientId | integer <integer64> An |
fromAccountType | integer Enum: 1 2 6 An integer representing the account type from which the transfer is made. Account types:
|
fromAccountId | integer <integer64> An |
toAccountType | integer Enum: 1 2 6 An integer representing the account type from which the transfer is made. Account types:
|
toAccountId | integer <integer64> An |
{- "name": "string",
- "transferType": 2,
- "priority": 2,
- "status": 1,
- "instructionType": 2,
- "amount": 5000,
- "validFrom": "2020-01-15T00:00:00.000Z",
- "validTo": "2020-01-15T00:00:00.000Z",
- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "recurrenceType": 2,
- "recurrenceFrequency": 2,
- "recurrenceInterval": 12,
- "recurrenceOnMonthDay": "02 April",
- "fromOfficeId": 2,
- "toOfficeId": 2,
- "fromGroupId": 2,
- "toGroupId": 2,
- "fromClientId": 2,
- "toClientId": 2,
- "fromAccountType": 2,
- "fromAccountId": 2,
- "toAccountType": 2,
- "toAccountId": 2
}
{- "resourceId": 1,
- "changes": { }
}
Offices are used to model an MFIs structure. A hierarchical representation of offices is supported. There will always be at least one office (which represents the MFI or an MFIs head office). All subsequent offices added must have a parent office.
List all Offices
includeAllOffices | boolean Default: false Example: includeAllOffices=false Allows the user to get back the full hierarchy of offices regardless of what office they are associated with in the organisation. |
orderBy | string Enum: "id" "parent_id" "hierarchy" "external_id" "name" "opening_date" The database field name that you wish to order the list of offices by. |
sortOrder | string Enum: "ASC" "DESC" Used with |
[- {
- "id": 4709,
- "name": "name",
- "nameDecorated": "name",
- "externalId": "name",
- "hierarchy": "name",
- "openingDate": [
- 2000,
- 1,
- 1
], - "parentId": 1,
- "parentName": "Head Office"
}
]
The supported schema for creating offices. name
, openingDate
, parentId
are required. locale
is required when dealing with numbers or dates dateFormat
is required when dealing with dates
name required | string The name of the office. |
externalId | string A place to put an external reference for this office e.g. The ID another system uses for it. If provided, it must be unique. |
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
openingDate required | string The opening date in a date format supported by Joda Time. |
parentId required | integer <int64> The |
{- "name": "name",
- "externalId": "ABC-0001",
- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "openingDate": "01 July 2007",
- "parentId": 1
}
{- "resourceId": 12
}
Find an Office by Id
id required | integer <int64> Example: 1 The unique identifer of an office. |
[- {
- "id": 4709,
- "name": "name",
- "nameDecorated": "name",
- "externalId": "name",
- "hierarchy": "name",
- "openingDate": [
- 2000,
- 1,
- 1
], - "parentId": 1,
- "parentName": "Head Office"
}
]
The supported schema for office updates. name
, externalId
, openingDate
and parentId
can be updated in isolation or together.
locale
is required when dealing with numbers or dates dateFormat
is required when dealing with dates
id required | integer <int64> Example: 1 The unique identifer of an office. |
Update exisitng office
name | string The name of the office. |
externalId | string A place to put an external reference for this office e.g. The ID another system uses for it. If provided, it must be unique. |
locale | string The locale to use when interpreting number and date fields in the request. |
dateFormat | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
openingDate | string The opening date in a date format supported by Joda Time. |
parentId | integer <int64> The |
{- "name": "name",
- "externalId": "ABC-0001",
- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "openingDate": "01 July 2007",
- "parentId": 1
}
{- "resourceId": 1,
- "changes": { }
}
This is a convenience api.
It can be useful when building maintenance user interface screens for client applications.
It returns fields with default values and dropdown list values.
id required | integer <int64> Example: 1 The unique identifer of an office. |
Allows you to model staff members. At present the key role of significance is whether this staff member is a loan officer or not.
List all Staff
officeId | integer The id of an office. Used to restrict to set of staff associated with the office. |
staffInOfficeHierarchy | boolean Default: false Example: staffInOfficeHierarchy=false if true, returns all active staff in office hierarchy that are above the provided |
loanOfficersOnly | boolean Default: false Example: loanOfficersOnly=false if true, restricts response to staff that are set as loan officers. |
status | string Default: "active" Enum: "active" "inactive" "all" Example: status=active if |
sqlSearch | string Deprecated Deprecated. Use other parameters or See The Data Filter API for better approach for search/filter. A valid sql fragment that will work with backend query for this api. If |
[- {
- "id": 4709,
- "officeId": 1,
- "officeName": "Head Office",
- "userId": 0,
- "firstname": "John",
- "lastname": "Doe",
- "displayname": "John Doe",
- "mobileNo": "+353 78 90987877",
- "externalId": "name",
- "isLoanOfficer": true,
- "isActive": true,
- "joiningDate": [
- 2000,
- 1,
- 1
]
}
]
The supported schema for creating staff. officeId
, firstName
, lastName
and joiningDate
are required.
locale
is required when dealing with numbers or dates dateFormat
is required when dealing with dates
officeId required | integer <int64> The id of the office this staff member is associated with. |
firstname required | string The first name of the staff member. |
lastname required | string The last name of the staff member. |
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
joiningDate required | string The joining date in a date format supported by Joda Time. |
mobileNo | string The mobile telephone number of staff memeber. |
externalId | string A place to put an external reference for this resource e.g. The ID another system uses for it. If provided, it must be unique. |
isLoanOfficer | boolean Indicates if this staff member is a loan officer or not. Defaults to false if omitted. |
isActive | boolean Default: true Indicates if this staff member active. Defaults to true if omitted. |
{- "officeId": 1,
- "firstname": "John",
- "lastname": "Doe",
- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "joiningDate": "01 July 2007",
- "mobileNo": "+353 78 90987877",
- "externalId": "STAFF-0001",
- "isLoanOfficer": true,
- "isActive": true
}
{- "resourceId": 12
}
Find staff member by id
[- {
- "id": 4709,
- "officeId": 1,
- "officeName": "Head Office",
- "userId": 0,
- "firstname": "John",
- "lastname": "Doe",
- "displayname": "John Doe",
- "mobileNo": "+353 78 90987877",
- "externalId": "name",
- "isLoanOfficer": true,
- "isActive": true,
- "joiningDate": [
- 2000,
- 1,
- 1
]
}
]
The supported schema for staff updates. officeId
, firstName
, lastName
, joiningDate
, externalId
, mobileNo
, isLoanOfficer
, isActive
can be updated in isolation or together.
locale
is required when dealing with numbers or dates dateFormat
is required when dealing with dates
id required | integer <int64> Example: 1 The unique identifer of a staff member. |
Update exisitng staff member
officeId | integer <int64> The id of the office this staff member is associated with. |
firstname | string The first name of the staff member. |
lastname | string The last name of the staff member. |
locale | string The locale to use when interpreting number and date fields in the request. |
dateFormat | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
joiningDate | string The joining date in a date format supported by Joda Time. |
mobileNo | string The mobile telephone number of staff memeber. |
externalId | string A place to put an external reference for this resource e.g. The ID another system uses for it. If provided, it must be unique. |
isLoanOfficer | boolean Indicates if this staff member is a loan officer or not. Defaults to false if omitted. |
isActive | boolean Default: true Indicates if this staff member active. Defaults to true if omitted. |
{- "officeId": 1,
- "firstname": "John",
- "lastname": "Doe",
- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "joiningDate": "01 July 2007",
- "mobileNo": "+353 78 90987877",
- "externalId": "STAFF-0001",
- "isLoanOfficer": true,
- "isActive": true
}
{- "resourceId": 1,
- "changes": { }
}
List paged response of tasks matching filter criteria.
The API is scoped by user permissions setup:
READ_TASK_ADMIN
permission is allowed to search tasks assigned / createdby other users so long as in its office hierarchy.READ_TASK
permission is allowed to search tasks either assigned or created by them so long as in office hierarchy.See The Data Filter API for better approach for search/filter.
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
clientId | integer <int32> >= 1 Default: null Restrict response to tasks with client id matching this value. |
groupId | integer <int32> >= 1 Default: null Restrict response to tasks with group id matching this value. |
modifiedSinceTimestamp | integer <int64> Examples: Should be passed as a UNIX Timestamp. When provided only tasks that have been created or updated since the provided timestamp are returned. Whenever a task is modified its last modified date and time in UTC is captured. This parameter can be used in integrations to fetch changed data since a last fetch, timestamps will be treated as UTC and returned as UTC. |
statusId | integer <int32> >= 1 Default: null Restrict response to tasks with status matching this value. |
priorityId | integer <int32> >= 1 Default: null Restrict response to tasks with priority matching this value. |
completed | boolean Default: null Restrict response to tasks whose |
taskAssignedToUserId | integer <int32> >= 1 Default: null Restrict response to tasks assigned to users matching this value. |
taskCreatedByUserId | integer <int32> >= 1 Default: null Restrict response to tasks created by users matching this value. |
dueDateFrom | string Default: null Example: dueDateFrom=2001-12-25T00:00:00.000Z This parameter must also be used with Restrict response to tasks where due date is in range The date can be in ISO format yyyy-MM-dd or in the format specified by dateFormat parameter |
dueDateTo | string Default: null This parameter must also be used with Restrict response to tasks where due date is in range The date can be in ISO format yyyy-MM-dd or in the format specified by dateFormat parameter |
createdDateFrom | string Default: null This parameter must also be used with Restrict response to tasks where its created date is in range The date can be in ISO format yyyy-MM-dd or in the format specified by dateFormat parameter |
createdDateTo | string Default: null This parameter must also be used with Restrict response to tasks where its created date is in range The date can be in ISO format yyyy-MM-dd or in the format specified by dateFormat parameter |
completedOnDateFrom | string Default: null This parameter must also be used with Restrict response to tasks where its completed on date is in range The date can be in ISO format yyyy-MM-dd or in the format specified by dateFormat parameter |
completedOnDateTo | string Default: null This parameter must also be used with Restrict response to tasks where its completed on date is in range The date can be in ISO format yyyy-MM-dd or in the format specified by dateFormat parameter |
dateFormat | string Default: null If provided, then it will be used in formatting date parameters, else the date parameters must be in ISO format yyyy-MM-dd |
orderBy | string Enum: "dueDate" "createdDate" "completedOnDate" The api parameter name of field you wish to order by. |
sortOrder | string Enum: "ASC" "DESC" Used with |
{- "totalFilteredRecords": 52,
- "pageItems": [
- { },
- { }
]
}
Used to create a new Task.
Tasks can be associated with a client
or group
but not both. The model is the same for client and group except for the clientId
and groupId
fields.
clientId required | integer <int64> The id of the client on platform that this task is associated with. |
summary required | string A summary of the tasks purpose. |
assignedToUserId required | integer <int64> The id of the user in the platform that you wish to assign against this task. |
statusId required | integer <int64> The status to create the task in |
priorityId required | integer <int64> The priority to create the task in |
dueDate | string The date on that this task is due to be completed by. Provided as a string and used together with |
description | string A full description of the task. |
completed | boolean Default: false A boolean indicating if this task is completed or not. |
locale | string The locale to use when interpreting number and date fields in the request. |
dateFormat | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
{- "clientId": 1,
- "summary": "Task for Kenneth",
- "assignedToUserId": 1,
- "statusId": 1,
- "priorityId": 1,
- "dueDate": "2021-07-21T00:00:00.000Z",
- "description": "Task for Kenneth to check new loan.",
- "completed": false,
- "locale": "en",
- "dateFormat": "yyyy-MM-dd"
}
{- "resourceId": 12
}
Find a task by id.
id required | integer <int64> Example: 1 The unique identifer of a task. |
{- "id": 4709,
- "assignedTo": "username",
- "assignedToUserId": 24,
- "assignedToDisplayName": "username",
- "createdBy": "username",
- "createdByUserId": 24,
- "createdByDisplayName": "username",
- "summary": "Loan abc, contact customer",
- "description": "Please follow the following checklist...",
- "clientId": 14,
- "client": "John Doe",
- "groupId": 1,
- "group": "Rural Group 1",
- "status": "Follow up",
- "priority": "P1",
- "createdOnDate": "Dec 15, 2020 12:00:00 AM",
- "dueDate": "Dec 19, 2020 12:00:00 AM",
- "completed": false,
- "deleted": false,
- "completedOnDate": "Dec 15, 2020 12:00:00 AM",
- "originChannel": "my-api-integration",
- "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
Any attribute of the Task model can be updated in isolation.
id required | integer <int64> Example: 1 The unique identifer of a task. |
Update existing Task
assignedToUserId | integer <int64> The id of the user in the platform that you wish to assign against this task. |
description | string A full description of the task. |
summary | string A summary of the tasks purpose. |
statusId | integer <int64> The status to create the task in |
priorityId | integer <int64> The priority to create the task in |
dueDate | string The date in ISO Date format that this task is due to be completed by. |
clientId | integer <int64> The id of the client on platform that this task is associated with. |
groupId | integer <int64> The id of the group on platform that this task is associated with. |
{- "assignedToUserId": 1,
- "description": "Task for Kenneth to check new loan.",
- "summary": "Task for Kenneth",
- "statusId": 1,
- "priorityId": 1,
- "dueDate": "2021-07-21",
- "clientId": 1,
- "groupId": 1
}
{- "resourceId": 1,
- "changes": { }
}
Deletion of tasks are soft and the record is retained but marked as deleted
.
id required | integer <int64> Example: 1 The unique identifer of a task. |
{- "resourceId": 1,
- "changes": { }
}
All state changing Non-CRUD behaviour related to Tasks are catered for through this path and the use of a query parameter named command
to determine which behaviour you wish to execute.
id required | integer <int64> Example: 1 The unique identifer of a task. |
command | string Enum: "taskcompleted" "undotaskcompletion" Example: command=taskcompleted The name of the command indicating which behaviour to perform on the resource. |
Completing a task moves it into a completed state and ensures required fields are populated.
Used when command
query parameter is set to taskcompleted
.
{ }
{- "resourceId": 1,
- "changes": { }
}
General ledger accounts (GL Accounts) represent an individual account within an organizations Chart Of Accounts (COA).
They are assigned a name and unique number by which they can be identified.
All transactions relating to a company's assets, liabilities, equity, income or expense are recorded against these accounts.
List all GL Accounts
type | string Enum: 1 2 3 4 5 Example: type=1 This is a filter parameter. It limits the response to GL accounts whoose This parameter can be combined with any of filter parameters. |
searchParam | string Example: searchParam=1001 This is a filter parameter. It limits the response to GL accounts whoose This parameter can be combined with any of filter parameters. |
usage | string Enum: 1 2 Example: usage=1 This is a filter parameter. It limits the response to GL accounts whoose This parameter can be combined with any of filter parameters. |
manualEntriesAllowed | boolean Example: manualEntriesAllowed=false This is a filter parameter. It limits the response to GL accounts whoose This parameter can be combined with any of filter parameters. |
disabled | boolean Example: disabled=false This is a filter parameter. It limits the response to GL accounts whoose This parameter can be combined with any of filter parameters. |
reconciliationEnabled | boolean Example: reconciliationEnabled=false This is a filter parameter. It limits the response to GL accounts whoose This parameter can be combined with any of filter parameters. |
fetchRunningBalance | boolean Example: fetchRunningBalance=false if true, the response will include an addtional field called |
fetchUnreconciledBalance | boolean Example: fetchUnreconciledBalance=false if true, the response will include an addtional field called |
[- {
- "id": 1,
- "parentId": null,
- "name": "Cash in Bank",
- "nameDecorated": ".....Cash in Bank",
- "glCode": "ASS0001",
- "disabled": false,
- "manualEntriesAllowed": false,
- "type": {
- "id": 1,
- "code": "code.assetType",
- "value": "Asset"
}, - "usage": {
- "id": 1,
- "code": "accountUsage.detail",
- "value": "DETAIL"
}, - "tagId": {
- "id": 0,
- "active": true,
- "isDefault": true
}, - "description": "Some text explaining the GL account.",
- "reconciliationEnabled": false,
- "externalId": "XGL-1-00-00-00"
}
]
The supported schmea when creating a new general ledger account (GL Account).
name required | string The name of the GL account |
glCode required | string The ledger code associated with the Account. These codes are mandatory and unique |
type required | integer Enum: 1 2 3 4 5 Classifies the account into one of the following Types: 1=Asset: represent the different types of economic resources owned or controlled by business, common examples of Asset accounts are cash, cash in bank, building, inventory, prepaid rent, goodwill, accounts receivable |
usage required | integer Enum: 1 2 Indicates if this ledger is a Header or Detail ledger account. 1=Detail: "Detail" accounts may have transactions logged against them |
manualEntriesAllowed required | boolean Indicates if manual entries can be made against this account using the Journals API. |
parentId | integer <integer64> To assign a another GL account as the parent of this GL account. |
disabled | boolean Default: false Indicates whether an account is disabled or not. |
reconciliationEnabled | boolean Default: false Indicates if reconcillation is allowed to be calculated for this account |
tagId | string A code value related to GL accounts used for tagging the account heads, based on GLAccount types. |
description | string Human understandable description for the general ledger account |
externalId | string A place to put an external reference for this resource e.g. The ID another system uses for it. If provided, it must be unique. |
{- "name": "Cash on Hand",
- "glCode": "ASS0001",
- "type": 1,
- "usage": 1,
- "manualEntriesAllowed": false,
- "parentId": null,
- "disabled": false,
- "reconciliationEnabled": false,
- "tagId": "SomeCodeValue",
- "description": "Some text explaining the GL account.",
- "externalId": "XGL-1-00-00-00"
}
{- "resourceId": 12
}
Find GL Account by id
id required | integer <int64> Example: 1 The unique identifer of a general ledger account (GL Account). |
[- {
- "id": 1,
- "parentId": null,
- "name": "Cash in Bank",
- "nameDecorated": ".....Cash in Bank",
- "glCode": "ASS0001",
- "disabled": false,
- "manualEntriesAllowed": false,
- "type": {
- "id": 1,
- "code": "code.assetType",
- "value": "Asset"
}, - "usage": {
- "id": 1,
- "code": "accountUsage.detail",
- "value": "DETAIL"
}, - "tagId": {
- "id": 0,
- "active": true,
- "isDefault": true
}, - "description": "Some text explaining the GL account.",
- "reconciliationEnabled": false,
- "externalId": "XGL-1-00-00-00"
}
]
A General Ledger Account can only be deleted if:
DETAIL
account with no transactions have been logged (either manually or by the portfolio products)Header
account with no child gl accountsid required | integer <int64> Example: 1 The unique identifer of a general ledger account (GL Account). |
{- "resourceId": 0
}
Update ...
id required | integer <int64> Example: 1 The unique identifer of a general ledger account (GL Account). |
Update exisitng GL account
name | string The name of the GL account |
glCode | string The ledger code associated with the Account. These codes are mandatory and unique |
type | integer Enum: 1 2 3 4 5 Classifies the account into one of the following Types: 1=Asset: represent the different types of economic resources owned or controlled by business, common examples of Asset accounts are cash, cash in bank, building, inventory, prepaid rent, goodwill, accounts receivable |
usage | integer Enum: 1 2 Indicates if this ledger is a Header or Detail ledger account. 1=Detail: "Detail" accounts may have transactions logged against them |
manualEntriesAllowed | boolean Indicates if manual entries can be made against this account using the Journals API. |
parentId | integer <integer64> To assign a another GL account as the parent of this GL account. |
disabled | boolean Default: false Indicates whether an account is disabled or not. |
reconciliationEnabled | boolean Default: false Indicates if reconcillation is allowed to be calculated for this account |
tagId | string A code value related to GL accounts used for tagging the account heads, based on GLAccount types. |
description | string Human understandable description for the general ledger account |
externalId | string A place to put an external reference for this resource e.g. The ID another system uses for it. If provided, it must be unique. |
{- "name": "Cash on hand",
- "glCode": "ASS0001",
- "type": 1,
- "usage": 1,
- "manualEntriesAllowed": false,
- "parentId": null,
- "disabled": false,
- "reconciliationEnabled": false,
- "tagId": "SomeCodeValue",
- "description": "Some text explaining the GL account.",
- "externalId": "XGL-1-00-00-00"
}
{- "resourceId": 1,
- "changes": { }
}
Organization Level Financial Activities like Asset and Liability Transfer can be mapped to GL Account. Integrated accounting takes these accounts into consideration when an Account transfer is made between a savings to loan/savings account and vice-versa
List all Financial Activity Accounts
[- {
- "id": 1,
- "financialActivityData": {
- "id": 100,
- "value": "AssetTransfer"
}, - "glAccountData": {
- "id": 101,
- "glCode": "100-20",
- "name": "Cash"
}
}
]
The supported schmea when creating a new Financial Activity Account.
financialActivityId required | Integer Enum: 100 101 102 103 200 201 300 600 The ID of the relevant financial activity account that needs to be linked. |
glAccountId required | Integer The internal id of the glaccount that needs to be linked. |
{- "financialActivityId": 100,
- "glAccountId": 101
}
{- "resourceId": 12
}
Accounting exports are custom defined export formats towards 3rd party accounting systems such as SQL Accounting, SUN6, Sage and others.
List all Accounting Exports
[- {
- "id": 1,
- "startJournalEntryId": 1,
- "lastJournalEntryId": 2,
- "exportFilename": "20220823114431.csv",
- "exportPath": "/GLBalanceExport/SQL_20220817165000.csv",
- "runDate": [
- 2000,
- 1,
- 1
], - "lastModifiedDate": [
- 2000,
- 1,
- 1
], - "numberOfEntries": 10,
}
]
Find Accounting Exports by id
id required | integer <int64> Example: 1 The unique identifer of an Accounting Export File. |
[- {
- "id": 1,
- "startJournalEntryId": 1,
- "lastJournalEntryId": 2,
- "exportFilename": "20220823114431.csv",
- "exportPath": "/GLBalanceExport/SQL_20220817165000.csv",
- "runDate": [
- 2000,
- 1,
- 1
], - "lastModifiedDate": [
- 2000,
- 1,
- 1
], - "numberOfEntries": 10,
}
]
Generate Dataexport for the Expoert Id
id required | integer <int64> Example: 1 The unique identifer of an Accounting Export File. |
{- "resourceId": 12
}
Regenerate file for the Expoert Id
id required | integer <int64> Example: 1 The unique identifer of an Accounting Export File. |
{- "resourceId": 12
}
Batch API calls are used to group together API calls in one request, creating hierarchy, passing on paramaters and with (optional) rollback capabilities if any of the nested calls fails.
Batching allows a consumer to pass instructions for several operations in a single HTTP request. A consumer can also specify dependencies between related operations. Once all operations have been completed, a consolidated response will be passed back and the HTTP connection will be closed.
The Batch API takes in an array of logical HTTP requests represented as JSON arrays - each request has a requestId (the id of a request used to specify the sequence and as a dependency between requests), a method (corresponding to HTTP method GET/PUT/POST/DELETE etc.), a relativeUrl (the portion of the URL after https://example.org/api/v2/), optional headers array (corresponding to HTTP headers), optional reference parameter if a request is dependent on another request and an optional body (for POST and PUT requests). The Batch API returns an array of logical HTTP responses represented as JSON arrays - each response has a requestId, a status code, an optional headers array and an optional body (which is a JSON encoded string).
Batch API uses Json Path to handle dependent parameters. For example, if request '2' is referencing request '1' and in the "body" or in "relativeUrl" of request '2', there is a dependent parameter (which will look like "$.parameter_name"), then Batch API will internally substitute this dependent parameter from the response body of request '1'.
Batch calls are currently supported for the following API calls:
NB: If any API call where batching is preferred is missing from this list, please report this to the Musoni Service Desk.
enclosingTransaction | boolean Whether to enclose the transaction as one and therefore rollback on failure or not |
requestId | integer Relative request ordering, requests will be executed in this order and output paramaters from previous requests (eg entityId or loanId) will be available in subsequent calls. |
relativeUrl | string Relative URL to the API to call in this request, including any URL params (?command=repayment) |
method | enum Enum: "GET" "POST" "PUT" "DELETE" The HTTP Verb for the request |
headers | Array of arrays Specifying additional headers, such as content type etc. |
body | string Escaped JSON command to be passed |
[- {
- "requestId": 1,
- "relativeUrl": "clients",
- "method": "POST",
- "headers": "Optional array of HTTP Headers",
- "body": "\" {\n\\\"officeId\\\": 1,\n\\\"firstname\\\": \\\"Petra\\\",\n\\\"lastname\\\": \\\"Yton\\\",\n\\\"externalId\\\": \\\"externalId_4\\\",\n\\\"dateFormat\\\": \\\"dd MMMM yyyy\\\",\n\\\"locale\\\": \\\"en\\\", \\\"active\\\": true,\n\\\"activationDate\\\": \\\"04 March 2009\\\",\n\\\"submittedOnDate\\\": \\\"04 March 2009\\\"\n}\"\n"
}
]
{- "resourceId": 12
}
The Data Filter API supports the ability to produce filtered views of a modelled entity (Metadata Model).
These filtered views are highly customisable through rules expression support, multi-sort and ability to define the fields included in response.
The filter definition can then be saved and executed on demand.
See The Metadata API for listing of models supported.
List all Data Filters across all metadata models (metadataModelType
).
This API scopes the response based on the user making the request and returns only filters where the user is the owner.
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
{- "totalFilteredRecords": 52,
- "pageItems": [
- { },
- { }
]
}
Lists all Data Filters by metadata model type.
This API scopes the response based on the user making the request and returns only filters where the user is the owner.
metadataModelType required | string Enum: "clients" "groups" "loans" "savingsaccounts" "shares" Example: groups An enum that describes the metadata model that is to be associated with the filter. |
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
{- "totalFilteredRecords": 52,
- "pageItems": [
- { },
- { }
]
}
This API supports creation of new filters.
metadataModelType required | string Enum: "clients" "groups" "loans" "savingsaccounts" "shares" Example: groups An enum that describes the metadata model that is to be associated with the filter. |
name required | string [ 1 .. 100 ] characters The name of the filter |
description | string A description to provide users with more information about the filter. |
required | object A valid filter rule expression as generated by QueryBuilder |
required | Array of objects |
Array of objects |
{- "name": "All Loans Pending",
- "description": "This filter shows all loans that are pending approval and also are above $1,000.",
- "filterRulesExpression": {
- "condition": "AND",
- "rules": [
- {
- "id": "officeId",
- "field": "officeId",
- "type": "integer",
- "input": "select",
- "operator": "equal",
- "value": 1
}
]
}, - "responseParameters": [
- {
- "ordinal": 0,
- "name": "accountNo"
}
], - "sortByParameters": [
- {
- "ordinal": 0,
- "name": "accountNo",
- "direction": "ASC"
}
]
}
{- "resourceId": 12
}
Executes the data filter and returns the response.
The response returned is dynamic and based upon the metadataModelType
and responseParameters
provided in the API request.
metadataModelType required | string Enum: "clients" "groups" "loans" "savingsaccounts" "shares" Example: groups An enum that describes the metadata model that is to be associated with the filter. |
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
required | object A valid filter rule expression as generated by QueryBuilder |
required | Array of objects |
Array of objects |
{- "filterRulesExpression": {
- "condition": "AND",
- "rules": [
- {
- "id": "officeId",
- "field": "officeId",
- "type": "integer",
- "input": "select",
- "operator": "equal",
- "value": 1
}
]
}, - "responseParameters": [
- {
- "ordinal": 0,
- "name": "accountNo"
}
], - "sortByParameters": [
- {
- "ordinal": 0,
- "name": "accountNo",
- "direction": "ASC"
}
]
}
{- "totalFilteredRecords": 52,
- "pageItems": [
- { },
- { }
]
}
Find a Data Filter by id
Returns all the details of the Data Filter. The user making the request must also be the filter owner.
metadataModelType required | string Enum: "clients" "groups" "loans" "savingsaccounts" "shares" Example: groups An enum that describes the metadata model that is to be associated with the filter. |
id required | integer <int64> Example: 1 The unique identifer of a Data Filter. |
{- "id": 4709,
- "name": "Branch Office X - All loans in arrears",
- "description": "This filter shows all loans belonging to branch office X that are in arrears.",
- "owner": {
- "id": 1,
- "username": "branchuser@org.com",
- "firstname": "John",
- "lastname": "Smith"
}, - "metadataModelType": {
- "id": 0,
- "code": "string",
- "value": "string"
}, - "filterRulesExpression": {
- "condition": "AND",
- "rules": [
- {
- "id": "officeId",
- "field": "officeId",
- "type": "integer",
- "input": "select",
- "operator": "equal",
- "value": 1
}
]
}, - "responseParameters": [
- {
- "ordinal": 0,
- "name": "accountNo"
}
], - "sortByParameters": [
- {
- "ordinal": 0,
- "name": "accountNo",
- "direction": "ASC"
}
], - "auditData": {
- "createdOnTimestamp": 1634149191,
- "createdByUsername": "Sys Admin",
- "lastModifiedOnTimestamp": 1634149191,
- "lastModifiedByUsername": "Sys Admin"
}
}
Any attribute of the Data Filter can be updated in isolation.
metadataModelType required | string Enum: "clients" "groups" "loans" "savingsaccounts" "shares" Example: groups An enum that describes the metadata model that is to be associated with the filter. |
id required | integer <int64> Example: 1 The unique identifer of a Data Filter. |
name | string [ 1 .. 100 ] characters The name of the filter |
description | string A description to provide users with more information about the filter. |
object A valid filter rule expression as generated by QueryBuilder | |
Array of objects | |
Array of objects |
{- "name": "All Loans Pending",
- "description": "This filter shows all loans that are pending approval and also are above $1,000.",
- "filterRulesExpression": {
- "condition": "AND",
- "rules": [
- {
- "id": "officeId",
- "field": "officeId",
- "type": "integer",
- "input": "select",
- "operator": "equal",
- "value": 1
}
]
}, - "responseParameters": [
- {
- "ordinal": 0,
- "name": "accountNo"
}
], - "sortByParameters": [
- {
- "ordinal": 0,
- "name": "accountNo",
- "direction": "ASC"
}
]
}
{- "resourceId": 1,
- "changes": { }
}
A user may only delete data filters where they are the owner
. The deletion is hard and not recoverable by the end user.
metadataModelType required | string Enum: "clients" "groups" "loans" "savingsaccounts" "shares" Example: groups An enum that describes the metadata model that is to be associated with the filter. |
id required | integer <int64> Example: 1 The unique identifer of a Data Filter. |
{- "resourceId": 112
}
Executes the data filter and returns the response.
The response returned is dynamic and based upon the metadataModelType
and responseParameters
of the saved filter.
metadataModelType required | string Enum: "clients" "groups" "loans" "savingsaccounts" "shares" Example: groups An enum that describes the metadata model that is to be associated with the filter. |
id required | integer <int64> Example: 1 The unique identifer of a Data Filter. |
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
{- "totalFilteredRecords": 52,
- "pageItems": [
- { },
- { }
]
}
Data Exports are used to generate exports of data from tables linked to a specified base entity
List all Data Exports
[- {
- "id": 4709,
- "name": "Loan Data Export",
- "baseEntityName": "loan",
- "userRequestMap": {
- "name": "Loan Data Export",
- "baseEntityName": "loan",
- "filters": { },
- "datatables": [ ],
- "columns": [
- "account_no",
- "total_overdue_derived"
]
}, - "filename": "Loan_Data_Export_20211213091716",
- "fileDownloadCount": 1,
- "timeline": {
- "createdOnDate": [
- 2000,
- 1,
- 1
], - "createdByUsername": "musoni",
- "createdByFirstname": "musoni",
- "createdByLastname": "musoni",
- "modifiedOnDate": [
- 2000,
- 1,
- 1
], - "modifiedByUsername": "musoni",
- "modifiedByFirstname": "musoni",
- "modifiedByLastname": "musoni"
}, - "editable": true
}
]
The supported schema for creating data exports.
name
, baseEntityName
are required. locale
is required when dealing with numbers or dates dateFormat
is required when dealing with dates
name required | string [ 1 .. 100 ] characters The name of the Data Export |
baseEntityName required | string Enum: "loan" "client" "group" "savings_account" "loan_transaction" "savings_account_transaction" "loan_repayment_schedule" "group_loan_member_allocation" "share_account" "standing_instruction" "loan_charge" "savings_account_charge" "share_account_charge" "journal_entry" "client_transfer" "mobile_money" "office" "task" "savings_product" "product_loan" "share_account_dividend" "share_account_transaction" The identifier of the base entity for the Data Export |
object A valid filter rule expression as generated by QueryBuilder | |
datatables | Array of strings An array datatable names to be included in the data export. |
columns | Array of strings[ items [ 1 .. 200 ] characters ] The name of the fields to be selected for the data export |
version required | string Value: "v2" The identifier of the version of the Data Export implementation. Only "v2" is currently supported. |
{- "name": "End of Month Account Report",
- "baseEntityName": "loan",
- "filters": {
- "condition": "AND",
- "rules": [
- {
- "id": "officeId",
- "field": "officeId",
- "type": "integer",
- "input": "select",
- "operator": "equal",
- "value": 1
}
]
}, - "datatables": [
- "ml_loan_details"
], - "columns": [
- "account_no"
], - "version": "v2"
}
{- "resourceId": 12
}
Retrieves a Data Export entity by id
id required | integer <int64> Example: 1 The unique identifer of a data export. |
{- "id": 4709,
- "name": "Loan Data Export",
- "baseEntityName": "loan",
- "userRequestMap": {
- "name": "Loan Data Export",
- "baseEntityName": "loan",
- "filters": { },
- "datatables": [ ],
- "columns": [
- "account_no",
- "total_overdue_derived"
]
}, - "filename": "Loan_Data_Export_20211213091716",
- "fileDownloadCount": 1,
- "timeline": {
- "createdOnDate": [
- 2000,
- 1,
- 1
], - "createdByUsername": "musoni",
- "createdByFirstname": "musoni",
- "createdByLastname": "musoni",
- "modifiedOnDate": [
- 2000,
- 1,
- 1
], - "modifiedByUsername": "musoni",
- "modifiedByFirstname": "musoni",
- "modifiedByLastname": "musoni"
}, - "editable": true
}
The supported schema for data export updates. name
, baseEntityName
, filters
, datatables
, columns
and version
can be updated in isolation or together.
locale
is required when dealing with numbers or dates dateFormat
is required when dealing with dates
id required | integer <int64> Example: 1 The unique identifer of a data export. |
Update exisitng data export
name | string [ 1 .. 100 ] characters The name of the Data Export |
baseEntityName | string Enum: "loan" "client" "group" "savings_account" "loan_transaction" "savings_account_transaction" "loan_repayment_schedule" "group_loan_member_allocation" "share_account" "standing_instruction" "loan_charge" "savings_account_charge" "share_account_charge" "journal_entry" "client_transfer" "mobile_money" "office" "task" "savings_product" "product_loan" "share_account_dividend" "share_account_transaction" The identifier of the base entity for the Data Export |
object A valid filter rule expression as generated by QueryBuilder | |
datatables | Array of strings An array datatable names to be included in the data export. |
columns | Array of strings[ items [ 1 .. 200 ] characters ] The name of the fields to be selected for the data export |
version | string Value: "v2" The identifier of the version of the Data Export implementation. Only "v2" is currently supported. |
{- "name": "End of Month Account Report",
- "baseEntityName": "loan",
- "filters": {
- "condition": "AND",
- "rules": [
- {
- "id": "officeId",
- "field": "officeId",
- "type": "integer",
- "input": "select",
- "operator": "equal",
- "value": 1
}
]
}, - "datatables": [
- "ml_loan_details"
], - "columns": [
- "account_no"
], - "version": "v2"
}
{- "resourceId": 1,
- "changes": { }
}
This is a convenience api.
It can be useful when building maintenance user interface screens for data export creation/update.
It returns fields with default values and dropdown list values.
baseEntityName required | string Enum: "loan" "client" "group" "savings_account" "loan_transaction" "savings_account_transaction" "loan_repayment_schedule" "group_loan_member_allocation" "share_account" "standing_instruction" "loan_charge" "savings_account_charge" "share_account_charge" "journal_entry" "client_transfer" "mobile_money" "office" "task" "savings_product" "product_loan" "share_account_dividend" "share_account_transaction" Example: loan An enum that describes the metadata model that is to be associated with the data export. |
{- "entityName": "loan",
- "tableName": "m_loan",
- "datatables": [
- {
- "applicationTableName": "m_loan",
- "registeredTableName": "ml_loan_details",
- "category": 176,
- "displayName": "Loan Details",
- "systemDefined": true
}
], - "columns": [
- {
- "name": "account_no",
- "label": "account no",
- "type": "VARCHAR",
- "isNullable": true
}
]
}
Downloads Data Export file in specified file format.
fileFormat required | string Enum: "csv" "xls" "xml" Example: fileFormat=csv The format of the file to be generated for the Data Export |
{file}
Adds request to generate a data export file to a processing queue.
exportId required | string The id of the data export whose file needs to be generated |
fileFormat required | string Example: fileFormat=csv Expected output of the file to be generated |
1
Retrieves a Data Export Queue by id
{- "preparedDataExportId": 4709,
- "exportId": 345,
- "name": "Loan Data Export",
- "createOn": "12-01-2022 10:14:20",
- "finishedOn": "12-01-2022 10:15:20",
- "status": "IN_PROGRESS",
- "exportType": "PDF",
- "expiredOn": "19-01-2022 10:14:20",
- "daysBeforeExpiration": 7,
- "documentId": 500,
- "createdByUsername": "musoni",
- "baseEntity": "loan",
- "runType": "manual",
- "scheduledDataExportId": 200
}
Document templates can be used to generate customised documents as loan contracts, repayment schedules etc.
Document templates use Mustache templates with various handlebars helper extensions to allow more advanced operations.
List all Document templates
entityId | integer <int32> Default: -1 Restrict response to entities matching this value, valid entries are | - 0 - Client - 1 - Loan - 3 - savingsaccounts - 4 - Fixed term deposit account - 6 - Group - 7 - Shares - 8 - Share transactions - 9 - Loan transactions - 10 - Savings transactions |
[- {
- "id": 1,
- "name": "Loan Contract",
- "entity": "client",
- "type": "document",
- "text": "<h1>Loan Schedule</h1>\r\n{{#or (eq loan.status.value \"Submitted and pending approval\") (eq loan.status.value \"Approved\")}}\r\n",
- "mappers": [
- {
- "id": 0,
- "mapperOrder": 1,
- "mapperKey": "loan",
- "mapperValue": "loans/{{loanId}}?tenantIdentifier={{tenantIdentifier}}&associations=repaymentSchedule"
}
], - "paperSize": "A4",
- "isSystemDefined": false
}
]
Find a document template by id.
id required | integer <int64> Example: 1 The unique identifer of a document template. |
{- "id": 1,
- "name": "Loan Contract",
- "entity": "client",
- "type": "document",
- "text": "<h1>Loan Schedule</h1>\r\n{{#or (eq loan.status.value \"Submitted and pending approval\") (eq loan.status.value \"Approved\")}}\r\n",
- "mappers": [
- {
- "id": 0,
- "mapperOrder": 1,
- "mapperKey": "loan",
- "mapperValue": "loans/{{loanId}}?tenantIdentifier={{tenantIdentifier}}&associations=repaymentSchedule"
}
], - "paperSize": "A4",
- "isSystemDefined": false
}
Compiles Document template mappers and parse document template text replacing markers by mapped values
id required | integer <int64> Example: 1 The unique identifer of a document template. |
locale required | string The locale to use when interpreting number and date fields in the request. |
dateFormat required | string The date format to use when interpreting date fields in the request. Must be suported by Joda Time. |
clientId required | integer A valid id for a customer. |
tenantIdentifier | string <= 30 characters The identifier of the tenant running the template. |
tenantUrl | string <= 30 characters The external FQDN of the customers environment, used for referring to logo's etc. |
{- "locale": "en",
- "dateFormat": "dd MMMM yyyy",
- "clientId": "1",
- "tenantIdentifier": "demo",
}
<html><head>...</head><body>...</body></html>
Lists all resources that have hypermedia support for REST.
{- "totalFilteredRecords": 4,
- "pageItems": [
- {
- "resource": "tasks",
- "permitted": true,
- "hypermediaApi": {
- "name": "findHypermediaByResourceName",
- "method": "GET",
- "href": "/hypermedia/resources/tasks",
- "permitted": true
}
}
]
}
Find resource by name returning the full hypermedia describing resource.
resourceName required | string Example: tasks The name of a resource on the platform that supports hypermedia |
{- "resource": "tasks",
- "permitted": true,
- "hypermediaApi": {
- "name": "string",
- "method": "GET",
- "href": "/hypermedia/{resources|apis}/{name}",
- "permitted": true
}, - "commands": [
- {
- "name": "tasks",
- "resource": "tasks",
- "collection": true,
- "command": true,
- "query": false,
- "method": "POST",
- "href": "/tasks",
- "permitted": true,
- "hypermediaApi": {
- "name": "string",
- "method": "GET",
- "href": "/hypermedia/{resources|apis}/{name}",
- "permitted": true
}, - "pathParameters": [
- {
- "name": "id",
- "dataType": "integer",
- "required": true
}
], - "queryParameters": [
- {
- "name": "offset",
- "value": "command-name",
- "dataType": "integer",
- "required": false,
- "usage": "paging",
- "lookupApi": {
- "name": "lookupByRelationshipName",
- "method": "GET",
- "href": "/lookups/relationships/task-assigned-to-user",
- "queryParameters": [
- {
- "name": "offset",
- "dataType": "integer",
- "required": false,
- "usage": "paging"
}
]
}
}
], - "requestParameters": [
- {
- "name": "offset",
- "dataType": "integer",
- "required": false,
- "minLength": 0,
- "maxLength": 100,
- "lookupApi": {
- "name": "lookupByRelationshipName",
- "method": "GET",
- "href": "/lookups/relationships/task-assigned-to-user",
- "queryParameters": [
- {
- "name": "offset",
- "dataType": "integer",
- "required": false,
- "usage": "paging"
}
]
}
}
]
}
], - "queries": [
- {
- "name": "tasks",
- "resource": "tasks",
- "collection": true,
- "command": true,
- "query": false,
- "method": "POST",
- "href": "/tasks",
- "permitted": true,
- "hypermediaApi": {
- "name": "string",
- "method": "GET",
- "href": "/hypermedia/{resources|apis}/{name}",
- "permitted": true
}, - "pathParameters": [
- {
- "name": "id",
- "dataType": "integer",
- "required": true
}
], - "queryParameters": [
- {
- "name": "offset",
- "value": "command-name",
- "dataType": "integer",
- "required": false,
- "usage": "paging",
- "lookupApi": {
- "name": "lookupByRelationshipName",
- "method": "GET",
- "href": "/lookups/relationships/task-assigned-to-user",
- "queryParameters": [
- {
- "name": "offset",
- "dataType": "integer",
- "required": false,
- "usage": "paging"
}
]
}
}
], - "requestParameters": [
- {
- "name": "offset",
- "dataType": "integer",
- "required": false,
- "minLength": 0,
- "maxLength": 100,
- "lookupApi": {
- "name": "lookupByRelationshipName",
- "method": "GET",
- "href": "/lookups/relationships/task-assigned-to-user",
- "queryParameters": [
- {
- "name": "offset",
- "dataType": "integer",
- "required": false,
- "usage": "paging"
}
]
}
}
]
}
]
}
Lists all APIs that have hypermedia support for REST.
{- "totalFilteredRecords": 4,
- "pageItems": [
- {
- "name": "createNewTask",
- "resource": "tasks",
- "collection": true,
- "command": true,
- "query": false,
- "method": "POST",
- "href": "/tasks",
- "permitted": true,
- "hypermediaApi": {
- "name": "findHypermediaByApiName",
- "method": "GET",
- "href": "/hypermedia/apis/createNewTask",
- "permitted": true
}
}
]
}
Find one API by name.
apiName required | string Example: createNewTask The name of a api on the platform that supports hypermedia |
{- "totalFilteredRecords": 4,
- "pageItems": [
- {
- "name": "createNewTask",
- "resource": "tasks",
- "collection": true,
- "command": true,
- "query": false,
- "method": "POST",
- "href": "/tasks",
- "permitted": true,
- "hypermediaApi": {
- "name": "findHypermediaByApiName",
- "method": "GET",
- "href": "/hypermedia/apis/createNewTask",
- "permitted": true
}
}
]
}
Lists all metadata models supported.
{- "totalFilteredRecords": 4,
- "pageItems": [
- {
- "id": 1,
- "code": "DataFilterEntityType.clients",
- "value": "clients"
}, - {
- "id": 2,
- "code": "DataFilterEntityType.groups",
- "value": "groups"
}, - {
- "id": 3,
- "code": "DataFilterEntityType.loans",
- "value": "loans"
}, - {
- "id": 4,
- "code": "DataFilterEntityType.savingsaccounts",
- "value": "savingsaccounts"
}
]
}
Retrieves the details of the metadata model using the path parameter metadataModelType
.
metadataModelType required | string Enum: "clients" "groups" "loans" "savingsaccounts" "shares" Example: groups An enum that describes the metadata model that is to be associated with the filter. |
{- "metadata": {
- "type": "object",
- "resource": "groups",
- "description": "A description of this metadata.",
- "properties": { }
}
}
This API returns the metadata for the clients
model.
Application developers can use this to help buid forms and components.
metadataModelType required | string Example: clients |
{- "metadata": {
- "type": "object",
- "resource": "clients",
- "description": "The map of supported properties.",
- "properties": {
- "id": {
- "type": "integer",
- "resource": "groups"
}, - "accountNo": {
- "type": "integer",
- "resource": "groups"
}, - "externalId": {
- "type": "integer",
- "resource": "groups"
}, - "status": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "subStatusId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "subStatusValue": {
- "type": "integer",
- "resource": "groups"
}, - "clientTypeId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "clientTypeValue": {
- "type": "integer",
- "resource": "groups"
}, - "classificationId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "classificationValue": {
- "type": "integer",
- "resource": "groups"
}, - "legalForm": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "officeId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "officeName": {
- "type": "integer",
- "resource": "groups"
}, - "staffId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "staffName": {
- "type": "integer",
- "resource": "groups"
}, - "savingsProductId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "savingsProductName": {
- "type": "integer",
- "resource": "groups"
}, - "savingsAccountId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "savingsAccountName": {
- "type": "integer",
- "resource": "groups"
}, - "firstname": {
- "type": "integer",
- "resource": "groups"
}, - "middlename": {
- "type": "integer",
- "resource": "groups"
}, - "lastname": {
- "type": "integer",
- "resource": "groups"
}, - "fullname": {
- "type": "integer",
- "resource": "groups"
}, - "displayName": {
- "type": "integer",
- "resource": "groups"
}, - "genderId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "genderValue": {
- "type": "integer",
- "resource": "groups"
}, - "mobileNo": {
- "type": "integer",
- "resource": "groups"
}, - "mobileNoSecondary": {
- "type": "integer",
- "resource": "groups"
}, - "emailAddress": {
- "type": "integer",
- "resource": "groups"
}, - "dateOfBirth": {
- "type": "integer",
- "resource": "groups"
}, - "officeJoiningDate": {
- "type": "integer",
- "resource": "groups"
}, - "isStaff": {
- "type": "integer",
- "resource": "groups"
}, - "incorpNumber": {
- "type": "integer",
- "resource": "groups"
}, - "incorpValidityTillDate": {
- "type": "integer",
- "resource": "groups"
}, - "constitutionId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "constitutionValue": {
- "type": "integer",
- "resource": "groups"
}, - "mainBusinessLineId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "mainBusinessLineValue": {
- "type": "integer",
- "resource": "groups"
}, - "remarks": {
- "type": "integer",
- "resource": "groups"
}, - "groupId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "groupAccountNo": {
- "type": "integer",
- "resource": "groups"
}, - "groupName": {
- "type": "integer",
- "resource": "groups"
}, - "groupExternalId": {
- "type": "integer",
- "resource": "groups"
}, - "submittedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "submittedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "submittedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "activationDate": {
- "type": "integer",
- "resource": "groups"
}, - "activationByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "activationByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "closureDate": {
- "type": "integer",
- "resource": "groups"
}, - "closureByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "closureByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "closureReasonId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "closureReasonValue": {
- "type": "integer",
- "resource": "groups"
}, - "reactivationDate": {
- "type": "integer",
- "resource": "groups"
}, - "reactivationByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "reactivationByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "reopenedDate": {
- "type": "integer",
- "resource": "groups"
}, - "reopenedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "reopenedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "rejectionDate": {
- "type": "integer",
- "resource": "groups"
}, - "rejectionByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "rejectionByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "rejectionReasonId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "rejectionReasonValue": {
- "type": "integer",
- "resource": "groups"
}, - "withdrawalDate": {
- "type": "integer",
- "resource": "groups"
}, - "withdrawalByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "withdrawalByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "withdrawalReasonId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "withdrawalReasonValue": {
- "type": "integer",
- "resource": "groups"
}, - "lastModifiedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "lastModifiedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "lastModifiedOnTimestamp": {
- "type": "integer",
- "resource": "groups"
}
}
}
}
This API returns the metadata for the groups
model.
Application developers can use this to help buid forms and components.
metadataModelType required | string Example: groups |
{- "metadata": {
- "type": "object",
- "resource": "groups",
- "description": "The map of supported properties.",
- "properties": {
- "id": {
- "type": "integer",
- "resource": "groups"
}, - "accountNo": {
- "type": "integer",
- "resource": "groups"
}, - "externalId": {
- "type": "integer",
- "resource": "groups"
}, - "status": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "name": {
- "type": "integer",
- "resource": "groups"
}, - "submittedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "submittedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "submittedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "activationOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "activatedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "activatedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "closureDate": {
- "type": "integer",
- "resource": "groups"
}, - "closureByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "closureByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "closureReasonId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "closureReasonValue": {
- "type": "integer",
- "resource": "groups"
}, - "officeId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "officeName": {
- "type": "integer",
- "resource": "groups"
}, - "staffId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "staffName": {
- "type": "integer",
- "resource": "groups"
}
}
}
}
This API returns the metadata for the loans
model.
Application developers can use this to help buid forms and components.
metadataModelType required | string Example: loans |
{- "metadata": {
- "type": "object",
- "resource": "loans",
- "description": "The map of supported properties.",
- "properties": {
- "id": {
- "type": "integer",
- "resource": "groups"
}, - "accountNo": {
- "type": "integer",
- "resource": "groups"
}, - "externalId": {
- "type": "integer",
- "resource": "groups"
}, - "loanType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "loanPurposeId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "loanPurposeValue": {
- "type": "integer",
- "resource": "groups"
}, - "status": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "subStatus": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "subStatusId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "subStatusValue": {
- "type": "integer",
- "resource": "groups"
}, - "originChannel": {
- "type": "integer",
- "resource": "groups"
}, - "officeId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "officeName": {
- "type": "integer",
- "resource": "groups"
}, - "loanProductId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "loanProductName": {
- "type": "integer",
- "resource": "groups"
}, - "productGroupId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "productGroupName": {
- "type": "integer",
- "resource": "groups"
}, - "clientId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "clientAccountNo": {
- "type": "integer",
- "resource": "groups"
}, - "clientName": {
- "type": "integer",
- "resource": "groups"
}, - "clientExternalId": {
- "type": "integer",
- "resource": "groups"
}, - "clientGenderId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "clientGenderValue": {
- "type": "integer",
- "resource": "groups"
}, - "clientMobileNo": {
- "type": "integer",
- "resource": "groups"
}, - "clientDateOfBirth": {
- "type": "integer",
- "resource": "groups"
}, - "groupId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "groupAccountNo": {
- "type": "integer",
- "resource": "groups"
}, - "groupName": {
- "type": "integer",
- "resource": "groups"
}, - "groupExternalId": {
- "type": "integer",
- "resource": "groups"
}, - "fundId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "fundName": {
- "type": "integer",
- "resource": "groups"
}, - "loanOfficerId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "loanOfficerName": {
- "type": "integer",
- "resource": "groups"
}, - "transactionStrategyId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "transactionStrategyName": {
- "type": "integer",
- "resource": "groups"
}, - "currencyCode": {
- "type": "integer",
- "resource": "groups"
}, - "currencyDigitsAfterDecimal": {
- "type": "integer",
- "resource": "groups"
}, - "currencyInMultiplesOf": {
- "type": "integer",
- "resource": "groups"
}, - "proposedPrincipal": {
- "type": "integer",
- "resource": "groups"
}, - "principal": {
- "type": "integer",
- "resource": "groups"
}, - "approvedPrincipal": {
- "type": "integer",
- "resource": "groups"
}, - "loanTermFrequency": {
- "type": "integer",
- "resource": "groups"
}, - "loanTermFrequencyType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "numberOfRepayments": {
- "type": "integer",
- "resource": "groups"
}, - "currentNumberOfRepayments": {
- "type": "integer",
- "resource": "groups"
}, - "repaymentEvery": {
- "type": "integer",
- "resource": "groups"
}, - "repaymentFrequencyType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "interestRatePerPeriod": {
- "type": "integer",
- "resource": "groups"
}, - "interestRateFrequencyType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "annualInterestRate": {
- "type": "integer",
- "resource": "groups"
}, - "effectiveInterestRate": {
- "type": "integer",
- "resource": "groups"
}, - "interestType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "amortizationType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "interestCalculationPeriodType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "daysInMonthType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "daysInYearType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "repaymentsStartingFromDate": {
- "type": "integer",
- "resource": "groups"
}, - "interestChargedFromDate": {
- "type": "integer",
- "resource": "groups"
}, - "graceOnPrincipalPayment": {
- "type": "integer",
- "resource": "groups"
}, - "recurringMoratoriumOnPrincipalPeriods": {
- "type": "integer",
- "resource": "groups"
}, - "graceOnInterestPayment": {
- "type": "integer",
- "resource": "groups"
}, - "graceOnInterestCharged": {
- "type": "integer",
- "resource": "groups"
}, - "graceOnArrearsAgeing": {
- "type": "integer",
- "resource": "groups"
}, - "fixedEmiAmount": {
- "type": "integer",
- "resource": "groups"
}, - "maxOutstandingLoanBalance": {
- "type": "integer",
- "resource": "groups"
}, - "repayPrincipalEvery": {
- "type": "integer",
- "resource": "groups"
}, - "repayInterestEvery": {
- "type": "integer",
- "resource": "groups"
}, - "isInterestRecalculationEnabled": {
- "type": "integer",
- "resource": "groups"
}, - "interestRecalcualatedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "allowPartialPeriodInterestCalcualtion": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "isInDuplum": {
- "type": "integer",
- "resource": "groups"
}, - "syncDisbursementWithMeeting": {
- "type": "integer",
- "resource": "groups"
}, - "createStandingInstructionAtDisbursement": {
- "type": "integer",
- "resource": "groups"
}, - "isTopup": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "isNPA": {
- "type": "integer",
- "resource": "groups"
}, - "isSuspendedIncome": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "isKeepAccruingAfterWrittenOff": {
- "type": "integer",
- "resource": "groups"
}, - "accrueUntilDate": {
- "type": "integer",
- "resource": "groups"
}, - "compoundType": {
- "type": "integer",
- "resource": "groups"
}, - "rescheduleStrategy": {
- "type": "integer",
- "resource": "groups"
}, - "restFrequencyEnum": {
- "type": "integer",
- "resource": "groups"
}, - "restFrequencyInterval": {
- "type": "integer",
- "resource": "groups"
}, - "restFrequencyNthDayEnum": {
- "type": "integer",
- "resource": "groups"
}, - "restFrequencyWeekDayEnum": {
- "type": "integer",
- "resource": "groups"
}, - "restFrequencyOnDay": {
- "type": "integer",
- "resource": "groups"
}, - "compoundingFrequencyEnum": {
- "type": "integer",
- "resource": "groups"
}, - "compoundingInterval": {
- "type": "integer",
- "resource": "groups"
}, - "compoundingFrequencyNthDayEnum": {
- "type": "integer",
- "resource": "groups"
}, - "compoundingFrequencyWeekDayEnum": {
- "type": "integer",
- "resource": "groups"
}, - "isCompoundingToBePostedAsTransaction": {
- "type": "integer",
- "resource": "groups"
}, - "allowCompoundingOnEod": {
- "type": "integer",
- "resource": "groups"
}, - "restrictSavingsProductId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "mandatorySavingsMethod": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "mandatorySavingsPercentage": {
- "type": "integer",
- "resource": "groups"
}, - "loanCounter": {
- "type": "integer",
- "resource": "groups"
}, - "loanProductCounter": {
- "type": "integer",
- "resource": "groups"
}, - "internalRateOfReturn": {
- "type": "integer",
- "resource": "groups"
}, - "guaranteeAmount": {
- "type": "integer",
- "resource": "groups"
}, - "principalDisbursed": {
- "type": "integer",
- "resource": "groups"
}, - "principalPaid": {
- "type": "integer",
- "resource": "groups"
}, - "principalWrittenOff": {
- "type": "integer",
- "resource": "groups"
}, - "principalOutstanding": {
- "type": "integer",
- "resource": "groups"
}, - "interestCharged": {
- "type": "integer",
- "resource": "groups"
}, - "interestPaid": {
- "type": "integer",
- "resource": "groups"
}, - "interestWaived": {
- "type": "integer",
- "resource": "groups"
}, - "interestWrittenOff": {
- "type": "integer",
- "resource": "groups"
}, - "interestOutstanding": {
- "type": "integer",
- "resource": "groups"
}, - "feeChargesCharged": {
- "type": "integer",
- "resource": "groups"
}, - "feeChargesDueAtDisbursementCharged": {
- "type": "integer",
- "resource": "groups"
}, - "feeChargesPaid": {
- "type": "integer",
- "resource": "groups"
}, - "feeChargesWaived": {
- "type": "integer",
- "resource": "groups"
}, - "feeChargesWrittenOff": {
- "type": "integer",
- "resource": "groups"
}, - "feeChargesOutstanding": {
- "type": "integer",
- "resource": "groups"
}, - "penaltyChargesCharged": {
- "type": "integer",
- "resource": "groups"
}, - "penaltyChargesPaid": {
- "type": "integer",
- "resource": "groups"
}, - "penaltyChargesWaived": {
- "type": "integer",
- "resource": "groups"
}, - "penaltyChargesWrittenOff": {
- "type": "integer",
- "resource": "groups"
}, - "penaltyChargesOutstanding": {
- "type": "integer",
- "resource": "groups"
}, - "totalExpectedRepayment": {
- "type": "integer",
- "resource": "groups"
}, - "totalRepayment": {
- "type": "integer",
- "resource": "groups"
}, - "totalExpectedCostOfLoan": {
- "type": "integer",
- "resource": "groups"
}, - "totalCostOfLoan": {
- "type": "integer",
- "resource": "groups"
}, - "totalWaived": {
- "type": "integer",
- "resource": "groups"
}, - "totalWrittenOff": {
- "type": "integer",
- "resource": "groups"
}, - "totalRecovered": {
- "type": "integer",
- "resource": "groups"
}, - "totalOutstanding": {
- "type": "integer",
- "resource": "groups"
}, - "totalOverpaid": {
- "type": "integer",
- "resource": "groups"
}, - "principalOverdue": {
- "type": "integer",
- "resource": "groups"
}, - "interestOverdue": {
- "type": "integer",
- "resource": "groups"
}, - "feeChargesOverdue": {
- "type": "integer",
- "resource": "groups"
}, - "penaltyChargesOverdue": {
- "type": "integer",
- "resource": "groups"
}, - "totalOverdue": {
- "type": "integer",
- "resource": "groups"
}, - "overdueSinceDate": {
- "type": "integer",
- "resource": "groups"
}, - "daysInArrears": {
- "type": "integer",
- "resource": "groups"
}, - "submittedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "submittedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "submittedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "approvedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "approvedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "approvedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "expectedDisbursementDate": {
- "type": "integer",
- "resource": "groups"
}, - "actualDisbursementDate": {
- "type": "integer",
- "resource": "groups"
}, - "disbursedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "disbursedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "expectedMaturityOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "actualMaturityOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "closedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "closedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "closedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "rescheduledOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "rescheduledByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "rescheduledByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "restructuredAndProvisioned": {
- "type": "integer",
- "resource": "groups"
}, - "rejectedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "rejectedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "rejectedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "withdrawnOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "withdrawnByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "withdrawnByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "writtenOffOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "writeOffReasonId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "writeOffReasonValue": {
- "type": "integer",
- "resource": "groups"
}, - "createdByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "createdByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "createdOnTimestamp": {
- "type": "integer",
- "resource": "groups"
}, - "lastModifiedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "lastModifiedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "lastModifiedOnTimestamp": {
- "type": "integer",
- "resource": "groups"
}
}
}
}
This API returns the metadata for the savingsaccounts
model.
Application developers can use this to help buid forms and components.
metadataModelType required | string Example: savingsaccounts |
{- "metadata": {
- "type": "object",
- "resource": "loans",
- "description": "The map of supported properties.",
- "properties": {
- "id": {
- "type": "integer",
- "resource": "groups"
}, - "accountNo": {
- "type": "integer",
- "resource": "groups"
}, - "externalId": {
- "type": "integer",
- "resource": "groups"
}, - "status": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "subStatus": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "accountType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "depositType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "officeId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "officeName": {
- "type": "integer",
- "resource": "groups"
}, - "savingsProductId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "savingsProductName": {
- "type": "integer",
- "resource": "groups"
}, - "clientId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "clientAccountNo": {
- "type": "integer",
- "resource": "groups"
}, - "clientName": {
- "type": "integer",
- "resource": "groups"
}, - "clientExternalId": {
- "type": "integer",
- "resource": "groups"
}, - "clientGenderId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "clientGenderValue": {
- "type": "integer",
- "resource": "groups"
}, - "clientMobileNo": {
- "type": "integer",
- "resource": "groups"
}, - "clientDateOfBirth": {
- "type": "integer",
- "resource": "groups"
}, - "groupId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "groupAccountNo": {
- "type": "integer",
- "resource": "groups"
}, - "groupName": {
- "type": "integer",
- "resource": "groups"
}, - "groupExternalId": {
- "type": "integer",
- "resource": "groups"
}, - "fieldOfficerId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "fieldOfficerName": {
- "type": "integer",
- "resource": "groups"
}, - "taxGroupId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "taxGroupName": {
- "type": "integer",
- "resource": "groups"
}, - "currencyCode": {
- "type": "integer",
- "resource": "groups"
}, - "currencyDigitsAfterDecimal": {
- "type": "integer",
- "resource": "groups"
}, - "currencyInMultiplesOf": {
- "type": "integer",
- "resource": "groups"
}, - "nominalAnnualInterestRate": {
- "type": "integer",
- "resource": "groups"
}, - "interestCompoundingPeriodType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "interestPostingPeriodType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "interestCalculationType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "interestCalculationDaysInYearType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "lockinPeriodFrequency": {
- "type": "integer",
- "resource": "groups"
}, - "lockinPeriodFrequencyType": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "withdrawalFeeForTransfers": {
- "type": "integer",
- "resource": "groups"
}, - "allowOverdraft": {
- "type": "integer",
- "resource": "groups"
}, - "overdraftLimit": {
- "type": "integer",
- "resource": "groups"
}, - "nominalAnnualInterestRateOverdraft": {
- "type": "integer",
- "resource": "groups"
}, - "minOverdraftForInterestCalculation": {
- "type": "integer",
- "resource": "groups"
}, - "minRequiredBalance": {
- "type": "integer",
- "resource": "groups"
}, - "minBalanceForInterestCalculation": {
- "type": "integer",
- "resource": "groups"
}, - "enforceMinRequiredBalance": {
- "type": "integer",
- "resource": "groups"
}, - "isAutoRenewOnClosure": {
- "type": "integer",
- "resource": "groups"
}, - "withHoldTax": {
- "type": "integer",
- "resource": "groups"
}, - "calculateInterestDuringDormancy": {
- "type": "integer",
- "resource": "groups"
}, - "startInterestCalculationDate": {
- "type": "integer",
- "resource": "groups"
}, - "lastInterestCalculationDate": {
- "type": "integer",
- "resource": "groups"
}, - "lastQuarterlyCalculationDate": {
- "type": "integer",
- "resource": "groups"
}, - "lastActivityDate": {
- "type": "integer",
- "resource": "groups"
}, - "lockinPeriodUntilDateDerived": {
- "type": "integer",
- "resource": "groups"
}, - "totalDeposits": {
- "type": "integer",
- "resource": "groups"
}, - "totalWithdrawals": {
- "type": "integer",
- "resource": "groups"
}, - "totalWithdrawalFees": {
- "type": "integer",
- "resource": "groups"
}, - "totalFeeCharge": {
- "type": "integer",
- "resource": "groups"
}, - "totalPenaltyCharge": {
- "type": "integer",
- "resource": "groups"
}, - "totalAnnualFees": {
- "type": "integer",
- "resource": "groups"
}, - "totalQuarterlyFeesOwed": {
- "type": "integer",
- "resource": "groups"
}, - "totalQuarterlyFees": {
- "type": "integer",
- "resource": "groups"
}, - "totalInterestEarned": {
- "type": "integer",
- "resource": "groups"
}, - "totalInterestPosted": {
- "type": "integer",
- "resource": "groups"
}, - "totalOverdraftInterestDerived": {
- "type": "integer",
- "resource": "groups"
}, - "totalWithholdTax": {
- "type": "integer",
- "resource": "groups"
}, - "totalWrittenOff": {
- "type": "integer",
- "resource": "groups"
}, - "accountBalance": {
- "type": "integer",
- "resource": "groups"
}, - "onHoldFunds": {
- "type": "integer",
- "resource": "groups"
}, - "submittedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "submittedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "submittedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "approvedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "approvedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "approvedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "rejectedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "rejectedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "rejectedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "withdrawnOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "withdrawnByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "withdrawnByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "activatedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "activatedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "activatedByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "closedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "closedByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "closedByUsername": {
- "type": "integer",
- "resource": "groups"
}
}
}
}
This API returns the metadata for the tasks
model.
Application developers can use this to help buid forms and components.
metadataModelType required | string Example: tasks |
{- "metadata": {
- "type": "object",
- "resource": "tasks",
- "description": "The map of supported properties.",
- "properties": {
- "id": {
- "type": "integer",
- "resource": "groups"
}, - "summary": {
- "type": "integer",
- "resource": "groups"
}, - "description": {
- "type": "integer",
- "resource": "groups"
}, - "dueDate": {
- "type": "integer",
- "resource": "groups"
}, - "completedOnDate": {
- "type": "integer",
- "resource": "groups"
}, - "completed": {
- "type": "integer",
- "resource": "groups"
}, - "statusId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "statusValue": {
- "type": "integer",
- "resource": "groups"
}, - "priorityId": {
- "type": "integer",
- "resource": "codevalues",
- "optionsType": "codevalues-fixed-list",
- "codeName": "GroupClosureReason",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
]
}, - "priorityValue": {
- "type": "integer",
- "resource": "groups"
}, - "assignedToUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "assignedToUsername": {
- "type": "integer",
- "resource": "groups"
}, - "clientId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "clientAccountNo": {
- "type": "integer",
- "resource": "groups"
}, - "clientName": {
- "type": "integer",
- "resource": "groups"
}, - "clientExternalId": {
- "type": "integer",
- "resource": "groups"
}, - "groupId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "groupAccountNo": {
- "type": "integer",
- "resource": "groups"
}, - "groupName": {
- "type": "integer",
- "resource": "groups"
}, - "groupExternalId": {
- "type": "integer",
- "resource": "groups"
}, - "createdByUserId": {
- "type": "integer",
- "resource": "groups",
- "optionsType": "association-fixed-list",
- "options": [
- {
- "id": 0,
- "code": "string",
- "value": "string"
}
], - "lookups": {
- "href": "/lookups/groups/parameters/submittedByUserId",
- "rel": "lookup",
- "type": "GET",
- "queryParams": [
- {
- "name": "limit",
- "type": "integer"
}, - {
- "name": "offset",
- "type": "integer"
}, - {
- "name": "searchTerm",
- "type": "string",
- "minLength": 0
}
]
}
}, - "createdByUsername": {
- "type": "integer",
- "resource": "groups"
}, - "createdOnTimestamp": {
- "type": "integer",
- "resource": "groups"
}
}
}
}
Lists all the lookup options that are available for the specified metadataModelType
and apiParameterName
.
metadataModelType required | string Enum: "clients" "groups" "loans" "savingsaccounts" "shares" Example: groups An enum that describes the metadata model that is to be associated with the filter. |
apiParameterName required | string Example: apiParameterName The name of an parameter on a metadata model. |
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
searchTerm | string Examples:
When provided the lookup is restricted to to entries that match the search term provided. |
{- "totalFilteredRecords": 200,
- "pageItems": [
- {
- "value": "1",
- "displayValue": "Head Office",
- "displayValueCode": null
}, - {
- "value": "3",
- "displayValue": "New_Office_PZE1",
- "displayValueCode": null
}
]
}
Lists all the lookup options that are available for the specified relationship
.
relationshipName required | string Example: relationshipName The name of a relationsip. |
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
searchTerm | string Examples:
When provided the lookup is restricted to to entries that match the search term provided. |
{- "totalFilteredRecords": 200,
- "pageItems": [
- {
- "value": "1",
- "displayValue": "Head Office",
- "displayValueCode": null
}, - {
- "value": "3",
- "displayValue": "New_Office_PZE1",
- "displayValueCode": null
}
]
}
Search API allows scoped search across portfolio resources such as clients, groups, loans and savings.
Search API allows scoped search across portfolio resources:
It searches key fields of each resource for search term provided.
Client:
Group:
Client Identifiers:
Loan:
query required | String The search term to be searched for across scoped resources. |
resource | string Enum: "clients" "clientidentifiers" "groups" "loans" "savings" "ftd" "shares" Scoped resources on which search can be performed. If there is no resource parameter passed then search will be performed on all scoped resources. Resources can be combined through a comma seperated list to include multiple resources e.g |
exactMatch | boolean Default: false Example: exactMatch=false If there is no exactMatch parameter passed or set to false, then search will perform partial match search across scoped resources. If set to true will only return exactly matching results. Useful when searching a specific accountId or client phonenumber. |
limit | Integer Default: 500 Limits the number of search results returned. If not set defaults to 500 results. |
[- {
- "entityId": 123,
- "entityAccountNo": 1,
- "entityType": "SAVING",
- "entityName": "Loan Product Account Savings-7h0x",
- "parentId": 24,
- "parentName": "Jane Doe",
- "parentType": "Client",
- "officeId": 1,
- "officeName": "Head office",
- "entityStatus": 200
}
]
Jobs refers to a set of backend tasks that are performed and controlled by the Platform.
At any point, you can view the list of jobs scheduled to run along with other details specific to each job.
Returns all jobs configured with the scheduler.
Permission: READ_SCHEDULER
[- {
- "jobId": 4709,
- "displayName": "Update loan Summary",
- "nextRunTime": "Oct 13, 2023 9:00:00 PM",
- "cronExpression": "0 0 22 1/1 * ? *",
- "active": true,
- "currentlyRunning": true,
- "lastRunHistory": {
- "version": 0,
- "jobRunStartTime": "Oct 13, 2023 9:00:00 PM",
- "jobRunEndTime": "Oct 13, 2023 9:02:05 PM",
- "status": "success",
- "triggerType": "cron",
- "jobRunErrorMessage": "This job failed due to ...",
- "jobRunErrorLog": null
}
}
]
Returns details of the job
Permission: READ_SCHEDULER
id required | integer <int64> Example: 1 The unique identifer of a job. |
{- "jobId": 4709,
- "displayName": "Update loan Summary",
- "nextRunTime": "Oct 13, 2023 9:00:00 PM",
- "cronExpression": "0 0 22 1/1 * ? *",
- "active": true,
- "currentlyRunning": true,
- "lastRunHistory": {
- "version": 0,
- "jobRunStartTime": "Oct 13, 2023 9:00:00 PM",
- "jobRunEndTime": "Oct 13, 2023 9:02:05 PM",
- "status": "success",
- "triggerType": "cron",
- "jobRunErrorMessage": "This job failed due to ...",
- "jobRunErrorLog": null
}
}
Manually execute the job
id required | integer <int64> Example: 1 The unique identifer of a job. |
command required | string Default: "executeJob" Example: command=executeJob The executeJob command. |
{- "timestamp": 521630352275443,
- "status": 401,
- "error": "Unauthorized",
- "message": "Full authentication is required to access this resource",
- "path": "/api/v1/{resourceName}"
}
Returns the history of job executions for a specific job.
Permission: READ_SCHEDULER
id required | integer <int64> Example: 1 The unique identifer of a job. |
offset | integer Default: 0 Examples: sets the offset for pagination, used in combination with limit |
limit | integer Default: 200 Examples: Sets the limit of records returned, if not provided the limit will be 200, if a higher limit than 2500 is provided limit will be restricted at 2500, pagination should be used to retrieve subsequent pages of data. |
orderBy | string Enum: "id" "job_id" "version" "start_time" "end_time" "status" "trigger_type" "error_message" "error_log" The SQL,Database name of the field |
sortOrder | string DESC or ASC |
[- {
- "version": 0,
- "jobRunStartTime": "Oct 13, 2023 9:00:00 PM",
- "jobRunEndTime": "Oct 13, 2023 9:02:05 PM",
- "status": "success",
- "triggerType": "cron",
- "jobRunErrorMessage": "This job failed due to ...",
- "jobRunErrorLog": null
}
]
An API capability to support administration of application users.
User accounts are setup so people or processes can authenticate before using APIs.
Users are associated with an office in the organisation. The platform data-scoping feature will limit what users can see and do based on their assigned office.
Users can be associated with a staff e.g loan officers
For self-service functionality users can be associated with a client allowing that user to login and view their account details.
Returns all non-deleted users.
Permission: READ_USER
[- {
- "id": 4709,
- "username": "exampleuser@example.com",
- "firstname": "John",
- "lastname": "Smith",
- "email": "exampleuser@example.com",
- "isSelfServiceUser": false,
- "systemDefined": true,
- "isEnabled": true,
- "accountNonLocked": true,
- "passwordNeverExpires": false,
- "renewPasswordOnNextLogin": false,
- "officeId": 1,
- "officeName": "Head Office",
- "staff": {
- "id": 4709,
- "officeId": 1,
- "officeName": "Head Office",
- "userId": 0,
- "firstname": "John",
- "lastname": "Doe",
- "displayname": "John Doe",
- "mobileNo": "+353 78 90987877",
- "externalId": "name",
- "isLoanOfficer": true,
- "isActive": true,
- "joiningDate": [
- 2000,
- 1,
- 1
]
}, - "selectedRoles": {
- "id": 4709,
- "name": "SuperUser",
- "description": "Superadmin Role",
- "disabled": true,
- "systemDefined": true
}
}
]
Creates a new user account.
Permission: CREATE_USER
username required | string The username of the user. |
firstname required | string The first name of the user. |
lastname required | string The last name of the user. |
string The email of the user. | |
officeId required | integer <int64> The id of the office this user is associated with. |
staffId | integer <int64> The id of the staff member this user is associated with. A staff member can only be associated with one user. |
roles required | Array of integers An array of id's that indicate the roles that are to be assigned to this user. |
sendPasswordToEmail required | boolean Default: false If true, the password generated for the user will be emailed to the users provided |
passwordNeverExpires | boolean Default: false If true, the password will never expire for this user account. |
renewPasswordOnNextLogin | boolean Default: true If true, the user will be requested to change their password on next login. |
password | string The clear text password for the user account. see also |
repeatPassword | string The clear text password for the user account repeated. see also |
isEnabled | boolean Default: true Indicates if the user account is enabled or not. |
isSelfServiceUser | boolean Default: false Indicates if the user account is a "self service" account meaning that this user account is associated with a client. The client will be able to login using this account to check their details and perform self-service actions. |
sendPasswordToSelfServiceClients | boolean Default: false If |
clients | Array of integers If |
{- "username": "johnsmith123",
- "firstname": "John",
- "lastname": "Smith",
- "email": "johnsmith@example.com",
- "officeId": 1,
- "staffId": 1,
- "roles": [
- 1
], - "sendPasswordToEmail": false,
- "passwordNeverExpires": false,
- "renewPasswordOnNextLogin": true,
- "password": "mYFav4our1tPassw0rd",
- "repeatPassword": "mYFav4our1tPassw0rd",
- "isEnabled": true,
- "isSelfServiceUser": false,
- "sendPasswordToSelfServiceClients": false,
- "clients": [
- 1
]
}
{- "resourceId": 12
}
Find User by id
id required | integer <int64> Example: 1 The unique identifer of a user. |
[- {
- "id": 4709,
- "username": "exampleuser@example.com",
- "firstname": "John",
- "lastname": "Smith",
- "email": "exampleuser@example.com",
- "isSelfServiceUser": false,
- "systemDefined": true,
- "isEnabled": true,
- "accountNonLocked": true,
- "passwordNeverExpires": false,
- "renewPasswordOnNextLogin": false,
- "officeId": 1,
- "officeName": "Head Office",
- "staff": {
- "id": 4709,
- "officeId": 1,
- "officeName": "Head Office",
- "userId": 0,
- "firstname": "John",
- "lastname": "Doe",
- "displayname": "John Doe",
- "mobileNo": "+353 78 90987877",
- "externalId": "name",
- "isLoanOfficer": true,
- "isActive": true,
- "joiningDate": [
- 2000,
- 1,
- 1
]
}, - "selectedRoles": {
- "id": 4709,
- "name": "SuperUser",
- "description": "Superadmin Role",
- "disabled": true,
- "systemDefined": true
}
}
]
Support ability to update details of user account.
Note: When updating a password you must provide the repeatPassword parameter also.
id required | integer <int64> Example: 1 The unique identifer of a user. |
Update exisitng user
username required | string The username of the user. |
firstname required | string The first name of the user. |
lastname required | string The last name of the user. |
string The email of the user. | |
officeId required | integer <int64> The id of the office this user is associated with. |
staffId | integer <int64> The id of the staff member this user is associated with. A staff member can only be associated with one user. |
roles required | Array of integers An array of id's that indicate the roles that are to be assigned to this user. |
sendPasswordToEmail required | boolean Default: false If true, the password generated for the user will be emailed to the users provided |
passwordNeverExpires | boolean Default: false If true, the password will never expire for this user account. |
renewPasswordOnNextLogin | boolean Default: true If true, the user will be requested to change their password on next login. |
password | string The clear text password for the user account. see also |
repeatPassword | string The clear text password for the user account repeated. see also |
isEnabled | boolean Default: true Indicates if the user account is enabled or not. |
isSelfServiceUser | boolean Default: false Indicates if the user account is a "self service" account meaning that this user account is associated with a client. The client will be able to login using this account to check their details and perform self-service actions. |
sendPasswordToSelfServiceClients | boolean Default: false If |
clients | Array of integers If |
lockUser | boolean Default: true Used to lock or unlock an user account on update. |
{- "username": "johnsmith123",
- "firstname": "John",
- "lastname": "Smith",
- "email": "johnsmith@example.com",
- "officeId": 1,
- "staffId": 1,
- "roles": [
- 1
], - "sendPasswordToEmail": false,
- "passwordNeverExpires": false,
- "renewPasswordOnNextLogin": true,
- "password": "mYFav4our1tPassw0rd",
- "repeatPassword": "mYFav4our1tPassw0rd",
- "isEnabled": true,
- "isSelfServiceUser": false,
- "sendPasswordToSelfServiceClients": false,
- "clients": [
- 1
], - "lockUser": true
}
{- "resourceId": 1,
- "changes": { }
}
Supports multi-factor authentication (MFA) related commands on a user.
Note: MFA cannot be enabled on Client Users (users where isSelfServiceUser = true
)
id required | integer <int64> Example: 1 The unique identifer of a user. |
command required | string Enum: "enable-mfa" "disable-mfa" "expire-mfa" "reset-mfa" Example: command=disable The name of the command being performed. |
{- "resourceId": 1,
- "changes": { }
}
Performs a soft delete of the user.
Any requests to find this user or operate on the user will result in a 404 not found as the resource no longer exists.
id required | integer <int64> Example: 1 The unique identifer of a user. |
{- "resourceId": 1,
- "changes": { }
}
An API capability to support management of application roles for user administration.
Roles group together permissions. They are typically defined based on a persons role in a organisation or based on the functional access required.
List all Roles
activeRoleOnly | boolean Default: true Example: activeRoleOnly=true if true, returns all active roles |
[- {
- "id": 4709,
- "name": "SuperUser",
- "description": "Superadmin Role",
- "disabled": true,
- "systemDefined": true
}
]
Creates a new role which can then be updated with permissions.
name required | string The name of the role |
description required | string A more extensive description of the role. |
{- "name": "My Role",
- "description": "A more extensive description of the role"
}
{- "resourceId": 12
}
Find Role member by id
id required | integer <int64> Example: 1 The unique identifer of a role. |
[- {
- "id": 4709,
- "name": "SuperUser",
- "description": "Superadmin Role",
- "disabled": true,
- "systemDefined": true
}
]
Supports the ability to update role details.
id required | integer <int64> Example: 1 The unique identifer of a role. |
Update exisitng Role
name required | string The name of the role |
description required | string A more extensive description of the role. |
{- "name": "My Role",
- "description": "A more extensive description of the role"
}
{- "resourceId": 1,
- "changes": { }
}
Supports enable and disable commands on a role
id required | integer <int64> Example: 1 The unique identifer of a role. |
command required | string Enum: "disable" "enable" Example: command=disable The name of the command being performed. |
{- "resourceId": 1,
- "changes": { }
}
Will perform hard delete of the role unless it is associated with any users.
id required | integer <int64> Example: 1 The unique identifer of a role. |
{- "resourceId": 1,
- "changes": { }
}
List permissions assocatied with role
id required | integer <int64> Example: 1 The unique identifer of a role. |
[- {
- "id": 4709,
- "name": "SuperUser",
- "description": "Superadmin Role",
- "disabled": true,
- "systemDefined": true,
- "permissionUsageData": {
- "grouping": "SuperUser",
- "code": "CREATE_USER",
- "entityName": "USER",
- "actionName": "CREATE",
- "selected": true
}
}
]
The ability to be able to update what permissions are associated with this role.
id required | integer <int64> Example: 1 The unique identifer of a role. |
Update role permissions
permissions required | object A map where the key is a valid permission The first entry of the array indicates if permission is enabled or not. The second entry is an id of a product grouping. |
{- "permissions": {
- "CREATE_USER": [
- true,
- null
]
}
}
{- "resourceId": 1,
- "changes": { }
}
An API capability to support management of application permissions for user administration.
Permissions come pre-installed as they are directly related to APIs. In order to be authorized to call an API a user must have its associated permission.
Note: We do not directly expose APIs for creation or deletion of permissions.
The update of a permissions is only in place to support the enabling or disabling of Maker-Checker functionality for command related (state changing) APIs.
If makerCheckerable=false
or not supplied then a list of permissions is returned. The selected
attribute is always true in this case.
If makerCheckerable=true
then returns all permissions that can be enabled for maker-checker (which excludes read permissions or special permissions). The selected
attribute shows whether the permission is enabled for Maker-Checker.
Note: Each Musoni transaction is associated with a permission.
makerCheckerable | boolean Default: false Example: makerCheckerable=false boolean to indicate what way to list permissions |
[- {
- "grouping": "SuperUser",
- "code": "CREATE_USER",
- "entityName": "USER",
- "actionName": "CREATE",
- "selected": true
}
]
Allows permissions to be updated to enable/disable maker-checker for them.
Allows permissions to be updated to enable/disable maker-checker for them.
permissions required | object A map where the key is a valid permission |
{- "permissions": {
- "CREATE_USER": true
}
}
{- "resourceId": 1,
- "changes": { }
}
This API enables management of password policy for user administration.
There is no Musoni functionality for creating a validation policy. The validation policies come pre-installed.
Validation policies may be updated
Lists all the active system validation policies.
{- "id": 4709,
- "description": "Password must be at least 1 character and not more that 50 characters long",
- "active": true,
- "activeSelfservice": true,
- "key": "simple",
- "regex": "^.{1,50}$"
}
The ability to update the selected active validation policy for user accounts.
validationPolicyId required | int64 The id of the validation policy which you wish to set as the active policy. |
isSelfService | boolean Default: false If true, this updated will be for self-services users valiation policy. |
{- "validationPolicyId": 1234,
- "isSelfService": false
}
{- "resourceId": 1,
- "changes": { }
}
Lists all system validation policies.
[- {
- "id": 4709,
- "description": "Password must be at least 1 character and not more that 50 characters long",
- "active": true,
- "activeSelfservice": true,
- "key": "simple",
- "regex": "^.{1,50}$"
}
]