11730 lines
337 KiB
HTML
11730 lines
337 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
|
<link rel="stylesheet" href="apidocs.css" type="text/css" media="screen"
|
|
title="Mifos X API Docs" charset="utf-8" />
|
|
<script type="text/javascript" src="jquery-1.7.min.js"></script>
|
|
<title>Mifos X API Documentation</title>
|
|
|
|
<script>
|
|
QueryParameters = (function() {
|
|
var result = {};
|
|
if (window.location.search) {
|
|
// split up the query string and store in an associative array
|
|
var params = window.location.search.slice(1).split("&");
|
|
for ( var i = 0; i < params.length; i++) {
|
|
var tmp = params[i].split("=");
|
|
result[tmp[0]] = unescape(tmp[1]);
|
|
}
|
|
}
|
|
return result;
|
|
}());
|
|
|
|
getLocation = function(href) {
|
|
var l = document.createElement("a");
|
|
l.href = href;
|
|
return l;
|
|
};
|
|
|
|
baseURL = "";
|
|
defQueryParams = "tenantIdentifier=default&pretty=true";
|
|
|
|
function clickAPILink(apiLink) {
|
|
var currentLink = baseURL + apiLink;
|
|
if (apiLink.indexOf("?") < 0)
|
|
currentLink += "?" + defQueryParams;
|
|
else
|
|
currentLink += "&" + defQueryParams;
|
|
|
|
if ((/MSIE (\d+\.\d+);/.test(navigator.userAgent))
|
|
|| (apiLink.indexOf("exportCSV") > -1)
|
|
|| (apiLink.indexOf("type=CSV") > -1)
|
|
|| (apiLink.indexOf("type=XLS") > -1)) { // test for MSIE (not a great browser for the api docs anyhow) or a file download
|
|
location.href = currentLink;
|
|
} else
|
|
window.open(currentLink);
|
|
}
|
|
|
|
function clickAPILinkNotPretty(apiLink) {
|
|
var fixedQueryParams = "tenantIdentifier=default";
|
|
var currentLink = baseURL + apiLink;
|
|
if (apiLink.indexOf("?") < 0)
|
|
currentLink += "?" + fixedQueryParams;
|
|
else
|
|
currentLink += "&" + fixedQueryParams;
|
|
|
|
if ((/MSIE (\d+\.\d+);/.test(navigator.userAgent))
|
|
|| (apiLink.indexOf("exportCSV") > -1)
|
|
|| (apiLink.indexOf("type=CSV") > -1)
|
|
|| (apiLink.indexOf("type=XLS") > -1)) { // test for MSIE (not a great browser for the api docs anyhow) or a file download
|
|
location.href = currentLink;
|
|
} else
|
|
window.open(currentLink);
|
|
}
|
|
|
|
function getBaseURL(docURL) {
|
|
var localhostUrl = "https://localhost:8443/mifosng-provider/api/v1/";
|
|
var openmfDemoUrl = "/mifosng-provider/api/v1/";
|
|
|
|
var baseUrl = "";
|
|
|
|
if (docURL.substring(0, 4).toLowerCase() == "http") {
|
|
var l = getLocation(docURL);
|
|
|
|
if (l.hostname == "demo.openmf.org") {
|
|
baseUrl = openmfDemoUrl;
|
|
} else {
|
|
baseUrl = "https://" + l.hostname
|
|
+ ":8443/mifosng-provider/api/v1/"
|
|
}
|
|
} else {
|
|
//assume running locally
|
|
baseUrl = localhostUrl;
|
|
}
|
|
|
|
return baseUrl;
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="page-wrapper">
|
|
<div id="flybar">
|
|
<div id=nav-logo>API MENU</div>
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Overview</h2>
|
|
<div class="flybar-menu-overview">
|
|
<div class="toc-column1">
|
|
<div class="toc-section">
|
|
<ul>
|
|
<li><a href="#top">Mifos X API Documentation</a></li>
|
|
<li><a href="#interact">Try The API From Your Browser</a></li>
|
|
<li><a href="#genopts">Generic Options</a></li>
|
|
<li><a href="#creates_and_updates">Creating and
|
|
Updating</a></li>
|
|
<li><a href="#dates_and_numbers">Updating Dates and
|
|
Numbers</a></li>
|
|
<li><a href="#field_descriptions">Field Descriptions</a></li>
|
|
<li><a href="#authentication_overview">Authentication
|
|
Overview</a></li>
|
|
<li><a href="#errors">Errors</a></li>
|
|
<li><a href="#fullapi_matrix">Full API Matrix</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Client</h2>
|
|
<div id="toc-menu-client" class="flybar-menu">
|
|
<div class="tocMatrix">
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">POST</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>create/complex
|
|
update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">PUT</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">DELETE</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>delete</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#clients">CLIENT</a></td>
|
|
<td>clients</td>
|
|
<td><a href="#clients_create">Create a Client</a></td>
|
|
<td><a href="#clients_list">List Clients</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>clients/{clientId}</td>
|
|
<td></td>
|
|
<td><a href="#clients_retrieve">Retrieve a Client</a></td>
|
|
<td><a href="#clients_update">Update a Client</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>clients/{clientId}/loans</td>
|
|
<td></td>
|
|
<td><a href="#clients_loansummary">Retrieve a Client's
|
|
Loan Account Summary</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#client_identifiers">Client Identifiers</a></td>
|
|
<td>clients/{clientId}/identifiers</td>
|
|
<td><a href="#client_identifiers_create">Create an Identifier for a Client</a></td>
|
|
<td><a href="#client_identifiers_list">List all Identifiers for a Client</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>clients/{clientId}/identifiers/{identifierId}</td>
|
|
<td></td>
|
|
<td><a href="#client_identifiers_retrieve">Retrieve a Client Identifier</a></td>
|
|
<td><a href="#client_identifiers_update">Update a Client Identifier</a></td>
|
|
<td><a href="#client_identifiers_delete">Delete a Client Identifier</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#client_images">Client Images</a></td>
|
|
<td>clients/{clientId}/images</td>
|
|
<td><a href="#client_images_create">Upload an Image for a Client (as DATA URI)</a></td>
|
|
<td><a href="#client_images_retrieve">Get Client Image (DATA URI)</a></td>
|
|
<td><a href="#client_images_update">Update Client Image (DATA URI)</a></td>
|
|
<td><a href="#client_images_delete">Delete Client Image</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td></td>
|
|
<td><a href="#client_images_create_form">
|
|
Upload an Image for a Client (Multi-part form data)</a>
|
|
</td>
|
|
<td><a href="#client_images_retrieve_binary">Get Client Image (Binary file)</a></td>
|
|
<td><a href="#client_images_update_form">
|
|
Update Client Image (Multi-part form data)</a>
|
|
</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Group</h2>
|
|
<div id="toc-menu-client" class="flybar-menu">
|
|
<div class="tocMatrix">
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">POST</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>create/complex
|
|
update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">PUT</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">DELETE</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>delete</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#groups">GROUP</a></td>
|
|
<td>groups</td>
|
|
<td><a href="#groups_create">Create a Group</a></td>
|
|
<td><a href="#groups_list">List Groups</a></td>
|
|
<td></td>
|
|
<td><a href="#groups_delete">Delete a Group</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>groups/{group}</td>
|
|
<td></td>
|
|
<td><a href="#groups_retrieve">Retrieve a Group</a></td>
|
|
<td><a href="#groups_update">Update a Group</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>groups/{group}/loans</td>
|
|
<td></td>
|
|
<td><a href="#groups_loansummary">Retrieve a Group's
|
|
Loan Account Summary</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>groups/{group}/command/assign_loanofficer</td>
|
|
<td><a href="#groups_assignlo">Assign a Loan Officer</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>groups/{group}/command/unassign_loanofficer</td>
|
|
<td><a href="#groups_unassign_lo">Unassign a Loan Officer</a></td>
|
|
<td></a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Loan</h2>
|
|
<div id="toc-menu-loan" class="flybar-menu">
|
|
<div class="tocMatrix">
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">POST</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>create/complex
|
|
update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">PUT</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">DELETE</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>delete</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#loans">Loans</a></td>
|
|
<td>loans?calculateLoanSchedule</td>
|
|
<td><a href="#loans_calculate">Calculate Loan Repayment Schedule</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans</td>
|
|
<td><a href="#loans_create">Submit a new Loan Application</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}</td>
|
|
<td></td>
|
|
<td><a href="#loans_retrieve">Retrieve a Loan</a></td>
|
|
<td></td>
|
|
<td><a href="#loans_delete">Delete a Loan Application</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}?command=approve</td>
|
|
<td><a href="#loans_approve">Approve Loan Application</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}?command=undoApproval</td>
|
|
<td><a href="#loans_approve_undo">Undo Loan Application Approval</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}?command=reject</td>
|
|
<td><a href="#loans_reject">Reject Loan Application</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}?command=withdraw</td>
|
|
<td><a href="#loans_withdraw">Withdraw Loan Application</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}?command=disburse</td>
|
|
<td><a href="#loans_disburse">Disburse Loan</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}?command=undoDisbursal</td>
|
|
<td><a href="#loans_disburse_undo">Undo Loan Application Disbursal</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#loans_transactions">Loan Transactions</a></td>
|
|
<td>loans/{loanId}/transactions?command=repayment</td>
|
|
<td><a href="#loans_transaction_repayment">Enter a repayment</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}/transactions?command=waiveInterest</td>
|
|
<td><a href="#loans_transaction_waiveinterest">Waive Interest</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}/transactions/{transactionId}</td>
|
|
<td></td>
|
|
<td><a href="#loans_transaction_retrieve">Retrieve a transactions details</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}/transactions/{transactionId}</td>
|
|
<td><a href="#loans_transaction_adjust">Adjust a Transaction</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#guarantors">Loan Guarantors</a></td>
|
|
<td>loans/{loanId}/guarantors</td>
|
|
<td><a href="#guarantors_create">Create a Guarantor
|
|
</a></td>
|
|
<td><a href="#guarantors_list">List Guarantors
|
|
</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}/guarantors/{guarantorId}</td>
|
|
<td></td>
|
|
<td><a href="#guarantors_retrieve">Retrieve a Guarantor</a></td>
|
|
<td><a href="#guarantors_update">Update a Guarantor</a></td>
|
|
<td><a href="#guarantors_delete">Delete a Guarantor</a></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Org</h2>
|
|
<div id="toc-menu-org" class="flybar-menu">
|
|
<div class="tocMatrix">
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">POST</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>create/complex
|
|
update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">PUT</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">DELETE</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>delete</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#offices">OFFICE</a></td>
|
|
<td>offices</td>
|
|
<td><a href="#offices_create">Create an Office</a></td>
|
|
<td><a href="#offices_list">List Offices</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>offices/{officeId}</td>
|
|
<td></td>
|
|
<td><a href="#offices_retrieve">Retrieve an Office</a></td>
|
|
<td><a href="#offices_update">Update an Office</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#loanproducts">LOAN PRODUCT</a></td>
|
|
<td>loanproducts</td>
|
|
<td><a href="#loanproducts_create">Create a Loan
|
|
Product</a></td>
|
|
<td><a href="#loanproducts_list">List Loan Products</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loanproducts/{productId}</td>
|
|
<td></td>
|
|
<td><a href="#loanproducts_retrieve">Retrieve a Loan
|
|
Product</a></td>
|
|
<td><a href="#loanproducts_update">Update a Loan
|
|
Product</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#configs">CURRENCY</a></td>
|
|
<td>currencies</td>
|
|
<td></td>
|
|
<td><a href="#configs_currencyretrieve">Retrieve
|
|
Currency Configuration</a></td>
|
|
<td><a href="#configs_currencyupdate">Update Currency
|
|
Configuration</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#funds">FUNDS</a></td>
|
|
<td>funds</td>
|
|
<td><a href="#funds_create">Create a Fund</a></td>
|
|
<td><a href="#funds_retrieve">List Funds</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>funds/{fundId}</td>
|
|
<td></td>
|
|
<td><a href="#fund_retrieve">Retrieve a Fund</a></td>
|
|
<td><a href="#fund_update">Update a Fund</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#staff">STAFF</a></td>
|
|
<td>staff</td>
|
|
<td><a href="#staff_create">Create a Staff</a></td>
|
|
<td><a href="#staff_list">List Staff</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>staff/{staffId}</td>
|
|
<td></td>
|
|
<td><a href="#staff_retrieve">Retrieve a Staff Member</a></td>
|
|
<td><a href="#staff_update">Update a Staff Member</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#charges">CHARGES</a></td>
|
|
<td>charges</td>
|
|
<td><a href="#charges_create">Create a Charge</a></td>
|
|
<td><a href="#charges_list">List Charges</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>charges/{chargeId}</td>
|
|
<td></td>
|
|
<td><a href="#charges_retrieve">Retrieve a Charge</a></td>
|
|
<td><a href="#charges_update">Update a Charge</a></td>
|
|
<td><a href="#charges_delete">Delete a Charge</a></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">System</h2>
|
|
<div id="toc-menu-system" class="flybar-menu">
|
|
<div class="tocMatrix">
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">POST</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>create/complex
|
|
update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">PUT</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">DELETE</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>delete</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#configs_global">GLOBAL CONFIGURATION</a></td>
|
|
<td>configurations</td>
|
|
<td></td>
|
|
<td><a href="#configs_globalconfig_retrieve">Retrieve
|
|
Global Configuration</a></td>
|
|
<td><a href="#configs_globalconfig_update">Update
|
|
Global Configuration</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#configs_codes">CODES</a></td>
|
|
<td>codes</td>
|
|
<td><a href="#configs_codes_create">Create a Code</a></td>
|
|
<td><a href="#configs_codes_retrieve">List Codes</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>codes/{codeId}</td>
|
|
<td></td>
|
|
<td><a href="#configs_code_retrieve">Retrieve a Code</a></td>
|
|
<td><a href="#configs_code_update">Update a Code</a></td>
|
|
<td><a href="#configs_code_delete">Delete a Code</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#configs_codes_codevalues">CODE VALUES</a></td>
|
|
<td>codes/{codeId}/codevalues</td>
|
|
<td><a href="#configs_codes_codevalues_create">Create a Code Value</a></td>
|
|
<td><a href="#configs_codes_codevalues_list">List Code Values</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>codes/{codeId}/codevalues/{codevalueId}</td>
|
|
<td></td>
|
|
<td><a href="#configs_codes_codevalues_retrieve">Retrieve a Code Value</a></td>
|
|
<td><a href="#configs_codes_codevalues_update">Update a Code Value</a></td>
|
|
<td><a href="#configs_codes_codevalues_delete">Delete a Code Value</a></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Non-Core</h2>
|
|
<div id="toc-menu-noncore" class="flybar-menu">
|
|
<div class="tocMatrix">
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">POST</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>create/complex
|
|
update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">PUT</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">DELETE</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>delete</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#datatables">DATA TABLE</a></td>
|
|
<td>datatables</td>
|
|
<td></td>
|
|
<td><a href="#datatables_list">List Data Tables</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>datatables/register/{datatable}/{apptable}</td>
|
|
<td><a href="#datatables_register">Register Data Table</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>datatables/deregister/{datatable}</td>
|
|
<td><a href="#datatables_deregister">Deregister Data
|
|
Table</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>datatables/{datatable}/{apptableId}</td>
|
|
<td><a href="#datatables_create">Create Entry in Data
|
|
Table</a></td>
|
|
<td><a href="#datatables_retrieve">Retrieve Entry(s)
|
|
from Data Table</a></td>
|
|
<td><a href="#datatables_update">Update Entry in Data
|
|
Table (One to One)</a></td>
|
|
<td><a href="#datatables_delete">Delete Entry(s) in
|
|
Data Table</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>datatables/{datatable}/{apptableId}/{datatableId}</td>
|
|
<td></td>
|
|
<td><a href="#datatables_update_1M">Update Entry in
|
|
Data Table (One to Many)</a></td>
|
|
<td></td>
|
|
<td><a href="#datatables_delete_1M">Delete Entry in
|
|
Data Table (One to Many)</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#notes">NOTES</a></td>
|
|
<td>{resource}/{resourceId}/notes</td>
|
|
<td><a href="#resources_addnote">Add a Resource Note</td>
|
|
<td><a href="#resource_notelist">Retrieve a Resource's Notes</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>{resource}/{resourceId}/notes/{noteId}</td>
|
|
<td></td>
|
|
<td><a href="#resources_retrievenote">List All
|
|
Notes for a Resource</a></td>
|
|
<td><a href="#resources_updatenote">Update a Resource Note</a></td>
|
|
<td><a href="#resources_deletenote">Delete a Resource Note</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#documents">Documents</a></td>
|
|
<td>{entityType}/{entityId}/documents</td>
|
|
<td><a href="#documents_create">Create a Document</td>
|
|
<td><a href="#documents_list">List All Document Details</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>{entityType}/{entityId}/documents/{documentId}</td>
|
|
<td></td>
|
|
<td><a href="#documents_retrieve">Retrieve a Documents Details</a></td>
|
|
<td><a href="#documents_update">Update a Document</a></td>
|
|
<td><a href="#documents_delete">Delete a Document</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>{entityType}/{entityId}/documents/{documentId}/attachment</td>
|
|
<td></td>
|
|
<td><a href="#documents_retrieve_file">Retrieve
|
|
binary file associated with a
|
|
Document</a>
|
|
</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Report</h2>
|
|
<div id="toc-menu-report" class="flybar-menu">
|
|
<div class="tocMatrix">
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">POST</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>create/complex
|
|
update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">PUT</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">DELETE</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>delete</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#reports">REPORT</a></td>
|
|
<td>reports</td>
|
|
<td></td>
|
|
<td><a href="#reports_list">List Reports</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>reports/{reportName}</td>
|
|
<td></td>
|
|
<td><a href="#report_run">Run a Report</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">User</h2>
|
|
<div id="toc-menu-user" class="flybar-menu">
|
|
<div class="tocMatrix">
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">POST</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>create/complex
|
|
update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">PUT</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">DELETE</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>delete</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#authentication">AUTHENTICATION</a></td>
|
|
<td>authentication</td>
|
|
<td><a href="#authenticate_request">Verify Authentication</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#users">USER</a></td>
|
|
<td>users</td>
|
|
<td><a href="#users_create">Create a User</a></td>
|
|
<td><a href="#users_list">List Users</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>users/{userId}</td>
|
|
<td></td>
|
|
<td><a href="#users_retrieve">Retrieve a User</a></td>
|
|
<td><a href="#users_update">Update a User</a></td>
|
|
<td><a href="#users_delete">Delete a User</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#roles">ROLE</a></td>
|
|
<td>roles</td>
|
|
<td><a href="#roles_create">Create a New Role</a></td>
|
|
<td><a href="#roles_list">List Roles</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>roles/{roleId}</td>
|
|
<td></td>
|
|
<td><a href="#roles_retrieve">Retrieve a Role</a></td>
|
|
<td><a href="#roles_update">Update a Role</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>roles/{roleId}/permissions</td>
|
|
<td></td>
|
|
<td><a href="#rolespermissions_retrieve">Retrieve a
|
|
Role's Permissions</a></td>
|
|
<td><a href="#rolespermissions_update">Update a Role's
|
|
Permissions</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#permissions">PERMISSION</a></td>
|
|
<td>permissions</td>
|
|
<td></td>
|
|
<td><a href="#permissions_list">List Application
|
|
Permissions</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Template</h2>
|
|
<div id="toc-menu-template" class="flybar-menu">
|
|
<div class="tocMatrix">
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>clients/template</td>
|
|
<td><a href="#clients_template">Retrieve Client Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>loanproducts/template</td>
|
|
<td><a href="#loanproducts_template">Retrieve Loan Product Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>loans/template?clientId={clientId}</td>
|
|
<td><a href="#loans_template">Retrieve Loan Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>loans/{loanId}/transactions/template</td>
|
|
<td><a href="#loans_repaymenttemplate_etc">Retrieve Loan Transaction Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>savingproducts/template</td>
|
|
<td><a href="#savingsproducts_template">Retrieve Savings Product Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>savingsaccounts/template?clientId={clientId}</td>
|
|
<td><a href="#savingsaccounts_template">Retrieve Savings Account Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>offices/template</td>
|
|
<td><a href="#offices_template">Retrieve Office Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>users/template</td>
|
|
<td><a href="#users_template">Retrieve User Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>audit/searchtemplate</td>
|
|
<td><a href="#audit_searchtemplate">Retrieve Audit Search Data</a></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Accounting</h2>
|
|
<div id="toc-menu-group" class="flybar-menu">
|
|
<div class="tocMatrix">
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">POST</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>create/complex
|
|
update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">PUT</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">DELETE</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>delete</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#glaccounts">General Ledger Account</a></td>
|
|
<td>glaccounts</td>
|
|
<td><a href="#glaccounts_create">Create a New Ledger Account</a></td>
|
|
<td><a href="#glaccounts_list">List Ledger Accounts</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>glaccounts/{glaccountId}</td>
|
|
<td></td>
|
|
<td><a href="#glaccounts_retrieve">Retrieve a Ledger Account</a></td>
|
|
<td><a href="#glaccounts_update">Update a Ledger Account</a></td>
|
|
<td><a href="#glaccounts_delete">Delete a Ledger Account</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#glclosures">Accounting Closure</a></td>
|
|
<td>glclosures</td>
|
|
<td><a href="#glclosures_create">Create an Accounting Closure</a></td>
|
|
<td><a href="#glclosures_list">List Accounting Closures</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>glclosures/{glclosureId}</td>
|
|
<td></td>
|
|
<td><a href="#glclosures_retrieve">Retrieve an Accounting Closure</a></td>
|
|
<td><a href="#glclosures_update">Update an Accounting Closure</a></td>
|
|
<td><a href="#glclosures_delete">Delete an Accounting Closure</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#journalentries">Journal Entries</a></td>
|
|
<td>journalentries</td>
|
|
<td><a href="#journalentries_create">Create Journal Entries</a></td>
|
|
<td><a href="#journalentries_list">List Journal Entries</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>journalentries/{entryId}</td>
|
|
<td></td>
|
|
<td><a href="#journalentries_retrieve">Retrieve a single Entry</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>journalentries/{transactionId}/reversal</td>
|
|
<td><a href="#journalentries_reverse">Reverse Journal Entries</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
<div id="main-content-wrapper">
|
|
<a id="top" name="top" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Mifos X API Documentation</h3>
|
|
<p>Mifos X is a secure, multi-tenanted microfinance platform.</p>
|
|
<p>
|
|
The goal of the Mifos X API is to empower developers to build apps
|
|
on top of the Mifos X Platform. The <a
|
|
href="https://demo.openmf.org" target="_blank">reference app</a>
|
|
(username: mifos, password: password) works on the same demo
|
|
'tenant' as the interactive links in this documentation.
|
|
</p>
|
|
<p>
|
|
The API is organized around <a
|
|
href="http://en.wikipedia.org/wiki/Representational_State_Transfer"
|
|
target="_blank">REST</a>.
|
|
</p>
|
|
<p>
|
|
The API is designed to have: <br> - predictable,
|
|
resource-oriented URLs<br> - to use HTTP response codes to
|
|
indicate API errors<br> - to use built-in HTTP features, like
|
|
HTTP authentication and HTTP verbs, which can be understood by
|
|
off-the-shelf HTTP clients.
|
|
</p>
|
|
<p>
|
|
<a href="http://www.json.org/" target="_blank">JSON</a> is
|
|
returned in all responses from the API, including errors.
|
|
</p>
|
|
<p>
|
|
Much of the API presentation and design ideas are owed to the
|
|
excellent <a
|
|
href="http://info.apigee.com/Portals/62317/docs/web%20api.pdf"
|
|
target="_blank">Apigee "Web API Design" eBook/PDF</a> and the
|
|
very good <a href="https://stripe.com/docs/api" target="_blank">Stripe
|
|
API reference</a>.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="interact" name="interact" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Try The API From Your Browser</h3>
|
|
<p>GET (read) examples can be run directly from this
|
|
documentation. It is just a matter of clicking a link. Most
|
|
browsers display the output on the same page (or another tab if
|
|
you right click and select that option). Internet Explorer will
|
|
probably treat the output as if you wanted to download a file. In
|
|
that case just elect to open the output in a text editor.</p>
|
|
<p>
|
|
If you want to check out the POST, PUT and DELETE (update)
|
|
examples a good approach is to take a moment to install a REST
|
|
plugin for your browser e.g. <a
|
|
href="https://addons.mozilla.org/en-US/firefox/addon/restclient/"
|
|
target="_blank">RESTClient</a> for FireFox
|
|
</p>
|
|
The REST plugins will allow you to
|
|
<ul>
|
|
<li class=normalli>Select the "Verb" (e.g. POST)</li>
|
|
<li class=normalli>Enter the resource name (e.g. offices)</li>
|
|
<li class=normalli>Add a header to indicate you are sending
|
|
JSON data as part of the request body (Content-Type:
|
|
application/json)</li>
|
|
<li class=normalli>Add a header to indicate your 'tenant'
|
|
(X-Mifos-Platform-TenantId: default)</li>
|
|
<li class=normalli>Paste the example JSON into a Request Body</li>
|
|
<li class=normalli>Send the Request (and receive a Response)</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="genopts" name="genopts" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Generic Options</h3>
|
|
<h4>Convenience Templates</h4>
|
|
<p>There are a list of convenience resources (see Template
|
|
menu option). These resources end with "/template" and can be
|
|
useful when building maintenance user interface screens for client
|
|
applications. The template data returned may consist of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<p>
|
|
Also, many "Retrieve a" type resources (<a
|
|
href="#clients_retrieve">Retrieve a Client</a> for example) allow
|
|
the parameter option "template=true". This appends any "Allowed
|
|
Value Lists" which can be useful when building update
|
|
functionality.
|
|
</p>
|
|
|
|
<h4>Restrict Returned Fields</h4>
|
|
<p>Parameter "fields={fieldlist}" can be used on GET requests
|
|
to restrict the fields returned.</p>
|
|
<p>Normal Request:</p>
|
|
<div class=apiClickNotPretty>offices/1</div>
|
|
<p></p>
|
|
<p>Request (restricting fields returned):</p>
|
|
<div class=apiClick>offices/1?fields=id,name</div>
|
|
<p></p>
|
|
<h4>Pretty JSON Formatting</h4>
|
|
<p>Parameter "pretty=true" can be used to display JSON from GET
|
|
requests in an easy-to-read format. This parameter is used in this
|
|
documentation.</p>
|
|
<p>Easy-to-read JSON output for POSTs, PUTs and DELETEs will
|
|
available in the REST plugin you use e.g. RESTClient for FireFox</p>
|
|
<p>Normal Request (with pretty printing/formatting):</p>
|
|
<div class=apiClick>offices/1?pretty=true</div>
|
|
<p></p>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<a id="creates_and_updates" name="creates_and_updates"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Creating and Updating</h3>
|
|
<p>When you want to 'Create a ...' you have to at least supply
|
|
the mandatory fields. The mandatory fields are listed in this
|
|
documentation under the relevant 'Create a ...' heading.</p>
|
|
|
|
<p>When you want to 'Update a ...' you can update individual
|
|
fields or a combination of fields (subject to data integrity
|
|
rules).</p>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<a id="dates_and_numbers" name="dates_and_numbers"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Updating Dates and Numbers</h3>
|
|
<h4>Dates</h4>
|
|
<p>
|
|
Dates are returned in GET requests as an array e.g. [ 2007, 4,
|
|
11]. However, the API accepts them as strings in POST and PUT
|
|
requests. If there are any dates in your POST or PUT requests, you
|
|
need to provide the "locale" and "dateFormat". This can be any
|
|
date pattern supported by <a
|
|
href="http://joda-time.sourceforge.net/api-release/org/joda/time/format/DateTimeFormat.html">Joda-Time</a>.
|
|
This capability can help you when saving data in your client
|
|
application as you shouldn't need to do any date format conversion
|
|
prior to issuing your POST or PUT request.
|
|
</p>
|
|
<code>JSON examples:
|
|
{
|
|
"locale": "en_US",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"openingDate": "01 July 2007"
|
|
}
|
|
|
|
{
|
|
"locale": "en_US",
|
|
"dateFormat": "yyyy-MM-dd",
|
|
"openingDate": "2007-03-21"
|
|
}
|
|
</code>
|
|
<h4>Numbers</h4>
|
|
<p>You must provide a "locale" when updating numbers. Numbers
|
|
are not "Ids" or "Types" but are typically money amounts or
|
|
percentages that relate to loans. In any case, the API will send
|
|
back an error message if you forget.</p>
|
|
<code>JSON examples:
|
|
{
|
|
"locale": "en_US",
|
|
"principal": "240,400.88"
|
|
}
|
|
{
|
|
"locale": "fr_CH",
|
|
"principal": "240 400.88"
|
|
}
|
|
</code>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<a id="field_descriptions" name="field_descriptions"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Field Descriptions</h3>
|
|
<p>
|
|
Most fields are self-explanatory. Fields that aren't are described
|
|
under the relevant resource heading e.g. <a href="#authentication">AUTHENTICATION</a>
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<a id="authentication_overview" name="authentication_overview"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Authentication Overview</h3>
|
|
<p>
|
|
Authentication to the API occurs via <a
|
|
href="http://en.wikipedia.org/wiki/Basic_access_authentication">HTTP
|
|
Basic Auth</a>.
|
|
</p>
|
|
|
|
<p>
|
|
The platform has been configured to reject plain HTTP requests and
|
|
to expect all API requests to be made over <a
|
|
href="http://en.wikipedia.org/wiki/HTTP_Secure">HTTPS</a>. All
|
|
requests must be authenticated.
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code>
|
|
// A Javascript/Jquery example of how to login to Mifos X and use its api.
|
|
// Typically, the javascript application would
|
|
// 1) Display a login page to retrieve the username and password.
|
|
// 2) Send the username and password to a function
|
|
// such as setBasicAuthKey below which sets the HTTP Basic Auth key.
|
|
// 3) The HTTP Basic Auth key is used in all subsequent requests
|
|
// (see the function executeAjaxRequest below).
|
|
|
|
function setBasicAuthKey(username, password) {
|
|
|
|
var jqxhr = $.ajax({
|
|
url : "authentication?username=" + username + "&password=" + password,
|
|
type : 'POST',
|
|
contentType : "application/json; charset=utf-8",
|
|
dataType : 'json',
|
|
data : "{}",
|
|
cache : false,
|
|
success : function(data, textStatus, jqXHR) {
|
|
basicAuthKey = data.base64EncodedAuthenticationKey;
|
|
},
|
|
error : function(jqXHR, textStatus, errorThrown) {
|
|
//error processing
|
|
}
|
|
});
|
|
}
|
|
|
|
function executeAjaxRequest(url, verbType, jsonData, basicAuthKey, successFunction, errorFunction) {
|
|
var jqxhr = $.ajax({
|
|
url : url,
|
|
type : verbType, //POST, GET, PUT or DELETE
|
|
contentType : "application/json; charset=utf-8",
|
|
dataType : 'json',
|
|
data : jsonData,
|
|
cache : false,
|
|
beforeSend : function(xhr) {
|
|
xhr.setRequestHeader("Authorization", "Basic " + basicAuthKey);
|
|
},
|
|
success : successFunction,
|
|
error : errorFunction
|
|
});
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="errors" name="errors" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Errors</h3>
|
|
|
|
<p>All errors are returned in JSON.</p>
|
|
|
|
</div>
|
|
<div class="method-example">
|
|
<h6>HTTP Status Code Summary</h6>
|
|
<ul>
|
|
<li><strong>200</strong> OK - Everything Worked.</li>
|
|
<li><strong>400</strong> Bad Request - Invalid Parameter or
|
|
Data Integrity Issue.</li>
|
|
<li><strong>401</strong> Authentication Error.</li>
|
|
<li><strong>403</strong> Unauthorized Request.</li>
|
|
<li><strong>404</strong> Resource Not Found</li>
|
|
<li><strong>500</strong> Platform Internal Server Error.</li>
|
|
</ul>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-response">
|
|
<b>Error Message returned when attempting to create an Office without passing any parameters</b>
|
|
{
|
|
"developerMessage": "The request was invalid. This typically will happen due to validation errors which are provided.",
|
|
"developerDocLink": "https://github.com/keithwoodlock/mifosx/wiki/HTTP-API-Error-codes",
|
|
"httpStatusCode": "400",
|
|
"defaultUserMessage": "Validation errors exist.",
|
|
"userMessageGlobalisationCode": "validation.msg.validation.errors.exist",
|
|
"errors": [
|
|
{
|
|
"developerMessage": "The parameter name cannot be blank.",
|
|
"defaultUserMessage": "The parameter name cannot be blank.",
|
|
"userMessageGlobalisationCode": "validation.msg.office.name.cannot.be.blank",
|
|
"parameterName": "name",
|
|
"value": null,
|
|
"args": []
|
|
},
|
|
{
|
|
"developerMessage": "The parameter openingDate cannot be blank.",
|
|
"defaultUserMessage": "The parameter openingDate cannot be blank.",
|
|
"userMessageGlobalisationCode": "validation.msg.office.openingDate.cannot.be.blank",
|
|
"parameterName": "openingDate", "value": null, "args": []
|
|
},
|
|
{
|
|
"developerMessage": "The parameter parentId cannot be blank.",
|
|
"defaultUserMessage": "The parameter parentId cannot be blank.",
|
|
"userMessageGlobalisationCode":
|
|
"validation.msg.office.parentId.cannot.be.blank", "parameterName":
|
|
"parentId", "value": null, "args": []
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- start of clients api docs -->
|
|
<a id="clients" name="clients" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Clients</h3>
|
|
<p>Clients are people and businesses that have applied (or may
|
|
apply) to an MFI for loans.</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>accountNo</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>If provided during client creation, 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.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>firstname</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Facility to break up name into parts
|
|
suitable for humans.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>middlename</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Facility to break up name into parts
|
|
suitable for humans.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>lastname</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Facility to break up name into parts
|
|
suitable for humans.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>fullname</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Facility to set name of a client or
|
|
business that doesnt suit the firstname,middlename,lastname
|
|
structure.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>externalId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>A place to put an external reference for
|
|
this client e.g. The ID another system uses.<br> If
|
|
provided, it must be unique.
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_list" name="clients_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Clients</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>clients?fields=displayName,officeName,joinedDate</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/clients
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 2,
|
|
"accountNo": "000000002",
|
|
"externalId": "one/78",
|
|
"fullname": "New Business to Create",
|
|
"displayName": "New Business to Create",
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"joinedDate": [2006,6,13]
|
|
},
|
|
{
|
|
"id": 1,
|
|
"accountNo": "000000001",
|
|
"externalId": "786YYH7",
|
|
"firstname": "Petra",
|
|
"lastname": "Yton",
|
|
"displayName": "Petra Yton",
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"joinedDate": [2009,3,4]
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="clients_template" name="clients_template"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Client Details Template</h4>
|
|
<p>This is a convenience resource. It can be useful when
|
|
building maintenance user interface screens for client
|
|
applications. The template data returned consists of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>clients/template</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/clients/template
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"joinedDate": [
|
|
2013,
|
|
2,
|
|
5
|
|
],
|
|
"allowedOffices": [
|
|
{
|
|
"id": 1,
|
|
"name": "Head Office",
|
|
"nameDecorated": "Head Office"
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a id="clients_retrieve" name="clients_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Client</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>clients/1?template=true</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>clients/1?fields=id,displayName,officeName</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/clients/{clientId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"accountNo": "000000001",
|
|
"externalId": "786YYH7",
|
|
"firstname": "Petra",
|
|
"lastname": "Yton",
|
|
"displayName": "Petra Yton",
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"joinedDate": [
|
|
2009,
|
|
3,
|
|
4
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="clients_create" name="clients_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a Client</h4>
|
|
<p>
|
|
<b>Note:</b> You can enter either:<br>
|
|
firstname/middlename/lastname - for a person (middlename is
|
|
optional) OR<br> fullname - for a business or organisation
|
|
(or person known by one name).<br>
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>firstname and lastname OR fullname<br>, joinedDate,
|
|
officeId
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/clients
|
|
</code>
|
|
<code class="method-request">
|
|
POST clients
|
|
Content-Type: application/json Request Body:
|
|
{
|
|
"officeId": 1,
|
|
"firstname": "Petra",
|
|
"lastname": "Yton",
|
|
"externalId": "786YYH7",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"locale": "en",
|
|
"joinedDate": "04 March 2009"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-request">
|
|
POST clients
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"officeId": 1,
|
|
"fullname": "New Business to Create",
|
|
"externalId": "one/78",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"locale": "en",
|
|
"joinedDate": "13 June 2006"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 2,
|
|
"resourceId": 2
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="clients_update" name="clients_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Client</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/clients/{clientId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT clients/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"externalId": "786444UUUYYH7",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"locale": "en",
|
|
"joinedDate": "09 June 2006"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"externalId": "786444UUUYYH7",
|
|
"joinedDate": "09 June 2006",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"locale": "en"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="clients_loansummary" name="clients_loansummary"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Client's Loan Account Summary</h4>
|
|
<p>
|
|
An example of how a loan portfolio summary can be provided. This
|
|
one contains quite a bit of redundant data (like the counts) and
|
|
is requested in a specific use case of the Individual Lending User
|
|
Interface.<br> However, it is quite reasonable to add
|
|
resources like this to simplify User Interface development.
|
|
</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1/loans</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>clients/1/loans?fields=openLoans,closedLoans,activeLoanCount</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/clients/{clientId}/loans
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"anyLoanCount": 9,
|
|
"pendingApprovalLoanCount": 4,
|
|
"pendingApprovalLoans": [
|
|
{
|
|
"id": 48,
|
|
"accountNo": "48",
|
|
"productId": 1,
|
|
"productName": "PORetailLoan",
|
|
"status": {
|
|
"id": 100,
|
|
"code": "loanStatusType.submitted.and.pending.approval",
|
|
"value": "Submitted and pending approval"
|
|
}
|
|
},
|
|
{
|
|
"id": 50,
|
|
"accountNo": "50",
|
|
"productId": 1,
|
|
"productName": "PORetailLoan",
|
|
"status": {
|
|
"id": 100,
|
|
"code": "loanStatusType.submitted.and.pending.approval",
|
|
"value": "Submitted and pending approval"
|
|
}
|
|
},
|
|
{
|
|
"id": 51,
|
|
"accountNo": "51",
|
|
"productId": 1,
|
|
"productName": "PORetailLoan",
|
|
"status": {
|
|
"id": 100,
|
|
"code": "loanStatusType.submitted.and.pending.approval",
|
|
"value": "Submitted and pending approval"
|
|
}
|
|
},
|
|
{
|
|
"id": 62,
|
|
"accountNo": "62",
|
|
"productId": 3,
|
|
"productName": "Further Loan Product",
|
|
"status": {
|
|
"id": 100,
|
|
"code": "loanStatusType.submitted.and.pending.approval",
|
|
"value": "Submitted and pending approval"
|
|
}
|
|
}
|
|
],
|
|
"activeLoanCount": 2,
|
|
"openLoans": [
|
|
{
|
|
"id": 46,
|
|
"accountNo": "46",
|
|
"productId": 1,
|
|
"productName": "PORetailLoan",
|
|
"status": {
|
|
"id": 300,
|
|
"code": "loanStatusType.active",
|
|
"value": "Active"
|
|
}
|
|
},
|
|
{
|
|
"id": 60,
|
|
"accountNo": "60",
|
|
"productId": 1,
|
|
"productName": "PORetailLoan",
|
|
"status": {
|
|
"id": 300,
|
|
"code": "loanStatusType.active",
|
|
"value": "Active"
|
|
}
|
|
}
|
|
],
|
|
"closedLoanCount": 3,
|
|
"closedLoans": [
|
|
{
|
|
"id": 22,
|
|
"accountNo": "22",
|
|
"productId": 1,
|
|
"productName": "PORetailLoan",
|
|
"status": {
|
|
"id": 700,
|
|
"code": "loanStatusType.overpaid",
|
|
"value": "Overpaid"
|
|
}
|
|
},
|
|
{
|
|
"id": 33,
|
|
"accountNo": "33",
|
|
"productId": 1,
|
|
"productName": "PORetailLoan",
|
|
"status": {
|
|
"id": 601,
|
|
"code": "loanStatusType.closed.written.off",
|
|
"value": "Closed (written off)"
|
|
}
|
|
},
|
|
{
|
|
"id": 44,
|
|
"accountNo": "44",
|
|
"productId": 1,
|
|
"productName": "PORetailLoan",
|
|
"status": {
|
|
"id": 600,
|
|
"code": "loanStatusType.closed.obligations.met",
|
|
"value": "Closed (obligations met)"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- start of client Identifiers API docs-->
|
|
<a id="client_identifiers" name="client_identifiers" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Client Identifiers</h3>
|
|
<p>Client Identifiers refer to documents that are
|
|
used to uniquely identify a customer <br/>
|
|
Ex: Drivers License, Passport, Ration card etc
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>documentKey</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Number/String used to uniquely identify a particular
|
|
document (Driving License number for a driving license etc)</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>documentType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Type of the identification document
|
|
(License, Passport Etc)</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>description</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Any user comments to be associated
|
|
with the Client Identifier</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_identifiers_list" name="client_identifiers_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List all Identifiers for a Client</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1/identifiers</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>clients/1/identifiers?fields=documentKey,documentType,description</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/clients/{clientId}/identifiers
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 2,
|
|
"clientId": 1,
|
|
"documentType": {
|
|
"id": 3,
|
|
"name": "Drivers License"
|
|
},
|
|
"documentKey": "12345",
|
|
"description": "Issued in the year 2--7"
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_identifiers_template" name="client_identifiers_template"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Client Identifier Details Template</h4>
|
|
<p>This is a convenience resource. It can be useful when
|
|
building maintenance user interface screens for client
|
|
applications. The template data returned consists of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>clients/1/identifiers/template</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/clients/{clientId}/identifiers/template
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"allowedDocumentTypes": [
|
|
{
|
|
"id": 1,
|
|
"name": "Passport",
|
|
"position": 0
|
|
},
|
|
{
|
|
"id": 2,
|
|
"name": "Id",
|
|
"position": 0
|
|
},
|
|
{
|
|
"id": 3,
|
|
"name": "Drivers License",
|
|
"position": 0
|
|
},
|
|
{
|
|
"id": 4,
|
|
"name": "Any Other Id Type",
|
|
"position": 0
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a id="client_identifiers_retrieve" name="client_identifiers_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Client Identifier</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1/identifier/2</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>clients/1/identifier/2?template=true</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>clients/1/identifiers/2?fields=documentKey,documentType,description</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/clients/{clientId}/identifiers/{identifierId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 2,
|
|
"clientId": 1,
|
|
"documentType": {
|
|
"id": 3,
|
|
"name": "Drivers License"
|
|
},
|
|
"documentKey": "12345",
|
|
"description": "Issued in 2007"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_identifiers_create" name="client_identifiers_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create an Identifier for a Client</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>documentKey, documentTypeId
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/clients/{clientId}/identifiers
|
|
</code>
|
|
<code class="method-request">
|
|
POST clients/1/identifiers
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"documentTypeId":"1",
|
|
"documentKey":"KA-54677",
|
|
"description":"Document has been verified"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"resourceId": 3
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_identifiers_update" name="client_identifiers_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Client Identifier</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/clients/{clientId}/identifiers/{identifierId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT clients/1/identifiers/3
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"documentTypeId":"4",
|
|
"documentKey":"KA-94667",
|
|
"description":"Document has been updated"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"resourceId": 3,
|
|
"changes": {
|
|
"documentTypeId": 4,
|
|
"documentKey": "KA-94667",
|
|
"description": "Document has been updated"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_identifiers_delete" name="client_identifiers_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a Client Identifier</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/clients/{clientId}/identifiers/{identifierId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE clients/1/identifiers/3
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"resourceId": 3
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- start of Client Images API docs-->
|
|
|
|
<a id="client_images" name="client_images" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Client Images</h3>
|
|
<p>The current API provides support for the addition of a single
|
|
image for a Client<br/>
|
|
Allowed formats: JPEG (.jpg or .jpeg), GIF (.gif) and PNG (.png)
|
|
</p>
|
|
<p> The API supports two different Approaches for manipulating Client Images
|
|
<ul>
|
|
<li><a href="http://en.wikipedia.org/wiki/Data_URI_scheme" target="_blank"> Data URI's: </a>
|
|
For easier manipulation by Javascript clients etc in supported Browsers.
|
|
</li>
|
|
<li><a href="http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2">
|
|
Multi-part form data:</a>
|
|
Images can be uploaded using Multi part forms and downloaded as regular binary files
|
|
</li>
|
|
<br/>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_images_retrieve" name="client_images_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Get Client Image (DATA URI)</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1/images</div>
|
|
<br>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/clients/{clientId}/images
|
|
</code>
|
|
<code class="method-response">
|
|
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ
|
|
bWFnZVJlYWR5ccllPAAAAJ1JREFUeNpi+P//PwMIA4E9EG8E4idQDGLbw+WhiiqA+D8OXAFVAzbp
|
|
DxBvB2JLIGaGYkuoGEjOhhFIHAbij0BdPgxYACMj42ogJQpifwBiXSDeC8JIbt4LxSC5DyxQjTeB
|
|
+BeaYb+Q5EBOAVutCzMJHUNNPADzzDokiYdAfAmJvwLkGeTgWQfyKZICS6hYBTwc0QL8ORSjBDhA
|
|
gAEAOg13B6R/SAgAAAAASUVORK5CYII=
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_images_retrieve_binary" name="client_images_retrieve_binary"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Get Client Image (Binary file)</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/clients/{clientId}/images
|
|
</code>
|
|
<code class="method-request">
|
|
POST clients/1/images
|
|
Accept: application/octet-stream
|
|
</code>
|
|
<code class="method-response">
|
|
<i>Not shown</i>: The corresponding binary (image) file
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_images_create" name="client_images_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Upload an Image for a Client (Data URI)</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/clients/{clientId}/images
|
|
</code>
|
|
<code class="method-request">
|
|
POST clients/1/images
|
|
Content-Type: text/plain
|
|
Request Body:
|
|
data:image/png;base64,iVBORw0KGgoAA
|
|
AANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0l
|
|
EQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6
|
|
P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {},
|
|
"resourceIdentifier": "1"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_images_create_form" name="client_images_create_form" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Upload an Image for a Client (Multi-part Form data)</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>file
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<p>
|
|
The form should contain a required named body part with the
|
|
name "file". <br/> <br/>
|
|
If you are using a HTML form, a snippet like
|
|
<small> <input type="file" name="file"></input> </small>
|
|
can be used for uploading the image file
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/clients/{clientId}/images
|
|
</code>
|
|
<code class="method-request">
|
|
POST clients/1/images
|
|
Content-Type: multipart/form-data
|
|
Request Body: <i>Not shown</i>
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {},
|
|
"resourceIdentifier": "1"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_images_update" name="client_images_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Client Image (Data URI)</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/clients/{clientId}/images
|
|
</code>
|
|
<code class="method-request">
|
|
PUT clients/1/images
|
|
Content-Type: text/plain
|
|
Request Body:
|
|
data:image/png;base64,iVBORw0KGgoAA
|
|
AANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0l
|
|
EQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6
|
|
P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {},
|
|
"resourceIdentifier": "1"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_images_update_form" name="client_images_update_form" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Client Image (Multi-part Form data)</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>file
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<p>
|
|
The form should contain a required named body part with the
|
|
name "file". <br/> <br/>
|
|
If you are using a HTML form, a snippet like
|
|
<small> <input type="file" name="file"></input> </small>
|
|
can be used for uploading the image file
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/clients/{clientId}/images
|
|
</code>
|
|
<code class="method-request">
|
|
PUT clients/1/images
|
|
Content-Type: multipart/form-data
|
|
Request Body: <i>Not shown</i>
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="client_images_delete" name="client_images_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a Client Image</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/clients/{clientId}/images
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE clients/1/images
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {},
|
|
"resourceIdentifier": "1"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- start of Groups api docs -->
|
|
<a id="groups" name="groups" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Groups</h3>
|
|
<p>Groups are collection of clients for specific purpose (JLG,SHG, Program etc) </p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>office_id</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>It stores the officeid of office, to this officer Group belongs.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>loan_officer_id</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Id of the officer who manages this group.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Human friendly identity of the Group (Name given to the group).</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>externalId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>A place to put an external reference for
|
|
this group e.g. The ID another system uses.<br> If
|
|
provided, it must be unique.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>is_deleted</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Indicator for active or archived groups.
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<a id="groups_create" name="groups_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a Group</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name<br>
|
|
officeId<br>
|
|
clients
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/mifosng-provider/api/v1/groups
|
|
</code>
|
|
<code class="method-request">
|
|
POST groups
|
|
Content-Type: application/json Request Body:
|
|
{
|
|
"officeId":"1",
|
|
"name":"TA Group",
|
|
"externalId":"",
|
|
"clientMembers":["82","83","84"]
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{"resourceId":24,"changes":{}}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<a id="groups_list" name="groups_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Groups</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>groups</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/mifosng-provider/api/v1/groups
|
|
</code>
|
|
<code class="method-response">
|
|
[{
|
|
"id": 1,
|
|
"name": "GWT_2",
|
|
"externalId": "GWT_EX_ID_2",
|
|
"officeId": 7,
|
|
"officeName": "Z2"
|
|
}, {
|
|
"id": 2,
|
|
"name": "group22",
|
|
"externalId": "11234",
|
|
"officeId": 1,
|
|
"officeName": "Head Office"
|
|
}, {
|
|
"id": 3,
|
|
"name": "PlusOne",
|
|
"officeId": 22,
|
|
"officeName": "North Point Office"
|
|
}]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<a id="groups_retrieve" name="groups_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Group</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>groups/10</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/mifosng-provider/api/v1/groups/10
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 10,
|
|
"name": "test123",
|
|
"externalId": "tejjjst",
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"clientMembers": [{
|
|
"id": 1,
|
|
"displayName": "Willie O\u0027Meara"
|
|
}]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<a id="groups_loansummary" name="groups_loansummary"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Groups's Loan Account Summary</h4>
|
|
<p>
|
|
An example of how a loan portfolio summary can be provided. This
|
|
one contains quite a bit of redundant data (like the counts)
|
|
</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>groups/7/loans</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/mifosng-provider/api/v1/groups/7/loans
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"anyLoanCount": 1,
|
|
"pendingApprovalLoanCount": 0,
|
|
"pendingApprovalLoans": [],
|
|
"awaitingDisbursalLoanCount": 0,
|
|
"awaitingDisbursalLoans": [],
|
|
"activeLoanCount": 1,
|
|
"openLoans": [{
|
|
"id": 79,
|
|
"productId": 1,
|
|
"productName": "1-PORetailLoan",
|
|
"accountStatusId": 300
|
|
}],
|
|
"closedLoanCount": 0,
|
|
"closedLoans": [],
|
|
"anyIndividualLoanCount": 3,
|
|
"pendingApprovalIndividualLoanCount": 0,
|
|
"pendingApprovalIndividualLoans": [],
|
|
"awaitingDisbursalIndividualLoanCount": 0,
|
|
"awaitingDisbursalIndividualLoans": [],
|
|
"activeIndividualLoanCount": 3,
|
|
"openIndividualLoans": [{
|
|
"id": 80,
|
|
"productId": 17,
|
|
"productName": "17-Intrasoft Business Loan",
|
|
"accountStatusId": 300
|
|
}, {
|
|
"id": 81,
|
|
"productId": 1,
|
|
"productName": "1-PORetailLoan",
|
|
"accountStatusId": 300
|
|
}, {
|
|
"id": 82,
|
|
"productId": 13,
|
|
"productName": "13-A Flat Loan",
|
|
"accountStatusId": 300
|
|
}],
|
|
"closedIndividualLoanCount": 0,
|
|
"closedIndividualLoans": []
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<a id="groups_update" name="groups_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Group</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/mifosng-provider/api/v1/groups/{groupid}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT groups/7
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"officeId": "26",
|
|
"name": "Laxmi SSG U",
|
|
"externalId": "Unq 2--124",
|
|
"clientMembers": ["91", "93", "94"]
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId":7,
|
|
"changes":{}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<a id="groups_assignlo" name="groups_assignlo" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Assign a Loan Officer to Group</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/mifosng-provider/api/v1/groups/{groupid}/command/assign_loanofficer
|
|
</code>
|
|
<code class="method-request">
|
|
POST groups/20/command/assign_loanofficer
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
{"loanOfficerId":"1"}
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId":20,
|
|
"changes":{}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<a id="groups_unassign_lo" name="groups_unassign_lo" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Unassign a loan officer to a Group</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/mifosng-provider/api/v1/groups/{groupid}/command/assign_loanofficer
|
|
</code>
|
|
<code class="method-request">
|
|
POST groups/20/command/unassign_loanofficer
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
{"loanOfficerId":"1"}
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId":20,
|
|
"changes":{}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<a id="groups_delete" name="groups_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a Group</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/mifosng-provider/api/v1/groups/{groupid}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE groups/7
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId":7,
|
|
"changes":{}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<!-- end of group api docs -->
|
|
|
|
<!-- start of loans api docs -->
|
|
<a id="loans" name="loans" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Loans</h3>
|
|
<p>The API concept of <b>loans</b> models the <b>loan application process</b> and the <b>loan contract/monitoring process</b>.</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>accountNo</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The account no. associated with this loan. Is auto generated if not provided at loan application creation time.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>externalId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>A place to put an external reference for
|
|
this loan e.g. The ID another system uses.<br> If provided,
|
|
it must be unique.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>fundId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Optional: For associating a loan with a given fund.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>loanOfficerId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Optional: For associating a loan with a given staff member who is a loan officer.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>loanPurposeId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Optional: For marking a loan with a given loan purpose option. Loan purposes are configurable and can be setup by system admin through code/code values screens.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>principal</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The loan amount to be disbursed to through loan.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>loanTermFrequency</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The length of loan term<br> Used like:
|
|
<b>loanTermFrequency</b> loanTermFrequencyType<br> e.g. <b>12</b> Months
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>loanTermFrequencyType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The loan term period to use. Used like:
|
|
loanTermFrequency <b>loanTermFrequencyType</b><br> e.g. 12 <b>Months</b>
|
|
<span>Example Values:</span> 0=Days, 1=Weeks, 2=Months, 3=Years
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>numberOfRepayments</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Number of installments to repay.<br>
|
|
Used like: <b>numberOfRepayments</b> Every <i>repaymentEvery</i>
|
|
<i>repaymentFrequencyType</i><br> e.g. <b>10</b> (repayments) Every 12 Weeks
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>repaymentEvery</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: numberOfRepayments Every
|
|
<b>repaymentEvery</b> repaymentFrequencyType<br> e.g. 10
|
|
(repayments) Every <b>12</b> Weeks
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>repaymentFrequencyType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: <i>numberOfRepayments</i> Every
|
|
repaymentEvery <b>repaymentFrequencyType</b><br> e.g. 10
|
|
(repayments) Every 12 <b>Weeks</b> <br>
|
|
<span>Example Values:</span> 0=Days, 1=Weeks, 2=Months
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestRatePerPeriod</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Interest Rate.<br> Used like:
|
|
<b>interestRatePerPeriod</b> % interestRateFrequencyType - interestType<br>
|
|
e.g. <b>12.0000</b>% Per year - Declining Balance
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestRateFrequencyType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: interestRatePerPeriod%
|
|
interestRateFrequencyType - interestType<br> e.g. 12.0000%
|
|
<b>Per year</b> - Declining Balance <br>
|
|
<span>Example Values:</span> 2=Per month, 3=Per year
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>expectedDisbursementDate</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The proposed <b>disbursement date</b> of the loan so a proposed repayment schedule can be provided.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>submittedOnDate</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The date the <b>loan application</b> was submitted by applicant.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>amortizationType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc><span>Example Values:</span> 0=Equal
|
|
principle payments, 1=Equal installments</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: interestRatePerPeriod%
|
|
interestRateFrequencyType - interestType<br> e.g. 12.0000%
|
|
Per year - <b>Declining Balance</b> <br>
|
|
<span>Example Values:</span> 0=Declining Balance, 1=Flat
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestCalculationPeriodType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc><span>Example Values:</span> 0=Daily, 1=Same as repayment period</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>inArrearsTolerance</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The amount that can be 'waived' at end
|
|
of all loan payments because it is too small to worry about.<br>
|
|
This is also the tolerance amount assessed when determining if a
|
|
loan is in arrears.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>transactionProcessingStrategyId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The type of transaction processing strategy to be used.<br>
|
|
At present some MFI specific ones exist. This is an important point of change for many MFIs.
|
|
<br>Responsible for things like payment order and how early or late repayments should be processed.<br>
|
|
Out of the box, four available:
|
|
<ol>
|
|
<li>id=1, code=mifos-standard-strategy, name=Mifos style</li>
|
|
<li>id=2, code=heavensfamily-strategy, name=Heavensfamily</li>
|
|
<li>id=3, code=creocore-strategy, name=Creocore</li>
|
|
<li>id=4, code=rbi-india-strategy, name=RBI (India)</li>
|
|
</ol>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_template" name="loans_template" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Loan Details Template</h4>
|
|
<p>This is a convenience resource. It can be useful when
|
|
building maintenance user interface screens for client
|
|
applications. The template data returned consists of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>clientId</dt>
|
|
<dd>
|
|
Integer <span>mandatory</span>
|
|
</dd>
|
|
<dt>productId</dt>
|
|
<dd>
|
|
Integer <span>optional</span>
|
|
</dd>
|
|
<dd>If entered, productId, productName and selectedProduct
|
|
fields are returned.</dd>
|
|
</dl>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>loans/template?clientId=1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loans/template?clientId=1&productId=1</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loans/template?clientId=1
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"clientId": 1,
|
|
"clientName": "Kampala first Client",
|
|
"clientOfficeId": 2,
|
|
"timeline": {
|
|
"expectedDisbursementDate": [
|
|
2013,
|
|
3,
|
|
8
|
|
]
|
|
},
|
|
"productOptions": [
|
|
{
|
|
"id": 1,
|
|
"name": "Kampala Product (with cash accounting)"
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loans/template?clientId=1&productId=1
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"clientId": 1,
|
|
"clientName": "Kampala first Client",
|
|
"clientOfficeId": 2,
|
|
"loanProductId": 1,
|
|
"loanProductName": "Kampala Product (with cash accounting)",
|
|
"loanProductDescription": "Typical Kampala loan product with cash accounting enabled for testing.",
|
|
"currency": {
|
|
"code": "UGX",
|
|
"name": "Uganda Shilling",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "USh",
|
|
"nameCode": "currency.UGX",
|
|
"displayLabel": "Uganda Shilling (USh)"
|
|
},
|
|
"principal": 1000000,
|
|
"termFrequency": 12,
|
|
"termPeriodFrequencyType": {
|
|
"id": 2,
|
|
"code": "repaymentFrequency.periodFrequencyType.months",
|
|
"value": "Months"
|
|
},
|
|
"numberOfRepayments": 12,
|
|
"repaymentEvery": 1,
|
|
"repaymentFrequencyType": {
|
|
"id": 2,
|
|
"code": "repaymentFrequency.periodFrequencyType.months",
|
|
"value": "Months"
|
|
},
|
|
"interestRatePerPeriod": 24,
|
|
"interestRateFrequencyType": {
|
|
"id": 3,
|
|
"code": "interestRateFrequency.periodFrequencyType.years",
|
|
"value": "Per year"
|
|
},
|
|
"annualInterestRate": 24,
|
|
"amortizationType": {
|
|
"id": 1,
|
|
"code": "amortizationType.equal.installments",
|
|
"value": "Equal installments"
|
|
},
|
|
"interestType": {
|
|
"id": 1,
|
|
"code": "interestType.flat",
|
|
"value": "Flat"
|
|
},
|
|
"interestCalculationPeriodType": {
|
|
"id": 1,
|
|
"code": "interestCalculationPeriodType.same.as.repayment.period",
|
|
"value": "Same as repayment period"
|
|
},
|
|
"transactionProcessingStrategyId": 2,
|
|
"timeline": {
|
|
"expectedDisbursementDate": [
|
|
2013,
|
|
3,
|
|
8
|
|
]
|
|
},
|
|
"charges": [],
|
|
"productOptions": [
|
|
{
|
|
"id": 1,
|
|
"name": "Kampala Product (with cash accounting)"
|
|
}
|
|
],
|
|
"loanOfficerOptions": [
|
|
{
|
|
"id": 2,
|
|
"firstname": "Kampala",
|
|
"lastname": "LoanOfficer",
|
|
"displayName": "LoanOfficer, Kampala",
|
|
"officeId": 2,
|
|
"officeName": "Uganda (Kampala)",
|
|
"isLoanOfficer": true
|
|
}
|
|
],
|
|
"loanPurposeOptions": [
|
|
{
|
|
"id": 20,
|
|
"name": "option.Agriculture",
|
|
"position": 1
|
|
},
|
|
{
|
|
"id": 21,
|
|
"name": "option.Manufacturing",
|
|
"position": 20
|
|
},
|
|
{
|
|
"id": 22,
|
|
"name": "option.HousingImprovement",
|
|
"position": 21
|
|
}
|
|
],
|
|
"termFrequencyTypeOptions": [
|
|
{
|
|
"id": 0,
|
|
"code": "loanTermFrequency.periodFrequencyType.days",
|
|
"value": "Days"
|
|
},
|
|
{
|
|
"id": 1,
|
|
"code": "loanTermFrequency.periodFrequencyType.weeks",
|
|
"value": "Weeks"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"code": "loanTermFrequency.periodFrequencyType.months",
|
|
"value": "Months"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"code": "loanTermFrequency.periodFrequencyType.years",
|
|
"value": "Years"
|
|
}
|
|
],
|
|
"repaymentFrequencyTypeOptions": [
|
|
{
|
|
"id": 0,
|
|
"code": "repaymentFrequency.periodFrequencyType.days",
|
|
"value": "Days"
|
|
},
|
|
{
|
|
"id": 1,
|
|
"code": "repaymentFrequency.periodFrequencyType.weeks",
|
|
"value": "Weeks"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"code": "repaymentFrequency.periodFrequencyType.months",
|
|
"value": "Months"
|
|
}
|
|
],
|
|
"interestRateFrequencyTypeOptions": [
|
|
{
|
|
"id": 2,
|
|
"code": "interestRateFrequency.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"code": "interestRateFrequency.periodFrequencyType.years",
|
|
"value": "Per year"
|
|
}
|
|
],
|
|
"amortizationTypeOptions": [
|
|
{
|
|
"id": 1,
|
|
"code": "amortizationType.equal.installments",
|
|
"value": "Equal installments"
|
|
},
|
|
{
|
|
"id": 0,
|
|
"code": "amortizationType.equal.principal",
|
|
"value": "Equal principle payments"
|
|
}
|
|
],
|
|
"interestTypeOptions": [
|
|
{
|
|
"id": 1,
|
|
"code": "interestType.flat",
|
|
"value": "Flat"
|
|
},
|
|
{
|
|
"id": 0,
|
|
"code": "interestType.declining.balance",
|
|
"value": "Declining Balance"
|
|
}
|
|
],
|
|
"interestCalculationPeriodTypeOptions": [
|
|
{
|
|
"id": 0,
|
|
"code": "interestCalculationPeriodType.daily",
|
|
"value": "Daily"
|
|
},
|
|
{
|
|
"id": 1,
|
|
"code": "interestCalculationPeriodType.same.as.repayment.period",
|
|
"value": "Same as repayment period"
|
|
}
|
|
],
|
|
"transactionProcessingStrategyOptions": [
|
|
{
|
|
"id": 2,
|
|
"code": "heavensfamily-strategy",
|
|
"name": "Heavensfamily"
|
|
}
|
|
],
|
|
"chargeOptions": [
|
|
{
|
|
"id": 1,
|
|
"name": "Bank Fee (per installment)",
|
|
"active": true,
|
|
"penalty": false,
|
|
"currency": {
|
|
"code": "UGX",
|
|
"name": "Uganda Shilling",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "USh",
|
|
"nameCode": "currency.UGX",
|
|
"displayLabel": "Uganda Shilling (USh)"
|
|
},
|
|
"amount": 1500,
|
|
"chargeTimeType": {
|
|
"id": 2,
|
|
"code": "chargeTimeType.specifiedDueDate",
|
|
"value": "Specified due date"
|
|
},
|
|
"chargeAppliesTo": {
|
|
"id": 1,
|
|
"code": "chargeAppliesTo.loan",
|
|
"value": "Loan"
|
|
},
|
|
"chargeCalculationType": {
|
|
"id": 1,
|
|
"code": "chargeCalculationType.flat",
|
|
"value": "Flat"
|
|
}
|
|
}
|
|
],
|
|
"loanCollateralOptions": [
|
|
{
|
|
"id": 17,
|
|
"name": "option.House",
|
|
"position": 1
|
|
},
|
|
{
|
|
"id": 18,
|
|
"name": "option.Television",
|
|
"position": 17
|
|
},
|
|
{
|
|
"id": 19,
|
|
"name": "option.Gold",
|
|
"position": 18
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_retrieve" name="loans_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Loan</h4>
|
|
<p>
|
|
<b>Note:</b> template=true parameter doesn't apply to this
|
|
resource.
|
|
</p>
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>associations</dt>
|
|
<dd>
|
|
optional, <span>Either 'all' or a comma separated list of
|
|
loan 'associations' (itemised below).</span>
|
|
</dd>
|
|
<dd>
|
|
<br>Associations are just extra pieces of data that you
|
|
might or might not want to retrieve.<br>
|
|
<br>
|
|
</dd>
|
|
<dd>
|
|
<b>'all':</b> Gets all association data.
|
|
</dd>
|
|
<dd>
|
|
<b>'repaymentSchedule':</b> Loan schedule data.
|
|
</dd>
|
|
<dd>
|
|
<b>'transactions':</b> Loan transactions data.
|
|
</dd>
|
|
<dd>
|
|
<b>'charges':</b> Loan charges data.
|
|
</dd>
|
|
<dd>
|
|
<b>'guarantors':</b> Loan guarantors data.
|
|
</dd>
|
|
<dd>
|
|
<b>'collateral':</b> Loan collateral data.
|
|
</dd>
|
|
</dl>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>loans/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loans/1?fields=id,principal,annualInterestRate</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loans/1?associations=all</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loans/1?fields=id,principal,annualInterestRate&associations=repaymentSchedule,transactions</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loans/{loanId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"accountNo": "000000001",
|
|
"status": {
|
|
"id": 300,
|
|
"code": "loanStatusType.active",
|
|
"value": "Active",
|
|
"pendingApproval": false,
|
|
"waitingForDisbursal": false,
|
|
"active": true,
|
|
"closedObligationsMet": false,
|
|
"closedWrittenOff": false,
|
|
"closedRescheduled": false,
|
|
"closed": false,
|
|
"overpaid": false
|
|
},
|
|
"clientId": 1,
|
|
"clientName": "Kampala first Client",
|
|
"clientOfficeId": 2,
|
|
"loanProductId": 1,
|
|
"loanProductName": "Kampala Product (with cash accounting)",
|
|
"loanProductDescription": "Typical Kampala loan product with cash accounting enabled for testing.",
|
|
"loanPurposeId": 22,
|
|
"loanPurposeName": "option.HousingImprovement",
|
|
"loanOfficerId": 2,
|
|
"loanOfficerName": "LoanOfficer, Kampala",
|
|
"currency": {
|
|
"code": "UGX",
|
|
"name": "Uganda Shilling",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "USh",
|
|
"nameCode": "currency.UGX",
|
|
"displayLabel": "Uganda Shilling (USh)"
|
|
},
|
|
"principal": 1000000,
|
|
"termFrequency": 12,
|
|
"termPeriodFrequencyType": {
|
|
"id": 2,
|
|
"code": "termFrequency.periodFrequencyType.months",
|
|
"value": "Months"
|
|
},
|
|
"numberOfRepayments": 12,
|
|
"repaymentEvery": 1,
|
|
"repaymentFrequencyType": {
|
|
"id": 2,
|
|
"code": "repaymentFrequency.periodFrequencyType.months",
|
|
"value": "Months"
|
|
},
|
|
"interestRatePerPeriod": 24,
|
|
"interestRateFrequencyType": {
|
|
"id": 3,
|
|
"code": "interestRateFrequency.periodFrequencyType.years",
|
|
"value": "Per year"
|
|
},
|
|
"annualInterestRate": 24,
|
|
"amortizationType": {
|
|
"id": 1,
|
|
"code": "amortizationType.equal.installments",
|
|
"value": "Equal installments"
|
|
},
|
|
"interestType": {
|
|
"id": 1,
|
|
"code": "interestType.flat",
|
|
"value": "Flat"
|
|
},
|
|
"interestCalculationPeriodType": {
|
|
"id": 1,
|
|
"code": "interestCalculationPeriodType.same.as.repayment.period",
|
|
"value": "Same as repayment period"
|
|
},
|
|
"transactionProcessingStrategyId": 2,
|
|
"timeline": {
|
|
"submittedOnDate": [
|
|
2012,
|
|
4,
|
|
3
|
|
],
|
|
"submittedByUsername": "admin",
|
|
"submittedByFirstname": "App",
|
|
"submittedByLastname": "Administrator",
|
|
"approvedOnDate": [
|
|
2012,
|
|
4,
|
|
3
|
|
],
|
|
"approvedByUsername": "admin",
|
|
"approvedByFirstname": "App",
|
|
"approvedByLastname": "Administrator",
|
|
"expectedDisbursementDate": [
|
|
2012,
|
|
4,
|
|
10
|
|
],
|
|
"actualDisbursementDate": [
|
|
2012,
|
|
4,
|
|
10
|
|
],
|
|
"disbursedByUsername": "admin",
|
|
"disbursedByFirstname": "App",
|
|
"disbursedByLastname": "Administrator",
|
|
"expectedMaturityDate": [
|
|
2013,
|
|
4,
|
|
10
|
|
]
|
|
},
|
|
"summary": {
|
|
"currency": {
|
|
"code": "UGX",
|
|
"name": "Uganda Shilling",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "USh",
|
|
"nameCode": "currency.UGX",
|
|
"displayLabel": "Uganda Shilling (USh)"
|
|
},
|
|
"principalDisbursed": 1000000,
|
|
"principalPaid": 0,
|
|
"principalWrittenOff": 0,
|
|
"principalOutstanding": 1000000,
|
|
"principalOverdue": 833333.3,
|
|
"interestCharged": 240000,
|
|
"interestPaid": 0,
|
|
"interestWaived": 0,
|
|
"interestWrittenOff": 0,
|
|
"interestOutstanding": 240000,
|
|
"interestOverdue": 200000,
|
|
"feeChargesCharged": 18000,
|
|
"feeChargesDueAtDisbursementCharged": 0,
|
|
"feeChargesPaid": 0,
|
|
"feeChargesWaived": 0,
|
|
"feeChargesWrittenOff": 0,
|
|
"feeChargesOutstanding": 18000,
|
|
"feeChargesOverdue": 15000,
|
|
"penaltyChargesCharged": 0,
|
|
"penaltyChargesPaid": 0,
|
|
"penaltyChargesWaived": 0,
|
|
"penaltyChargesWrittenOff": 0,
|
|
"penaltyChargesOutstanding": 0,
|
|
"penaltyChargesOverdue": 0,
|
|
"totalExpectedRepayment": 1258000,
|
|
"totalRepayment": 0,
|
|
"totalExpectedCostOfLoan": 258000,
|
|
"totalCostOfLoan": 0,
|
|
"totalWaived": 0,
|
|
"totalWrittenOff": 0,
|
|
"totalOutstanding": 1258000,
|
|
"totalOverdue": 1048333.3,
|
|
"overdueSinceDate": [
|
|
2012,
|
|
5,
|
|
10
|
|
]
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_calculate" name="loans_calculate" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Calculate loan repayment schedule</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>productId, principal, loanTermFrequency,
|
|
loanTermFrequencyType, numberOfRepayments, repaymentEvery,
|
|
repaymentFrequencyType, interestRatePerPeriod,
|
|
interestRateFrequencyType, amortizationType, interestType,
|
|
interestCalculationPeriodType, expectedDisbursementDate,
|
|
transactionProcessingStrategyId</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans?command=calculateLoanSchedule
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans?command=calculateLoanSchedule
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"locale": "en_GB",
|
|
"productId": 1,
|
|
"principal": "100,000.00",
|
|
"loanTermFrequency": 12,
|
|
"loanTermFrequencyType": 2,
|
|
"numberOfRepayments": 12,
|
|
"repaymentEvery": 1,
|
|
"repaymentFrequencyType": 2,
|
|
"interestRatePerPeriod": 2,
|
|
"interestRateFrequencyType": 2,
|
|
"amortizationType": 1,
|
|
"interestType": 0,
|
|
"interestCalculationPeriodType": 1,
|
|
"expectedDisbursementDate": "20 September 2011",
|
|
"transactionProcessingStrategyId": 2
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"currency": {
|
|
"code": "UGX",
|
|
"name": "Uganda Shilling",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "USh",
|
|
"nameCode": "currency.UGX",
|
|
"displayLabel": "Uganda Shilling (USh)"
|
|
},
|
|
"loanTermInDays": 366,
|
|
"totalPrincipalDisbursed": 100000,
|
|
"totalPrincipalExpected": 100000,
|
|
"totalPrincipalPaid": 0,
|
|
"totalInterestCharged": 13471.52,
|
|
"totalFeeChargesCharged": 0,
|
|
"totalPenaltyChargesCharged": 0,
|
|
"totalWaived": 0,
|
|
"totalWrittenOff": 0,
|
|
"totalRepaymentExpected": 113471.52,
|
|
"totalRepayment": 0,
|
|
"totalOutstanding": 0,
|
|
"periods": [
|
|
{
|
|
"period": 0,
|
|
"dueDate": [
|
|
2011,
|
|
9,
|
|
20
|
|
],
|
|
"principalDisbursed": 100000,
|
|
"principalLoanBalanceOutstanding": 100000,
|
|
"feeChargesDue": 0,
|
|
"feeChargesOutstanding": 0,
|
|
"totalOriginalDueForPeriod": 0,
|
|
"totalDueForPeriod": 0,
|
|
"totalOutstandingForPeriod": 0,
|
|
"totalOverdue": 0,
|
|
"totalActualCostOfLoanForPeriod": 0
|
|
},
|
|
{
|
|
"period": 1,
|
|
"fromDate": [
|
|
2011,
|
|
9,
|
|
20
|
|
],
|
|
"dueDate": [
|
|
2011,
|
|
10,
|
|
20
|
|
],
|
|
"daysInPeriod": 30,
|
|
"principalOriginalDue": 7455.96,
|
|
"principalDue": 7455.96,
|
|
"principalOutstanding": 7455.96,
|
|
"principalLoanBalanceOutstanding": 92544.04,
|
|
"interestOriginalDue": 2000,
|
|
"interestDue": 2000,
|
|
"interestOutstanding": 2000,
|
|
"feeChargesDue": 0,
|
|
"penaltyChargesDue": 0,
|
|
"totalOriginalDueForPeriod": 9455.96,
|
|
"totalDueForPeriod": 9455.96,
|
|
"totalPaidForPeriod": 0,
|
|
"totalOutstandingForPeriod": 9455.96,
|
|
"totalOverdue": 9455.96,
|
|
"totalActualCostOfLoanForPeriod": 2000
|
|
},
|
|
...
|
|
...
|
|
{
|
|
"period": 12,
|
|
"fromDate": [
|
|
2012,
|
|
8,
|
|
20
|
|
],
|
|
"dueDate": [
|
|
2012,
|
|
9,
|
|
20
|
|
],
|
|
"daysInPeriod": 31,
|
|
"principalOriginalDue": 9270.56,
|
|
"principalDue": 9270.56,
|
|
"principalOutstanding": 9270.56,
|
|
"principalLoanBalanceOutstanding": 0,
|
|
"interestOriginalDue": 185.4,
|
|
"interestDue": 185.4,
|
|
"interestOutstanding": 185.4,
|
|
"feeChargesDue": 0,
|
|
"penaltyChargesDue": 0,
|
|
"totalOriginalDueForPeriod": 9455.96,
|
|
"totalDueForPeriod": 9455.96,
|
|
"totalPaidForPeriod": 0,
|
|
"totalOutstandingForPeriod": 9455.96,
|
|
"totalOverdue": 9455.96,
|
|
"totalActualCostOfLoanForPeriod": 185.4
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_create" name="loans_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Submit a new Loan Application</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>clientId, productId, principal, loanTermFrequency,
|
|
loanTermFrequencyType, numberOfRepayments, repaymentEvery,
|
|
repaymentFrequencyType, interestRatePerPeriod,
|
|
interestRateFrequencyType, amortizationType, interestType,
|
|
interestCalculationPeriodType, transactionProcessingStrategyId,
|
|
expectedDisbursementDate, submittedOnDate</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"locale": "en_GB",
|
|
"clientId": 1,
|
|
"productId": 1,
|
|
"principal": "100,000.00",
|
|
"loanTermFrequency": 12,
|
|
"loanTermFrequencyType": 2,
|
|
"numberOfRepayments": 12,
|
|
"repaymentEvery": 1,
|
|
"repaymentFrequencyType": 2,
|
|
"interestRatePerPeriod": 2,
|
|
"interestRateFrequencyType": 2,
|
|
"amortizationType": 1,
|
|
"interestType": 0,
|
|
"interestCalculationPeriodType": 1,
|
|
"transactionProcessingStrategyId": 1,
|
|
"expectedDisbursementDate": "20 September 2011",
|
|
"submittedOnDate": "20 September 2011"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 1,
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_approve" name="loans_approve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Approve Loan Application</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>approvedOnDate</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans/{loanId}?command=approve
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans/1?command=approve
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"locale": "en",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"approvedOnDate": "20 September 2011",
|
|
"note": "Loan approval note"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 1,
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"status": {
|
|
"id": 200,
|
|
"code": "loanStatusType.approved",
|
|
"value": "Approved",
|
|
"pendingApproval": false,
|
|
"waitingForDisbursal": true,
|
|
"active": false,
|
|
"closedObligationsMet": false,
|
|
"closedWrittenOff": false,
|
|
"closedRescheduled": false,
|
|
"closed": false,
|
|
"overpaid": false
|
|
},
|
|
"locale": "en",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"approvedOnDate": "20 September 2011",
|
|
"note": "Loan approval note"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_approve_undo" name="loans_approve_undo" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Undo Loan Application Approval</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans/{loanId}?command=undoApproval
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans/1?command=approve
|
|
Content-Type: application/json
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 1,
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"status": {
|
|
"id": 100,
|
|
"code": "loanStatusType.submitted.and.pending.approval",
|
|
"value": "Submitted and pending approval",
|
|
"pendingApproval": true,
|
|
"waitingForDisbursal": false,
|
|
"active": false,
|
|
"closedObligationsMet": false,
|
|
"closedWrittenOff": false,
|
|
"closedRescheduled": false,
|
|
"closed": false,
|
|
"overpaid": false
|
|
},
|
|
"approvedOnDate": ""
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_reject" name="loans_reject" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Reject Loan Application</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>rejectedOnDate</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans/{loanId}?command=reject
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans/1?command=reject
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"locale": "en",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"rejectedOnDate": "20 September 2011",
|
|
"note": "Loan rejection reason."
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 1,
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"status": {
|
|
"id": 500,
|
|
"code": "loanStatusType.rejected",
|
|
"value": "Rejected",
|
|
"pendingApproval": false,
|
|
"waitingForDisbursal": false,
|
|
"active": false,
|
|
"closedObligationsMet": false,
|
|
"closedWrittenOff": false,
|
|
"closedRescheduled": false,
|
|
"closed": false,
|
|
"overpaid": false
|
|
},
|
|
"locale": "en",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"rejectedOnDate": "20 September 2011",
|
|
"closedOnDate": "20 September 2011"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_withdraw" name="loans_withdraw" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Applicant Withdraws from Loan Application</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>withdrawnOnDate</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans/{loanId}?command=withdrawnByApplicant
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans/1?command=withdrawnByApplicant
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"locale": "en",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"withdrawnOnDate": "20 September 2011",
|
|
"note": "Reason loan applicant withdrew from application."
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 2,
|
|
"resourceId": 2,
|
|
"changes": {
|
|
"status": {
|
|
"id": 400,
|
|
"code": "loanStatusType.withdrawn.by.client",
|
|
"value": "Withdrawn by applicant",
|
|
"pendingApproval": false,
|
|
"waitingForDisbursal": false,
|
|
"active": false,
|
|
"closedObligationsMet": false,
|
|
"closedWrittenOff": false,
|
|
"closedRescheduled": false,
|
|
"closed": false,
|
|
"overpaid": false
|
|
},
|
|
"locale": "en",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"withdrawnOnDate": "20 September 2011",
|
|
"closedOnDate": "20 September 2011"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_disburse" name="loans_disburse" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Disburse Loan</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>actualDisbursementDate</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans/{loanId}?command=disburse
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans/1?command=disburse
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"locale": "en",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"actualDisbursementDate": "20 September 2011",
|
|
"note": "Any additional info related to disbursement of funds to applicant."
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 4,
|
|
"resourceId": 4,
|
|
"changes": {
|
|
"status": {
|
|
"id": 300,
|
|
"code": "loanStatusType.active",
|
|
"value": "Active",
|
|
"pendingApproval": false,
|
|
"waitingForDisbursal": false,
|
|
"active": true,
|
|
"closedObligationsMet": false,
|
|
"closedWrittenOff": false,
|
|
"closedRescheduled": false,
|
|
"closed": false,
|
|
"overpaid": false
|
|
},
|
|
"locale": "en",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"actualDisbursementDate": "20 September 2011"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_disburse_undo" name="loans_disburse_undo" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Undo Loan Disbursal</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans/{loanId}?command=undoDisbursal
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans/1?command=undoDisbursal
|
|
Content-Type: application/json
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 4,
|
|
"resourceId": 4,
|
|
"changes": {
|
|
"status": {
|
|
"id": 200,
|
|
"code": "loanStatusType.approved",
|
|
"value": "Approved",
|
|
"pendingApproval": false,
|
|
"waitingForDisbursal": true,
|
|
"active": false,
|
|
"closedObligationsMet": false,
|
|
"closedWrittenOff": false,
|
|
"closedRescheduled": false,
|
|
"closed": false,
|
|
"overpaid": false
|
|
},
|
|
"actualDisbursementDate": ""
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_delete" name="loans_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a Loan Application</h4>
|
|
<p>
|
|
<b>Note:</b> Only loans in "Submitted and awaiting approval"
|
|
status can be deleted.
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/loans/{loanId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE loans/1
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 1,
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Loan Transactions API-->
|
|
<a id="loans_transactions" name="loans_transactions" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Loan Transactions</h3>
|
|
<p>Capabilities include loan repayment's, interest waivers and the ability to 'adjust' an existing transaction. An 'adjust'ment of a transaction is really a 'reversal' of existing transaction followed by creation of a new transaction with the provided details.</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>transactionAmount</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The amount of the transaction.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>transactionDate</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The date of the transaction.</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_repaymenttemplate_etc"
|
|
name="loans_repaymenttemplate_etc" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Loan Transaction Template</h4>
|
|
<p>This is a convenience resource. It can be useful when
|
|
building maintenance user interface screens for client
|
|
applications. The template data returned consists of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>command</dt>
|
|
<dd>
|
|
String<span> mandatory, case-insensitive</span>
|
|
</dd>
|
|
<dd>
|
|
<b>'repayment'</b><br> "date" is set to the date of the
|
|
first outstanding installment.<br> "total" "amount" is set
|
|
to the amount outstanding.
|
|
</dd>
|
|
<dd>
|
|
<b>'waiver'</b><br> "date" is set to the current date.<br>
|
|
"total" "amount" is set to the remaining loan principal
|
|
outstanding. The amount that can be waived is limited to the
|
|
loan's inArrearsTolerance
|
|
</dd>
|
|
</dl>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>loans/1/transactions/template?command=repayment</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loans/{loanId}/transactions/template"
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"transactionType": {
|
|
"id": 2,
|
|
"code": "loanTransactionType.repayment",
|
|
"value": "Repayment"
|
|
},
|
|
"date": [
|
|
2009,
|
|
8,
|
|
1
|
|
],
|
|
"total": {
|
|
"currencyCode": "XOF",
|
|
"digitsAfterDecimal": 0,
|
|
"amount": 471,
|
|
"defaultName": "CFA Franc BCEAO",
|
|
"nameCode": "currency.XOF",
|
|
"displaySymbol": "CFA",
|
|
"zero": false,
|
|
"greaterThanZero": true,
|
|
"displaySymbolValue": "471 CFA"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_transaction_repayment" name="loans_transaction_repayment" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Make a Repayment </h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans/{loanId}/transactions?command=repayment
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans/5/transactions?command=repayment
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"locale": "en_GB",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"transactionDate": "14 May 2012",
|
|
"transactionAmount": "559.88",
|
|
"note": "Optional note related to the transaction."
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 5,
|
|
"resourceId": 3,
|
|
"changes": {
|
|
"transactionDate": "14 May 2012",
|
|
"transactionAmount": "559.88",
|
|
"locale": "en_GB",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"note": "Optional note related to the transaction."
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_transaction_waiveinterest" name="loans_transaction_waiveinterest" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Waive Interest</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans/{loanId}/transactions?command=waiveInterest
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans/5/transactions?command=waiveInterest
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"locale": "en_GB",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"transactionDate": "14 May 2012",
|
|
"transactionAmount": "400",
|
|
"note": "Optional note related to the waiving of interest."
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 5,
|
|
"resourceId": 5,
|
|
"changes": {
|
|
"transactionDate": "14 May 2012",
|
|
"transactionAmount": "400",
|
|
"locale": "en_GB",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"note": "Optional note related to the interest waiver."
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_transaction_retrieve" name="loans_transaction_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Transaction Details</h4>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>loans/5/transactions/3</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loans/{loanId}/transactions/{transactionId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 3,
|
|
"type": {
|
|
"id": 2,
|
|
"code": "loanTransactionType.repayment",
|
|
"value": "Repayment",
|
|
"disbursement": false,
|
|
"repaymentAtDisbursement": false,
|
|
"repayment": true,
|
|
"contra": false,
|
|
"waiveInterest": false,
|
|
"waiveCharges": false,
|
|
"writeOff": false,
|
|
"recoveryRepayment": false
|
|
},
|
|
"date": [
|
|
2012,
|
|
5,
|
|
14
|
|
],
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"amount": 559.88,
|
|
"interestPortion": 559.88
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_transaction_adjust" name="loans_transaction_adjust" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Adjust a Transaction</h4>
|
|
<p><b>Note:</b> there is no need to specify command={transactionType} parameter.</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>transactionDate, transactionAmount</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loans/{loanId}/transactions/{transactionId}
|
|
</code>
|
|
<code class="method-request">
|
|
POST loans/1/transactions/2
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"locale": "en_GB",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"transactionDate": "25 May 2012",
|
|
"transactionAmount": "50,000.00",
|
|
"note": "An optional note about why your adjusting or changing the transaction."
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 16
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Loan Charges API-->
|
|
<a id="loans_charges" name="loans_charges" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Loan Charges</h3>
|
|
<p>Loan charges can be fees or penalities. They can be defined using the charges api and associated with loan products.</p>
|
|
<p></p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>chargeId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The id of the charge definition.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>amount</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The flat amount or percenatge amount of the charge. (depending on its type)</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>dueDate</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The date the loan charge is due for collection. Relevant for charges defined as <b>specified due date</b>.</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_charges_template" name="loans_charges_template" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Loan Charge Template</h4>
|
|
<p>This is a convenience resource. It can be useful when
|
|
building maintenance user interface screens for client
|
|
applications. The template data returned consists of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>loans/1/charges/template</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loans/{loanId}/charges/template
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
{
|
|
"amountPaid": 0,
|
|
"amountWaived": 0,
|
|
"amountWrittenOff": 0,
|
|
"chargeOptions": [
|
|
{
|
|
"id": 1,
|
|
"name": "Bank Fee (per installment)",
|
|
"active": true,
|
|
"penalty": false,
|
|
"currency": {
|
|
"code": "UGX",
|
|
"name": "Uganda Shilling",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "USh",
|
|
"nameCode": "currency.UGX",
|
|
"displayLabel": "Uganda Shilling (USh)"
|
|
},
|
|
"amount": 1500,
|
|
"chargeTimeType": {
|
|
"id": 2,
|
|
"code": "chargeTimeType.specifiedDueDate",
|
|
"value": "Specified due date"
|
|
},
|
|
"chargeAppliesTo": {
|
|
"id": 1,
|
|
"code": "chargeAppliesTo.loan",
|
|
"value": "Loan"
|
|
},
|
|
"chargeCalculationType": {
|
|
"id": 1,
|
|
"code": "chargeCalculationType.flat",
|
|
"value": "Flat"
|
|
}
|
|
}
|
|
],
|
|
"penalty": false
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_charges_create" name="loans_charges_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a Loan Charge</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>chargeId, amount, dueDate (depending on chargeTimeType of charge definition)</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1//loans/{loanId}/charges
|
|
</code>
|
|
<code class="method-request">
|
|
POST /loans/1/charges
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"locale": "en",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"chargeId": 1,
|
|
"amount": "333",
|
|
"dueDate": "21 November 2011"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 1,
|
|
"resourceId": 14
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_charges_update" name="loans_charges_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Loan Charge</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1//loans/{loanId}/charges/{loanChargeId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT /loans/1/charges/14
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"locale": "en",
|
|
"amount": "650"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 1,
|
|
"resourceId": 14,
|
|
"changes": {
|
|
"amount": 650,
|
|
"locale": "en"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_charges_delete" name="loans_charges_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a Loan Charge</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1//loans/{loanId}/charges/{loanChargeId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE /loans/1/charges/14
|
|
Content-Type: application/json
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"loanId": 1,
|
|
"resourceId": 14
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_charges_retrieve" name="loans_charges_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Loan Charge</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1//loans/{loanId}/charges/{loanChargeId}
|
|
</code>
|
|
<code class="method-request">
|
|
GET /loans/1/charges/1
|
|
Content-Type: application/json
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 14,
|
|
"chargeId": 1,
|
|
"name": "Bank Fee (per installment)",
|
|
"chargeTimeType": {
|
|
"id": 2,
|
|
"code": "chargeTimeType.specifiedDueDate",
|
|
"value": "Specified due date"
|
|
},
|
|
"dueDate": [
|
|
2011,
|
|
11,
|
|
21
|
|
],
|
|
"chargeCalculationType": {
|
|
"id": 1,
|
|
"code": "chargeCalculationType.flat",
|
|
"value": "Flat"
|
|
},
|
|
"percentage": 0,
|
|
"amountPercentageAppliedTo": 0,
|
|
"currency": {
|
|
"code": "UGX",
|
|
"name": "Uganda Shilling",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "USh",
|
|
"nameCode": "currency.UGX",
|
|
"displayLabel": "Uganda Shilling (USh)"
|
|
},
|
|
"amount": 650,
|
|
"amountPaid": 0,
|
|
"amountWaived": 0,
|
|
"amountWrittenOff": 0,
|
|
"amountOutstanding": 650,
|
|
"amountOrPercentage": 650,
|
|
"penalty": false
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="guarantors" name="guarantors" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Guarantors</h3>
|
|
<p>A person who guarantees to pay for someone else's debt
|
|
if he or she should default on a loan obligation. A guarantor acts as a co-signor of sorts.
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>guarantorType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Identifies if the guarantor is
|
|
an existing Client, Staff member or an external
|
|
individual <br/>
|
|
Refer <a href="#guarantors_template">Retrieve
|
|
Guarantor Details Template</a> for complete
|
|
details
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>entityId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The identifier for guarantors
|
|
who are an existing Client of Staff member.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>firstname</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Guarantors first name
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>lastname</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Guarantors last name
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>officeName</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Name of the office with which the internal guarantors are associated
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>addressLine1, addressLine2, city, state, zip,
|
|
country, mobileNumber, housePhoneNumber, comment,
|
|
dob</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Address, contact and date of
|
|
birth details of an external guarantor
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="guarantors_list" name="guarantors_list"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Guarantors</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>loans/1/guarantors</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loans/1/guarantors?fields=firstname,lastname</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loans/{loanId}/guarantors
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"loanId": 1,
|
|
"guarantorType": {
|
|
"id": 1,
|
|
"code": "guarantor.existing.customer",
|
|
"value": "CUSTOMER"
|
|
},
|
|
"firstname": "Declan",
|
|
"lastname": "Browne",
|
|
"officeName": "Head Office",
|
|
"joinedDate": [
|
|
2009,
|
|
1,
|
|
4
|
|
]
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="guarantors_template" name="guarantors_template"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Guarantors Details Template</h4>
|
|
<p>This is a convenience resource. It can be useful when
|
|
building maintenance user interface screens for client
|
|
applications. The template data returned consists of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>loans/1/guarantors/template</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loans/{loanId}/guarantors/template
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"guarantorType": {
|
|
"id": 1,
|
|
"code": "guarantor.existing.customer",
|
|
"value": "CUSTOMER"
|
|
},
|
|
"guarantorTypeOptions": [
|
|
{
|
|
"id": 1,
|
|
"code": "guarantor.existing.customer",
|
|
"value": "CUSTOMER"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"code": "guarantor.staff",
|
|
"value": "STAFF"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"code": "guarantor.external",
|
|
"value": "EXTERNAL"
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="guarantors_retrieve" name="guarantors_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Guarantor</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>/loans/1/guarantors/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>/loans/1/guarantors/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>/loans/1/guarantors/1?fields=firstname</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loans/{loanId}/guarantors/{guarantorId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"loanId": 1,
|
|
"guarantorType": {
|
|
"id": 1,
|
|
"code": "guarantor.existing.customer",
|
|
"value": "CUSTOMER"
|
|
},
|
|
"firstname": "Declan",
|
|
"officeName": "Head Office",
|
|
"joinedDate": [
|
|
2009,
|
|
1,
|
|
4
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="guarantors_create" name="guarantors_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a Guarantor</h4>
|
|
<p>
|
|
<b>Note:</b> You may associate any number of Guarantors
|
|
to a Loan. The mandatory fields would vary based
|
|
on the "guarantorType"<br>
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields
|
|
for "internal" guarantors</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>guarantorTypeId, entityId</td>
|
|
</tr>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields for "external" guarantors</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>guarantorTypeId, firstname, lastname</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1//loans/{loanId}}/guarantors
|
|
</code>
|
|
<code class="method-request">
|
|
POST /loans/1/guarantors
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
guarantorTypeId:3,
|
|
firstname:Lyndon,
|
|
lastname:Johnson
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 2,
|
|
"loanId": 1,
|
|
"resourceId": 9
|
|
}
|
|
</code>
|
|
<code class="method-request">
|
|
POST /loans/1/guarantors
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
guarantorTypeId:1,
|
|
entityId:2
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 2,
|
|
"loanId": 1,
|
|
"resourceId": 10
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="guarantors_update" name="guarantors_update"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Guarantor</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/loans/{loanId}/guarantors/{guarantorId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT loans/1/guarantors/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
entityId:1
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"entityId": 1
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="guarantors_delete" name="guarantors_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Remove a Guarantor</h4>
|
|
<p>
|
|
<b>Note:</b> A guarantor can be removed only from loans that are not yet approved.
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/loans/{loanId}/guarantors/{guarantorId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE loans/1/guarantors/1
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 2,
|
|
"loanId": 1,
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- start of offices content -->
|
|
<a id="offices" name="offices" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Offices</h3>
|
|
<p>Offices are used to model an MFIs structure. A hierarchial
|
|
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.</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>externalId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>A place to put an external reference for
|
|
this office e.g. The ID another system uses for it.<br> If
|
|
provided, it must be unique.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>hierarchy</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>This field is a system generated
|
|
convenience field. It can't be set.<br> It uses "dot
|
|
notation" to define where an office stands in the office
|
|
hierarchy.<br> For example, the system default office (id =
|
|
1) has a hierarchy value of '.'<br> An office (id = 12)
|
|
placed directly underneath this default office has a hierarchy
|
|
value of '.12.'<br> And if a further office (id = 78) is
|
|
placed directly under office (id = 12) its hierarchy value is
|
|
'.12.78.'<br>
|
|
<br> The hierarchy value is useful when you need to display
|
|
offices in 'hierarchy' order (perhaps indented in a drop down
|
|
list box).
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="offices_list" name="offices_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Offices</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>offices</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>offices?fields=id,name,openingDate</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/offices
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "Head Office",
|
|
"nameDecorated": "Head Office",
|
|
"externalId": "1",
|
|
"openingDate": [
|
|
2009,
|
|
1,
|
|
1
|
|
],
|
|
"hierarchy": "."
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="offices_template" name="offices_template"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Office Details Template</h4>
|
|
<p>This is a convenience resource. It can be useful when
|
|
building maintenance user interface screens for client
|
|
applications. The template data returned consists of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>offices/template</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/offices/template
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"openingDate": [
|
|
2013,
|
|
2,
|
|
4
|
|
],
|
|
"allowedParents": [
|
|
{
|
|
"id": 1,
|
|
"name": "Head Office",
|
|
"nameDecorated": "Head Office"
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="offices_retrieve" name="offices_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve an Office</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>offices/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>offices/1?template=true</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>offices/1?fields=id,name,parentName</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/offices/1
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"name": "Head Office",
|
|
"nameDecorated": "Head Office",
|
|
"externalId": "1",
|
|
"openingDate": [
|
|
2009,
|
|
1,
|
|
1
|
|
],
|
|
"hierarchy": "."
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="offices_create" name="offices_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create an Office</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name, openingDate, parentId</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/offices
|
|
</code>
|
|
<code class="method-request">
|
|
POST offices
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "Example New Branch",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"locale": "en",
|
|
"openingDate": "01 July 2007",
|
|
"parentId": 2,
|
|
"externalId": "SYS54-88"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 3,
|
|
"resourceId": 3
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="offices_update" name="offices_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update Office</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/offices/{officeId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT offices/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "Name is updated"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"name": "Name is updated"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<!-- end of office api docs -->
|
|
|
|
<!-- start of loan products api docs -->
|
|
<a id="loanproducts" name="loanproducts" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Loan Products</h3>
|
|
<p>A Loan product is a template that is used when creating a
|
|
loan. Much of the template definition can be overridden during
|
|
loan creation.</p>
|
|
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Name associated with loan product on system.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>description</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>For providing helpful description of product offering.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>fundId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>For associating a loan product with a given fund by default.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>currencyCode</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>A three letter ISO code of currency.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>digitsAfterDecimal</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Override the currency default value for digitsAfterDecimal.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>principal</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The loan amount to be disbursed to through loan.</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>numberOfRepayments</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Number of installments to repay.<br>
|
|
Used like: <b>numberOfRepayments</b> Every <i>repaymentEvery</i>
|
|
<i>repaymentFrequencyType</i><br> e.g. <b>10</b> (repayments) Every 12 Weeks
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>repaymentEvery</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: numberOfRepayments Every
|
|
<b>repaymentEvery</b> repaymentFrequencyType<br> e.g. 10
|
|
(repayments) Every <b>12</b> Weeks
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>repaymentFrequencyType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: <i>numberOfRepayments</i> Every
|
|
repaymentEvery <b>repaymentFrequencyType</b><br> e.g. 10
|
|
(repayments) Every 12 <b>Weeks</b> <br>
|
|
<span>Example Values:</span> 0=Days, 1=Weeks, 2=Months
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestRatePerPeriod</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Interest Rate.<br> Used like:
|
|
<b>interestRatePerPeriod</b> % interestRateFrequencyType - interestType<br>
|
|
e.g. <b>12.0000</b>% Per year - Declining Balance
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestRateFrequencyType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: interestRatePerPeriod%
|
|
interestRateFrequencyType - interestType<br> e.g. 12.0000%
|
|
<b>Per year</b> - Declining Balance <br>
|
|
<span>Example Values:</span> 2=Per month, 3=Per year
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>amortizationType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc><span>Example Values:</span> 0=Equal
|
|
principle payments, 1=Equal installments</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: interestRatePerPeriod%
|
|
interestRateFrequencyType - interestType<br> e.g. 12.0000%
|
|
Per year - <b>Declining Balance</b> <br>
|
|
<span>Example Values:</span> 0=Declining Balance, 1=Flat
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestCalculationPeriodType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc><span>Example Values:</span> 0=Daily, 1=Same as repayment period</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>inArrearsTolerance</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The amount that can be 'waived' at end
|
|
of all loan payments because it is too small to worry about.<br>
|
|
This is also the tolerance amount assessed when determining if a
|
|
loan is in arrears.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>transactionProcessingStrategyId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The type of transaction processing strategy to be used.<br>
|
|
At present some MFI specific ones exist. This is an important point of change for many MFIs.
|
|
<br>Responsible for things like payment order and how early or late repayments should be processed.<br>
|
|
Out of the box, four available:
|
|
<ol>
|
|
<li>id=1, code=mifos-standard-strategy, name=Mifos style</li>
|
|
<li>id=2, code=heavensfamily-strategy, name=Heavensfamily</li>
|
|
<li>id=3, code=creocore-strategy, name=Creocore</li>
|
|
<li>id=4, code=rbi-india-strategy, name=RBI (India)</li>
|
|
</ol>
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>accountingRule</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc><span>Example Values:</span>1=NONE,
|
|
2=CASH_BASED, 3=ACCRUAL_BASED</td>
|
|
</tr>
|
|
</td>
|
|
</tr>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loanproducts_list" name="loanproducts_list"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Loan Products</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>loanproducts</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loanproducts?fields=name,description,interestRateFrequencyType,amortizationType</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loanproducts
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "LP with Charges but no accounting)",
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"principal": 100000,
|
|
"numberOfRepayments": 12,
|
|
"repaymentEvery": 1,
|
|
"repaymentFrequencyType": {
|
|
"id": 2,
|
|
"code": "repaymentFrequency.periodFrequencyType.months",
|
|
"value": "Months"
|
|
},
|
|
"interestRatePerPeriod": 1.75,
|
|
"interestRateFrequencyType": {
|
|
"id": 2,
|
|
"code": "interestRateFrequency.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
},
|
|
"annualInterestRate": 21,
|
|
"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"
|
|
},
|
|
"transactionProcessingStrategyId": 1,
|
|
"transactionProcessingStrategyName": "Mifos style",
|
|
"accountingRule": {
|
|
"id": 1,
|
|
"code": "accountingRuleType.none",
|
|
"value": "NONE"
|
|
}
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loanproducts_template" name="loanproducts_template"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Loan Product Details Template</h4>
|
|
<p>This is a convenience resource. It can be useful when
|
|
building maintenance user interface screens for client
|
|
applications. The template data returned consists of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>loanproducts/template</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loanproducts/template
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"currency": {
|
|
"code": "UGX",
|
|
"name": "Uganda Shilling",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "USh",
|
|
"nameCode": "currency.UGX",
|
|
"displayLabel": "Uganda Shilling (USh)"
|
|
},
|
|
"repaymentFrequencyType": {
|
|
"id": 2,
|
|
"code": "repaymentFrequency.periodFrequencyType.months",
|
|
"value": "Months"
|
|
},
|
|
"interestRateFrequencyType": {
|
|
"id": 2,
|
|
"code": "interestRateFrequency.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
},
|
|
"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"
|
|
},
|
|
"transactionProcessingStrategyId": 2,
|
|
"transactionProcessingStrategyName": "Heavensfamily",
|
|
"accountingRule": {
|
|
"id": 1,
|
|
"code": "accountingRuleType.none",
|
|
"value": "NONE"
|
|
},
|
|
"accountingMappings": {},
|
|
"currencyOptions": [
|
|
{
|
|
"code": "UGX",
|
|
"name": "Uganda Shilling",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "USh",
|
|
"nameCode": "currency.UGX",
|
|
"displayLabel": "Uganda Shilling (USh)"
|
|
}
|
|
],
|
|
"repaymentFrequencyTypeOptions": [
|
|
{
|
|
"id": 0,
|
|
"code": "repaymentFrequency.periodFrequencyType.days",
|
|
"value": "Days"
|
|
},
|
|
{
|
|
"id": 1,
|
|
"code": "repaymentFrequency.periodFrequencyType.weeks",
|
|
"value": "Weeks"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"code": "repaymentFrequency.periodFrequencyType.months",
|
|
"value": "Months"
|
|
}
|
|
],
|
|
"interestRateFrequencyTypeOptions": [
|
|
{
|
|
"id": 2,
|
|
"code": "interestRateFrequency.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"code": "interestRateFrequency.periodFrequencyType.years",
|
|
"value": "Per year"
|
|
}
|
|
],
|
|
"amortizationTypeOptions": [
|
|
{
|
|
"id": 1,
|
|
"code": "amortizationType.equal.installments",
|
|
"value": "Equal installments"
|
|
},
|
|
{
|
|
"id": 0,
|
|
"code": "amortizationType.equal.principal",
|
|
"value": "Equal principle payments"
|
|
}
|
|
],
|
|
"interestTypeOptions": [
|
|
{
|
|
"id": 1,
|
|
"code": "interestType.flat",
|
|
"value": "Flat"
|
|
},
|
|
{
|
|
"id": 0,
|
|
"code": "interestType.declining.balance",
|
|
"value": "Declining Balance"
|
|
}
|
|
],
|
|
"interestCalculationPeriodTypeOptions": [
|
|
{
|
|
"id": 0,
|
|
"code": "interestCalculationPeriodType.daily",
|
|
"value": "Daily"
|
|
},
|
|
{
|
|
"id": 1,
|
|
"code": "interestCalculationPeriodType.same.as.repayment.period",
|
|
"value": "Same as repayment period"
|
|
}
|
|
],
|
|
"transactionProcessingStrategyOptions": [
|
|
{
|
|
"id": 2,
|
|
"code": "heavensfamily-strategy",
|
|
"name": "Heavensfamily"
|
|
}
|
|
],
|
|
"chargeOptions": [
|
|
{
|
|
"id": 1,
|
|
"name": "Bank Fee (per installment)",
|
|
"active": true,
|
|
"penalty": false,
|
|
"currency": {
|
|
"code": "UGX",
|
|
"name": "Uganda Shilling",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "USh",
|
|
"nameCode": "currency.UGX",
|
|
"displayLabel": "Uganda Shilling (USh)"
|
|
},
|
|
"amount": 1500,
|
|
"chargeTimeType": {
|
|
"id": 2,
|
|
"code": "chargeTimeType.specifiedDueDate",
|
|
"value": "Specified due date"
|
|
},
|
|
"chargeAppliesTo": {
|
|
"id": 1,
|
|
"code": "chargeAppliesTo.loan",
|
|
"value": "Loan"
|
|
},
|
|
"chargeCalculationType": {
|
|
"id": 1,
|
|
"code": "chargeCalculationType.flat",
|
|
"value": "Flat"
|
|
}
|
|
}
|
|
],
|
|
"accountingRuleOptions": [
|
|
{
|
|
"id": 1,
|
|
"code": "accountingRuleType.none",
|
|
"value": "NONE"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"code": "accountingRuleType.cash",
|
|
"value": "CASH BASED"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"code": "accountingRuleType.accrual",
|
|
"value": "ACCRUAL BASED"
|
|
}
|
|
],
|
|
"accountingMappingOptions": {
|
|
"assetAccountOptions": [
|
|
{
|
|
"id": 2,
|
|
"name": "Cash in Valut 1",
|
|
"glCode": "11101",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 1,
|
|
"code": "accountType.asset",
|
|
"value": "ASSET"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
}
|
|
},
|
|
{
|
|
"id": 4,
|
|
"name": "Centenary Opening Account",
|
|
"glCode": "11201",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 1,
|
|
"code": "accountType.asset",
|
|
"value": "ASSET"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
}
|
|
}
|
|
],
|
|
"expenseAccountOptions": [
|
|
{
|
|
"id": 41,
|
|
"name": "Water Charges",
|
|
"glCode": "42102",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 5,
|
|
"code": "accountType.expense",
|
|
"value": "EXPENSE"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
}
|
|
},
|
|
{
|
|
"id": 42,
|
|
"name": "Electricity Charges",
|
|
"glCode": "42103",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 5,
|
|
"code": "accountType.expense",
|
|
"value": "EXPENSE"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
}
|
|
},
|
|
{
|
|
"id": 97,
|
|
"name": "Miscellaneous",
|
|
"glCode": "42905",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 5,
|
|
"code": "accountType.expense",
|
|
"value": "EXPENSE"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
}
|
|
}
|
|
],
|
|
"incomeAccountOptions": [
|
|
{
|
|
"id": 34,
|
|
"name": "Interest on Loans",
|
|
"glCode": "31101",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 4,
|
|
"code": "accountType.income",
|
|
"value": "INCOME"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
}
|
|
},
|
|
{
|
|
"id": 35,
|
|
"name": "Late Payment Interest",
|
|
"glCode": "31102",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 4,
|
|
"code": "accountType.income",
|
|
"value": "INCOME"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
}
|
|
},
|
|
{
|
|
"id": 37,
|
|
"name": "Collected Bank Fees Receivable",
|
|
"glCode": "6201",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 4,
|
|
"code": "accountType.income",
|
|
"value": "INCOME"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loanproducts_retrieve" name="loanproducts_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Loan Product</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>loanproducts/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loanproducts/1?template=true</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loanproducts/1?fields=name,description,numberOfRepayments</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/loanproducts/{productId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"name": "LP with Charges but no accounting)",
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"principal": 100000,
|
|
"numberOfRepayments": 12,
|
|
"repaymentEvery": 1,
|
|
"repaymentFrequencyType": {
|
|
"id": 2,
|
|
"code": "repaymentFrequency.periodFrequencyType.months",
|
|
"value": "Months"
|
|
},
|
|
"interestRatePerPeriod": 1.75,
|
|
"interestRateFrequencyType": {
|
|
"id": 2,
|
|
"code": "interestRateFrequency.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
},
|
|
"annualInterestRate": 21,
|
|
"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"
|
|
},
|
|
"transactionProcessingStrategyId": 1,
|
|
"transactionProcessingStrategyName": "Mifos style",
|
|
"charges": [
|
|
{
|
|
"id": 1,
|
|
"name": "Loan service fee",
|
|
"active": true,
|
|
"penalty": false,
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"amount": 230.56,
|
|
"chargeTimeType": {
|
|
"id": 1,
|
|
"code": "chargeTimeType.disbursement",
|
|
"value": "Disbursement"
|
|
},
|
|
"chargeAppliesTo": {
|
|
"id": 1,
|
|
"code": "chargeAppliesTo.loan",
|
|
"value": "Loan"
|
|
},
|
|
"chargeCalculationType": {
|
|
"id": 1,
|
|
"code": "chargeCalculationType.flat",
|
|
"value": "Flat"
|
|
}
|
|
}
|
|
],
|
|
"accountingRule": {
|
|
"id": 1,
|
|
"code": "accountingRuleType.none",
|
|
"value": "NONE"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loanproducts_create" name="loanproducts_create"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a Loan Product</h4>
|
|
<p>Depending of the Accounting Rule (accountingRule) selected,
|
|
additional fields with details of the appropriate Ledger Account
|
|
identifiers would need to be passed in.
|
|
</p>
|
|
|
|
</p>Refer <a href="https://mifosforge.jira.com/wiki/display/MIFOSX/A+Possible+accounting+Spec">
|
|
MifosX Accounting Specs Draft</a> for more details regarding the
|
|
significance of the selected accounting rule
|
|
</p>
|
|
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name, currencyCode, digitsAfterDecimal, principal,
|
|
numberOfRepayments, repaymentEvery, repaymentFrequencyType,
|
|
interestRatePerPeriod, interestRateFrequencyType, amortizationType, interestType,
|
|
interestCalculationPeriodType, transactionProcessingStrategyId, accountingRule</td>
|
|
</tr>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Optional Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>inArrearsTolerance, charges</td>
|
|
</tr>
|
|
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Additional Mandatory Fields for Cash(2) based accounting</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>fundSourceAccountId, loanPortfolioAccountId, interestOnLoanAccountId,
|
|
incomeFromFeeAccountId, incomeFromPenaltyAccountId,
|
|
writeOffAccountId</td>
|
|
</tr>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Additional Mandatory Fields for Accrual(3) based accounting</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>fundSourceAccountId, loanPortfolioAccountId, interestOnLoanAccountId,
|
|
incomeFromFeeAccountId, incomeFromPenaltyAccountId,
|
|
writeOffAccountId, receivableInterestAccountId, receivableFeeAccountId,
|
|
receivablePenaltyAccountId</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/loanproducts
|
|
</code>
|
|
<code class="method-request">
|
|
POST loanproducts
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "LP with Charges but no accounting)",
|
|
"currencyCode": "USD",
|
|
"locale": "en_GB",
|
|
"digitsAfterDecimal": "2",
|
|
"principal": "100,000.00",
|
|
"numberOfRepayments": "12",
|
|
"repaymentEvery": "1",
|
|
"repaymentFrequencyType": 2,
|
|
"interestRatePerPeriod": "1.75",
|
|
"interestRateFrequencyType": 2,
|
|
"amortizationType": 1,
|
|
"interestType": 0,
|
|
"interestCalculationPeriodType": 1,
|
|
"inArrearsTolerance": "0",
|
|
"transactionProcessingStrategyId": 1,
|
|
"charges":[{"id":"1"}],
|
|
"accountingRule": 1
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
<code class="method-request">
|
|
POST loanproducts
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "LP Cash Accounting",
|
|
"currencyCode": "USD",
|
|
"locale": "en_GB",
|
|
"digitsAfterDecimal": "2",
|
|
"principal": "100,000.00",
|
|
"numberOfRepayments": "12",
|
|
"repaymentEvery": "1",
|
|
"repaymentFrequencyType": 2,
|
|
"transactionProcessingStrategyId": 1,
|
|
"interestRatePerPeriod": "1.75",
|
|
"interestRateFrequencyType": 2,
|
|
"amortizationType": 1,
|
|
"interestType": 0,
|
|
"interestCalculationPeriodType": 1,
|
|
"accountingRule":"2",
|
|
"fundSourceAccountId":"4",
|
|
"loanPortfolioAccountId":"8",
|
|
"interestOnLoanAccountId":"34",
|
|
"incomeFromFeeAccountId":"37",
|
|
"incomeFromPenaltyAccountId":"35",
|
|
"writeOffAccountId":"41"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 2
|
|
}
|
|
</code>
|
|
<code class="method-request">
|
|
POST loanproducts
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "LP Accrual Accounting",
|
|
"currencyCode": "USD",
|
|
"locale": "en_GB",
|
|
"digitsAfterDecimal": "2",
|
|
"principal": "100,000.00",
|
|
"numberOfRepayments": "12",
|
|
"repaymentEvery": "1",
|
|
"repaymentFrequencyType": 2,
|
|
"transactionProcessingStrategyId": 1,
|
|
"interestRatePerPeriod": "1.75",
|
|
"interestRateFrequencyType": 2,
|
|
"amortizationType": 1,
|
|
"interestType": 0,
|
|
"interestCalculationPeriodType": 1,
|
|
"accountingRule":"3",
|
|
"fundSourceAccountId":"4",
|
|
"loanPortfolioAccountId":"8",
|
|
"receivableInterestAccountId":"9",
|
|
"receivableFeeAccountId":"11",
|
|
"receivablePenaltyAccountId":"10",
|
|
"interestOnLoanAccountId":"34",
|
|
"incomeFromFeeAccountId":"37",
|
|
"incomeFromPenaltyAccountId":"35",
|
|
"writeOffAccountId":"41"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 3
|
|
}
|
|
</code>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loanproducts_update" name="loanproducts_update"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Loan Product</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/loanproducts/{loanId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT loanproducts/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"locale": "en_GB",
|
|
"principal": "70,000.00"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"principal": 70000,
|
|
"locale": "en_GB"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<!-- end of loan products api docs -->
|
|
|
|
<!-- start of configurations api docs -->
|
|
<a id="configs" name="configs" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Currency</h3>
|
|
<p>Application related configuration around viewing/updating
|
|
the currencies permitted for use within the MFI.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_currencyretrieve" name="configs_currencyretrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Currency Configuration</h4>
|
|
<p>Returns the list of currencies permitted for use AND the
|
|
list of currencies not selected (but available for selection).</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>currencies</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>currencies?fields=selectedCurrencyOptions</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/currencies
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"selectedCurrencyOptions": [
|
|
{
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
}
|
|
],
|
|
"currencyOptions": [
|
|
{
|
|
"code": "AFN",
|
|
"name": "Afghanistan Afghani",
|
|
"decimalPlaces": 2,
|
|
"nameCode": "currency.AFN",
|
|
"displayLabel": "Afghanistan Afghani [AFN]"
|
|
},
|
|
{
|
|
"code": "ALL",
|
|
"name": "Albanian Lek",
|
|
"decimalPlaces": 2,
|
|
"nameCode": "currency.ALL",
|
|
"displayLabel": "Albanian Lek [ALL]"
|
|
},
|
|
{
|
|
"code": "ZWD",
|
|
"name": "Zimbabwe Dollar",
|
|
"decimalPlaces": 2,
|
|
"nameCode": "currency.ZWD",
|
|
"displayLabel": "Zimbabwe Dollar [ZWD]"
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_currencyupdate" name="configs_currencyupdate"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update Currency Configuration</h4>
|
|
<p>Updates the list of currencies permitted for use.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/currencies
|
|
</code>
|
|
<code class="method-request">
|
|
PUT currencies
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"currencies": [
|
|
"KES",
|
|
"BND",
|
|
"LBP",
|
|
"GHC",
|
|
"USD",
|
|
"XOF",
|
|
"AED",
|
|
"AMD"
|
|
]
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"currencies": [
|
|
"KES",
|
|
"BND",
|
|
"LBP",
|
|
"GHC",
|
|
"USD",
|
|
"XOF",
|
|
"AED",
|
|
"AMD"
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_global" name="configs_global" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Global Configuration</h3>
|
|
<p>Global configuration related to set of supported
|
|
enable/disable configurations e.g. maker-checker.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_globalconfig_retrieve"
|
|
name="configs_globalconfig_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Global Configuration</h4>
|
|
<p>Returns the list global enable/disable configurations.</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>configurations</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/configurations
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"globalConfiguration": [
|
|
{
|
|
"name": "maker-checker",
|
|
"enabled": false
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_globalconfig_update" name="configs_globalconfig_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update Global Configuration</h4>
|
|
<p>Updates an enable/disable global configuration item.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/configurations?maker-checker=false
|
|
</code>
|
|
<code class="method-request">
|
|
PUT configurations
|
|
Content-Type: application/json
|
|
Request Body: { }
|
|
</code>
|
|
<code class="method-response">{ "changes": {} } </code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_codes" name="configs_codes" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Codes</h3>
|
|
<p>Code and code values: Codes represent a specific category of
|
|
data, their code values are a specific instance of that category.</p>
|
|
<p>
|
|
Codes are mostly <b>system defined</b> which means the code itself
|
|
comes out of the box and cannot be modified however its code values
|
|
can be. e.g. 'Customer Identifier', it defaults to a code value of
|
|
'Passport' but could be 'Drivers License, National Id' etc
|
|
<p />
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_codes_create" name="configs_codes_create"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a Code</h4>
|
|
<p>Creates a code. Codes created through api are always 'user
|
|
defined' and so system defined is marked as false.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/codes
|
|
</code>
|
|
<code class="method-request">
|
|
POST codes
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "MyNewCode"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 4
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_codes_retrieve" name="configs_codes_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Codes</h4>
|
|
<p>Returns the list of codes.</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>codes</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/codes
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "Customer Identifier",
|
|
"systemDefined": true
|
|
},
|
|
{
|
|
"id": 2,
|
|
"name": "Gender",
|
|
"systemDefined": true
|
|
},
|
|
{
|
|
"id": 3,
|
|
"name": "Education",
|
|
"systemDefined": true
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_code_retrieve" name="configs_code_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Code</h4>
|
|
<p>Returns the details of a Code.</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>codes/1</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/codes/{codeId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"name": "Customer Identifier",
|
|
"systemDefined": true
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_code_update" name="configs_codes_update"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Code</h4>
|
|
<p>Updates the details of a code if it is not system defined.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/codes/{codeId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT codes/4
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "MyNewCode(changed)"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 4,
|
|
"changes": {
|
|
"name": "MyNewCode(changed)"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_code_delete" name="configs_code_delete"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a Code</h4>
|
|
<p>Deletes a code if it is not system defined.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/codes/{codeId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE codes/4
|
|
Content-Type: application/json
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 4
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Code Value starts here -->
|
|
<a id="configs_codes_codevalues" name="configs_codes_codevalues" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Code Values</h3>
|
|
<p>Code and code values: Codes represent a specific category of
|
|
data, their code values are a specific instance of that category.</p>
|
|
<p>
|
|
Codes are mostly <b>system defined</b> which means the code itself
|
|
comes out of the box and cannot be modified however its code values
|
|
can be. e.g. 'Customer Identifier', it defaults to a code value of
|
|
'Passport' but could be 'Drivers License, National Id' etc
|
|
<p />
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_codes_codevalues_create" name="configs_codes_codevalues_create"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a Code Value</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/codes/1/codevalues
|
|
</code>
|
|
<code class="method-request">
|
|
POST codes/1/codevalues
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name":"Ration Card",
|
|
"position":"1"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 4
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_codes_codevalues_list" name="configs_codes_codevalues_list"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Code Values</h4>
|
|
<p>Returns the list of Code Values for a given Code</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>codes/1/codevalues</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/codes/{codeId}/codevalues
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "Passport",
|
|
"position": 0
|
|
},
|
|
{
|
|
"id": 2,
|
|
"name": "Id",
|
|
"position": 0
|
|
},
|
|
{
|
|
"id": 3,
|
|
"name": "Drivers License",
|
|
"position": 0
|
|
},
|
|
{
|
|
"id": 4,
|
|
"name": "Any Other Id Type",
|
|
"position": 0
|
|
},
|
|
{
|
|
"id": 5,
|
|
"name": "Ration Card",
|
|
"position": 1
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_codes_codevalues_retrieve" name="configs_codes_codevalues_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Code Value</h4>
|
|
<p>Returns the details of a Code Value</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>codes/1/codevalues/1</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/codes/{codeId}/codevalues/{codevalueId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"name": "Passport",
|
|
"position": 0
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_codes_codevalues_update" name="configs_codes_codevalues_update"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Code Value</h4>
|
|
<p>Updates the details of a code value.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/codes/{codeId}/codevalues/{codevalueId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT codes/1/codevalues/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "Indian Passport",
|
|
"position":2
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"name": "Indian Passport",
|
|
"position": 2
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="configs_codes_codevalues_delete" name="configs_codes_codevalues_delete"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a Code Value</h4>
|
|
<p>Deletes a code value</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/codes/{codeId}/codevalues/{codevalueId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE codes/1/codevalues/5
|
|
Content-Type: application/json
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 5
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- Funds starts here-->
|
|
<a id="funds" name="funds" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Funds</h3>
|
|
<p>Simple implementation of funds. At present funds can
|
|
optionally be associated with a Loan.</p>
|
|
<p>This information can then be used to produce reports on
|
|
loans/loan amounts drawn from a fund.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="funds_create" name="funds_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a Fund</h4>
|
|
<p>Creates a fund.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/funds
|
|
</code>
|
|
<code class="method-request">
|
|
POST funds
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "EU Agri Fund"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="funds_retrieve" name="funds_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Funds</h4>
|
|
<p>Returns the list of funds.</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>funds</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/funds
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "EU Agri Fund"
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="fund_retrieve" name="fund_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Fund</h4>
|
|
<p>Returns the details of a Fund.</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>funds/1</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/funds/{fundId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"name": "EU Agri Fund"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="fund_update" name="fund_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Fund</h4>
|
|
<p>Updates the details of a fund.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/funds/{fundId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT funds/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "EU Agri Fund (2010-2020)"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"name": "EU Agri Fund (2010-2020)"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a id="staff" name="staff" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Staff</h3>
|
|
<p>Allows you to model staff members. At present the key role
|
|
of signifigance is whether this staff member is a loan officer or
|
|
not.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="staff_create" name="staff_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a staff member</h4>
|
|
<p>Creates a staff member.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/staff
|
|
</code>
|
|
<code class="method-request">
|
|
POST staff
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"officeId": 1,
|
|
"firstname": "John",
|
|
"lastname": "Doe",
|
|
"isLoanOfficer": "true"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="staff_list" name="staff_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Staff</h4>
|
|
<p>Returns the list of staff members.</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>staff</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/staff
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"firstname": "John",
|
|
"lastname": "Doe",
|
|
"displayName": "Doe, John",
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"isLoanOfficer": true
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="staff_retrieve" name="staff_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Staff Member</h4>
|
|
<p>Returns the details of a Staff Member.</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>staff/1</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://DomainName/api/v1/staff/{staffId}</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"firstname": "John",
|
|
"lastname": "Doe",
|
|
"displayName": "Doe, John",
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"isLoanOfficer": true
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="staff_update" name="staff_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Staff Member</h4>
|
|
<p>Updates the details of a staff member.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/staff/{staffId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT staff/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"isLoanOfficer": "false"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"isLoanOfficer": false
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a id="charges" name="charges" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Charges</h3>
|
|
<p>
|
|
Its typical for MFIs to add extra costs to their financial
|
|
products. There are typically <b>Fees</b> or <b>Penalites</b>.
|
|
</p>
|
|
<p>Charges is what we use to model both fees and penalities.
|
|
For now charges can only be associated with loan products / loans.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="charges_create" name="staff_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create/Define a Charge</h4>
|
|
<p>Define a new charge that can later be associated with loan
|
|
products or loans.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/charges
|
|
</code>
|
|
<code class="method-request">
|
|
POST charges
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "Loan service fee",
|
|
"chargeAppliesTo": 1,
|
|
"currencyCode": "USD",
|
|
"locale": "en",
|
|
"amount": "230.56",
|
|
"chargeTimeType": "1",
|
|
"chargeCalculationType": "1",
|
|
"active": true
|
|
}
|
|
</code>
|
|
<code class="method-response">{ "resourceId": 1 }</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="charges_list" name="charges_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Charges</h4>
|
|
<p>Returns the list of defined charges.</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>charges</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/charges
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "Loan service fee",
|
|
"active": true,
|
|
"penalty": false,
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"amount": 230.56,
|
|
"chargeTimeType": {
|
|
"id": 1,
|
|
"code": "chargeTimeType.disbursement",
|
|
"value": "Disbursement"
|
|
},
|
|
"chargeAppliesTo": {
|
|
"id": 1,
|
|
"code": "chargeAppliesTo.loan",
|
|
"value": "Loan"
|
|
},
|
|
"chargeCalculationType": {
|
|
"id": 1,
|
|
"code": "chargeCalculationType.flat",
|
|
"value": "Flat"
|
|
}
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="charges_retrieve" name="charges_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Charge</h4>
|
|
<p>Returns the details of a defined Charge.</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>charges/1</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/charges/{chargeId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"name": "Loan service fee",
|
|
"active": true,
|
|
"penalty": false,
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"amount": 230.56,
|
|
"chargeTimeType": {
|
|
"id": 1,
|
|
"code": "chargeTimeType.disbursement",
|
|
"value": "Disbursement"
|
|
},
|
|
"chargeAppliesTo": {
|
|
"id": 1,
|
|
"code": "chargeAppliesTo.loan",
|
|
"value": "Loan"
|
|
},
|
|
"chargeCalculationType": {
|
|
"id": 1,
|
|
"code": "chargeCalculationType.flat",
|
|
"value": "Flat"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="charges_update" name="charges_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Charge</h4>
|
|
<p>Updates the details of a Charge.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/charges/{chargeId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT charges/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "Loan service fee(changed)"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"name": "Loan service fee(changed)"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="charges_delete" name="charges_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a Charge</h4>
|
|
<p>Deletes a Charge.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/charges/{chargeId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE charges/1
|
|
Content-Type: application/json
|
|
</code>
|
|
<code class="method-response">{ "resourceId": 1 } </code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- start of saving products api docs -->
|
|
<a id="savingsproducts" name="savingsproducts" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Savings Product:</h3>
|
|
<p>An MFIs savings product offerings are modelled using this API.</p>
|
|
<p>When creating savings accounts, the details from the savings product are used to autofill details of savings account.</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG"><td><div class="mifosXHeading2">Field Descriptions</div></td></tr>
|
|
|
|
<tr class=alt><td>name</td></tr>
|
|
<tr><td class=fielddesc>The name of the product offering.</td></tr>
|
|
|
|
<tr class=alt><td>description</td></tr>
|
|
<tr><td class=fielddesc>A description of the product offering.</td></tr>
|
|
|
|
<tr class=alt><td>currencyCode</td></tr>
|
|
<tr><td class=fielddesc>Three letter ISO code reprsenting currency.</td></tr>
|
|
|
|
<tr class=alt><td>digitsAfterDecimal</td></tr>
|
|
<tr><td class=fielddesc>Override the currency default value for digitsAfterDecimal.</td></tr>
|
|
|
|
<tr class=alt><td>interestRate</td></tr>
|
|
<tr><td class=fielddesc>The default interest rate set when creating savings accounts of this type of product. e.g. <b>5</b>% Per year</td></tr>
|
|
|
|
<tr class=alt><td>interestRatePeriodFrequencyType</td></tr>
|
|
<tr><td class=fielddesc>The default interest rate period type. 2=Per month, 3=Per year e.g. 5% <b>Per year</b></td></tr>
|
|
|
|
<tr class=alt><td>minRequiredOpeningBalance</td></tr>
|
|
<tr><td class=fielddesc><b>Optional</b>: If provided, sets the minimum deposit amount required to open a savings account e.g. <b>2,000</b></td></tr>
|
|
|
|
<tr class=alt><td>lockinPeriodFrequency</td></tr>
|
|
<tr><td class=fielddesc><b>Optional</b>: If provided, used along with <i>lockinPeriodFrequencyType</i> to indicate the length of time that the savings account is 'locked in' and withdrawals are not allowed. e.g. <b>6</b> Months</td></tr>
|
|
|
|
<tr class=alt><td>lockinPeriodFrequencyType</td></tr>
|
|
<tr><td class=fielddesc><b>Optional</b>: If provided, used along with <i>lockinPeriodFrequency</i> to indicate the length of time that the savings account is 'locked in' and withdrawals are not allowed. 0=Days, 1=Weeks, 2=Months, 3=Years
|
|
e.g. 6 <b>Months</b></td></tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsproducts_template" name="savingsproducts_template" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Savings Product Template</h4>
|
|
<p>This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<p>Example Request: </p>
|
|
<div class=apiClick>savingsproducts/template</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain Name/api/v1/savingsproducts/template</code>
|
|
<code class="method-response">
|
|
{
|
|
"currency": {
|
|
"code": "",
|
|
"name": "",
|
|
"decimalPlaces": 0,
|
|
"displaySymbol": "",
|
|
"nameCode": "",
|
|
"displayLabel": " []"
|
|
},
|
|
"interestRatePeriodFrequencyType": {
|
|
"id": 3,
|
|
"code": "savings.interest.rate.periodFrequencyType.years",
|
|
"value": "Per year"
|
|
},
|
|
"currencyOptions": [
|
|
{
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
}
|
|
],
|
|
"interestRatePeriodFrequencyTypeOptions": [
|
|
{
|
|
"id": 2,
|
|
"code": "savings.interest.rate.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"code": "savings.interest.rate.periodFrequencyType.years",
|
|
"value": "Per year"
|
|
}
|
|
],
|
|
"lockinPeriodFrequencyTypeOptions": [
|
|
{
|
|
"id": 0,
|
|
"code": "savings.lockin.periodFrequencyType.days",
|
|
"value": "Days"
|
|
},
|
|
{
|
|
"id": 1,
|
|
"code": "savings.lockin.periodFrequencyType.weeks",
|
|
"value": "Weeks"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"code": "savings.lockin.periodFrequencyType.months",
|
|
"value": "Months"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"code": "savings.lockin.periodFrequencyType.years",
|
|
"value": "Years"
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsproducts_create" name="savingsproducts_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a Savings Product</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG"><td><div class="mifosXHeading2">Mandatory Fields</div></td></tr>
|
|
<tr class=alt><td>name, description, currencyCode, digitsAfterDecimal, interestRate, interestRatePeriodFrequencyType</tr>
|
|
</table>
|
|
<br/>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG"><td><div class="mifosXHeading2">Optional Fields</div></td></tr>
|
|
<tr class=alt><td>minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">POST https://Domain Name/api/v1/savingsproducts</code>
|
|
<code class="method-request">POST savingsproducts
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "individual savings",
|
|
"description": "An savings product offering for individuals.",
|
|
"currencyCode": "USD",
|
|
"digitsAfterDecimal": 2,
|
|
"locale": "en",
|
|
"interestRate": "5.65",
|
|
"interestRatePeriodFrequencyType": 2
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsproducts_retrieve" name="savingsproducts_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Savings Product</h4>
|
|
<p>Example Requests: </p>
|
|
<div class=apiClick>savingsproducts/1</div>
|
|
<br><br>
|
|
<div class=apiClick>savingsproducts/1?template=true</div>
|
|
<br><br>
|
|
<div class=apiClick>savingsproducts/1?fields=name,description</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain Name/api/v1/savingsproducts/1</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"name": "individual savings",
|
|
"description": "An savings product offering for individuals. (updated)",
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"interestRate": 5.73,
|
|
"interestRatePeriodFrequencyType": {
|
|
"id": 2,
|
|
"code": "savings.interest.rate.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsproducts_update" name="savingsproducts_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Savings Product</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">PUT https://Domain Name/api/v1/savingsproducts/{productId}</code>
|
|
<code class="method-request">POST savingsproducts/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"description": "An savings product offering for individuals. (updated)",
|
|
"locale": "en",
|
|
"interestRate": "5.73"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"description": "An savings product offering for individuals. (updated)",
|
|
"interestRate": 5.73,
|
|
"locale": "en"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsproducts_delete" name="savingsproducts_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a Savings Product</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://Domain Name/api/v1/savingsproducts/{productId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE savingsproducts/1
|
|
Content-Type: application/json
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsproducts_list" name="savingsproducts_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Savings Products</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>savingsproducts</div>
|
|
<br><br>
|
|
<div class=apiClick>savingsproducts?fields=name</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain Name/api/v1/savingsproducts</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "individual savings",
|
|
"description": "An savings product offering for individuals. (updated)",
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"interestRate": 9.85,
|
|
"interestRatePeriodFrequencyType": {
|
|
"id": 3,
|
|
"code": "savings.interest.rate.periodFrequencyType.years",
|
|
"value": "Per year"
|
|
},
|
|
"minRequiredOpeningBalance": 1000,
|
|
"lockinPeriodFrequency": 3,
|
|
"lockinPeriodFrequencyType": {
|
|
"id": 2,
|
|
"code": "savings.interest.rate.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
}
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<!-- end of saving products api docs -->
|
|
|
|
<!-- start of savings accounts api -->
|
|
<a id="savingsaccounts" name="savingsaccounts" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h2>Savings Account:</h2>
|
|
<p>An instance of a savings account for a individual or group.</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG"><td><div class="mifosXHeading2">Field Descriptions</div></td></tr>
|
|
|
|
<tr class=alt><td>clientId</td></tr>
|
|
<tr><td class=fielddesc>The client you are creating the savings account for. Either <i>clientId</i> or <i>groupId</i> must be provided.</td></tr>
|
|
|
|
<tr class=alt><td>groupId</td></tr>
|
|
<tr><td class=fielddesc>The group you are creating the savings account for. Either <i>clientId</i> or <i>groupId</i> must be provided.</td></tr>
|
|
|
|
<tr class=alt><td>productId</td></tr>
|
|
<tr><td class=fielddesc>The id of the product used for this savings account. The savings account <b>inherits the selected currency</b> of the product and <b>possibly other details if not overridden</b> in the savings account creation request.</td></tr>
|
|
|
|
<tr class=alt><td>accountNo</td></tr>
|
|
<tr><td class=fielddesc>The account no. associated with this loan. Is auto generated if not provided at creation time.</td></tr>
|
|
|
|
<tr class=alt><td>externalId</td></tr>
|
|
<tr><td class=fielddesc>A place to put an external reference for this savings account e.g. The ID another system uses. If provided, it must be unique.</td></tr>
|
|
|
|
<tr class=alt><td>interestRate</td></tr>
|
|
<tr><td class=fielddesc>The default interest rate set when creating savings accounts of this type of product. e.g. <b>5</b>% Per year</td></tr>
|
|
|
|
<tr class=alt><td>interestRatePeriodFrequencyType</td></tr>
|
|
<tr><td class=fielddesc>The default interest rate period type. 2=Per month, 3=Per year e.g. 5% <b>Per year</b></td></tr>
|
|
|
|
<tr class=alt><td>minRequiredOpeningBalance</td></tr>
|
|
<tr><td class=fielddesc><b>Optional</b>: If provided, sets the minimum deposit amount required to open a savings account e.g. <b>2,000</b></td></tr>
|
|
|
|
<tr class=alt><td>lockinPeriodFrequency</td></tr>
|
|
<tr><td class=fielddesc><b>Optional</b>: If provided, used along with <i>lockinPeriodFrequencyType</i> to indicate the length of time that the savings account is 'locked in' and withdrawals are not allowed. e.g. <b>6</b> Months</td></tr>
|
|
|
|
<tr class=alt><td>lockinPeriodFrequencyType</td></tr>
|
|
<tr><td class=fielddesc><b>Optional</b>: If provided, used along with <i>lockinPeriodFrequency</i> to indicate the length of time that the savings account is 'locked in' and withdrawals are not allowed. 0=Days, 1=Weeks, 2=Months, 3=Years
|
|
e.g. 6 <b>Months</b></td></tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsaccounts_template" name="savingsaccounts_template" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h2>Retrieve Savings Account Template:</h2>
|
|
<p>This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<h4>Arguments</h4>
|
|
<dl class="argument-list">
|
|
<dt>clientId</dt>
|
|
<dd>Integer <span>mandatory</span></dd>
|
|
<dt>productId</dt>
|
|
<dd>Integer <span>optional</span></dd>
|
|
<dd>If entered, productId, productName and selectedProduct fields are returned.</dd>
|
|
</dl>
|
|
<p>Example Requests: </p>
|
|
<div class=apiClick>savingsaccounts/template?clientId=1</div>
|
|
<br><br>
|
|
<div class=apiClick>savingsaccounts/template?clientId=1&productId=1</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain Name/api/v1/savingsaccounts/template?clientId={clientId}</code>
|
|
<code class="method-response">
|
|
{
|
|
"clientId": 1,
|
|
"clientName": "Client A AB",
|
|
"productOptions": [
|
|
{
|
|
"id": 1,
|
|
"name": "First"
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain Name/api/v1/savingsaccounts/template?clientId={clientId}&productId={productId}</code>
|
|
<code class="method-response">
|
|
{
|
|
"clientId": 1,
|
|
"clientName": "Client A AB",
|
|
"savingsProductId": 1,
|
|
"savingsProductName": "First",
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"interestRate": 12,
|
|
"interestRatePeriodFrequencyType": {
|
|
"id": 3,
|
|
"code": "savings.interest.rate.periodFrequencyType.years",
|
|
"value": "Per year"
|
|
},
|
|
"minRequiredOpeningBalance": 1000,
|
|
"lockinPeriodFrequency": 3,
|
|
"lockinPeriodFrequencyType": {
|
|
"id": 2,
|
|
"code": "savings.interest.rate.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
},
|
|
"productOptions": [
|
|
{
|
|
"id": 1,
|
|
"name": "First"
|
|
}
|
|
],
|
|
"interestRatePeriodFrequencyTypeOptions": [
|
|
{
|
|
"id": 2,
|
|
"code": "savings.interest.rate.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"code": "savings.interest.rate.periodFrequencyType.years",
|
|
"value": "Per year"
|
|
}
|
|
],
|
|
"lockinPeriodFrequencyTypeOptions": [
|
|
{
|
|
"id": 0,
|
|
"code": "savings.lockin.periodFrequencyType.days",
|
|
"value": "Days"
|
|
},
|
|
{
|
|
"id": 1,
|
|
"code": "savings.lockin.periodFrequencyType.weeks",
|
|
"value": "Weeks"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"code": "savings.lockin.periodFrequencyType.months",
|
|
"value": "Months"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"code": "savings.lockin.periodFrequencyType.years",
|
|
"value": "Years"
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsaccounts_create" name="savingsaccounts_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h2>Create a New Savings Account</h2>
|
|
<br/>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG"><td><div class="mifosXHeading2">Mandatory Fields</div></td></tr>
|
|
<tr class=alt><td>clientId or groupId, productId, accountNo, externalId</td></tr>
|
|
</table>
|
|
<br/>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG"><td><div class="mifosXHeading2">Optional Fields</div></td></tr>
|
|
<tr class=alt><td>accountNo, externalId</td></tr>
|
|
</table>
|
|
<br/>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG"><td><div class="mifosXHeading2">Inherited from Product (if not provided)</div></td></tr>
|
|
<tr class=alt><td>interestRate, interestRatePeriodFrequencyType, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType</td></tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<p>Minimal request: accountNo auto generated, remaining details inherited from savings product.</p>
|
|
<code class="method-declaration">POST https://Domain Name/api/v1/savingsaccounts</code>
|
|
<code class="method-request">POST savingaccount
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"clientId": 1,
|
|
"productId": 1
|
|
}
|
|
</code>
|
|
<p>Minimal request: accountNo provided (must be unique), remaining details inherited from savings product.</p>
|
|
<code class="method-request">POST savingaccount
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"clientId": 1,
|
|
"productId": 1,
|
|
"accountNo": "SA000023",
|
|
"externalId": "SYS-23"
|
|
}
|
|
</code>
|
|
<p>Full request: accountNo provided (must be unique), remaining details override details from savings product (except currency).</p>
|
|
<code class="method-request">POST savingaccount
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"clientId": 1,
|
|
"productId": 1,
|
|
"accountNo": "SA000023",
|
|
"externalId": "SYS-23",
|
|
"locale": "en",
|
|
"interestRate": "5.65",
|
|
"interestRatePeriodFrequencyType": 2,
|
|
"minRequiredOpeningBalance": "1,000",
|
|
"lockinPeriodFrequency": 6,
|
|
"lockinPeriodFrequencyType": 2
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsaccounts_list" name="savingsaccounts_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Savings Accounts</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>savingsaccounts</div>
|
|
<br><br>
|
|
<div class=apiClick>savingsaccounts?fields=name</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain Name/api/v1/savingsaccounts</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"accountNo": "SA000023",
|
|
"externalId": "SYS-23",
|
|
"groupId": 0,
|
|
"clientId": 1,
|
|
"clientName": "Client A AB",
|
|
"savingsProductId": 1,
|
|
"savingsProductName": "First",
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"interestRate": 5.65,
|
|
"interestRatePeriodFrequencyType": {
|
|
"id": 2,
|
|
"code": "savings.interest.rate.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
},
|
|
"annualInterestRate": 67.8,
|
|
"minRequiredOpeningBalance": 1000,
|
|
"lockinPeriodFrequency": 6,
|
|
"lockinPeriodFrequencyType": {
|
|
"id": 2,
|
|
"code": "savings.interest.rate.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
}
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsaccounts_retrieve" name="savingsaccounts_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h2>Retrieve a Savings Account:</h2>
|
|
<h4>Arguments</h4>
|
|
<dl class="argument-list">
|
|
<dt>associations</dt>
|
|
<dd>optional, <span>Either 'all' or a comma separated list of savings 'associations' (itemised below).</span></dd>
|
|
<dd><br>Associations are just extra pieces of data that you might or might not want to retrieve.<br><br></dd>
|
|
<dd><b>'all':</b> Gets data related to all associations e.g. ?associations=all.</dd>
|
|
<dd><b>'transactions':</b> Gets data related to transactions on the account e.g. ?associations=transactions</dd>
|
|
</dl>
|
|
<p>Example Requests : </p>
|
|
<div class=apiClick>savingsaccounts/1</div>
|
|
<br><br>
|
|
<div class=apiClick>savingsaccounts/1?associations=all</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://DomainName/api/v1/savingsaccounts/{accountId}</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"accountNo": "SA000023",
|
|
"externalId": "SYS-23",
|
|
"groupId": 0,
|
|
"clientId": 1,
|
|
"clientName": "Client A AB",
|
|
"savingsProductId": 1,
|
|
"savingsProductName": "First",
|
|
"currency": {
|
|
"code": "USD",
|
|
"name": "US Dollar",
|
|
"decimalPlaces": 2,
|
|
"displaySymbol": "$",
|
|
"nameCode": "currency.USD",
|
|
"displayLabel": "US Dollar ($)"
|
|
},
|
|
"interestRate": 5.65,
|
|
"interestRatePeriodFrequencyType": {
|
|
"id": 2,
|
|
"code": "savings.interest.rate.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
},
|
|
"annualInterestRate": 67.8,
|
|
"minRequiredOpeningBalance": 1000,
|
|
"lockinPeriodFrequency": 6,
|
|
"lockinPeriodFrequencyType": {
|
|
"id": 2,
|
|
"code": "savings.interest.rate.periodFrequencyType.months",
|
|
"value": "Per month"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsaccounts_update" name="savingsaccounts_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h2>Update a Savings Account</h2>
|
|
<p>Will most likely have a restriction to only allow 'inactive' savings accounts to be updated.</p>
|
|
<p>As other updates like change of interest rate are possibly special cases for savings.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">PUT https://Domain Name/api/v1/savingsaccounts/{accountsId}</code>
|
|
<code class="method-request">PUT savingsaccounts/1
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
{
|
|
"locale": "en",
|
|
"interestRate": "5.2323"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"interestRate": 5.2323,
|
|
"locale": "en"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="savingsaccounts_delete" name="savingsaccounts_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h2>Delete a Savings Account</h2>
|
|
<p>At present we support <b>hard</b> delete of savings account but this is likely to change to a savings account <b>closure</b> or <b>de-activation</b> process/command.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">DELETE https://Domain Name/api/v1/savingsaccounts/{accountsId}</code>
|
|
<code class="method-request">DELETE savingsaccounts/1
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<!-- end of savings accounts api -->
|
|
|
|
<!-- start of datatables api docs -->
|
|
<a id="datatables" name="datatables" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Data Tables</h3>
|
|
<p>The datatables API allows you to plug-in your own tables
|
|
(MySql) that have a relationship to a Mifos X core table. For
|
|
example, you might want to add some extra client fields and record
|
|
information about each of the clients' family members. Via the API
|
|
you can create, read, update and delete entries for each
|
|
'plugged-in' table. The API checks for permission and for 'data
|
|
scoping' (only data within the users' office hierarchy can be
|
|
managed by the user).</p>
|
|
<p>The Mifos X Reference App uses a JQuery plugin called
|
|
stretchydatatables (which in turn uses this datatables resource)
|
|
to provide a pretty flexible CRUD (Create, Read, Update, Delete)
|
|
User Interface.</p>
|
|
<p>
|
|
<a
|
|
href="https://mifosforge.jira.com/wiki/display/MIFOSX/Mifos+X+-+Plugging+In+Non-Core+and+User+Defined+Data">More
|
|
Documentation</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a id="datatables_list" name="datatables_list"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Data Tables</h4>
|
|
<p>Lists registered data tables and the Mifos X Core
|
|
application table they are registered to.</p>
|
|
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>apptable</dt>
|
|
<dd>
|
|
<span>optional</span>
|
|
</dd>
|
|
<dd>The Mifos X core application table.</dd>
|
|
</dl>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>datatables?apptable=m_client</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>datatables</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/datatables
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"applicationTableName": "m_client",
|
|
"registeredTableName": "Additional Client Fields Data"
|
|
},
|
|
{
|
|
"applicationTableName": "m_client",
|
|
"registeredTableName": "Extra Family Details Data"
|
|
},
|
|
{
|
|
"applicationTableName": "m_loan",
|
|
"registeredTableName": "Additional Loan Fields Data"
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="datatables_register" name="datatables_register"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Register Data Table</h4>
|
|
<p>Registers a data table with the Mifos X Core application
|
|
table. This allows the data table to be maintained through the
|
|
API.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/datatables/register/{datatable}/{apptable}
|
|
</code>
|
|
<code class="method-request">
|
|
POST datatables/register/extra_client_details/m_client
|
|
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceIdentifier": "extra_client_details"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="datatables_deregister" name="datatables_deregister"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Deregister Data Table</h4>
|
|
<p>Deregisters a data table. It will no longer be available
|
|
through the API.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/datatables/deregister/{datatable}
|
|
</code>
|
|
<code class="method-request">
|
|
POST datatables/deregister/extra_client_details
|
|
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceIdentifier": "extra_client_details"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a id="datatables_create" name="datatables_create"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create Entry in Data Table</h4>
|
|
<p>Adds a row to the data table.</p>
|
|
<p>Note that the default datatable UI functionality converts
|
|
any field name containing spaces to underscores when using the
|
|
API. This means the field name "Business Description" is
|
|
considered the same as "Business_Description". So you shouldn't
|
|
have both "versions" in any data table.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/datatables/{datatable}/{apptableId}
|
|
</code>
|
|
<code class="method-request">
|
|
POST datatables/extra_client_details/1
|
|
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"Business Description": "Livestock sales",
|
|
"Comment": "First comment made",
|
|
"Education_cv": "Primary",
|
|
"Gender_cd": "6",
|
|
"Highest Rate Paid": "8.5",
|
|
"Next Visit": "01 October 2012",
|
|
"Years in Business": "5",
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"locale": "en"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="datatables_retrieve" name="datatables_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Entry(s) from Data Table</h4>
|
|
<p>
|
|
Gets the entry (if it exists) for data tables that are one to one
|
|
with the application table. <br> Gets the entries (if they
|
|
exist) for data tables that are one to many with the application
|
|
table.
|
|
</p>
|
|
<p>Note: The 'fields' parameter is not available for
|
|
datatables.</p>
|
|
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>order</dt>
|
|
<dd>
|
|
<span>optional</span>
|
|
</dd>
|
|
<dd>Specifies the order in which data is returned.</dd>
|
|
<dt>genericResultSet</dt>
|
|
<dd>
|
|
<span>optional</span>
|
|
</dd>
|
|
<dd>If 'true' an optimised JSON format is returned suitable for tabular display of data.
|
|
This format is used by the default data tables UI functionality.</dd>
|
|
</dl>
|
|
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>datatables/extra_client_details/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>datatables/extra_family_details/1?order=`Date of Birth` desc</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>datatables/extra_client_details/1?genericResultSet=true</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/datatables/{datatable}/{apptableId}?genericResultSet=true
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"columnHeaders": [
|
|
{
|
|
"columnName": "client_id",
|
|
"columnType": "bigint",
|
|
"columnLength": 0,
|
|
"columnDisplayType": "INTEGER",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": true,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "Business Description",
|
|
"columnType": "varchar",
|
|
"columnLength": 100,
|
|
"columnDisplayType": "STRING",
|
|
"isColumnNullable": true,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "Years in Business",
|
|
"columnType": "int",
|
|
"columnLength": 0,
|
|
"columnDisplayType": "INTEGER",
|
|
"isColumnNullable": true,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "Gender_cd",
|
|
"columnType": "int",
|
|
"columnLength": 0,
|
|
"columnDisplayType": "CODELOOKUP",
|
|
"isColumnNullable": true,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": [
|
|
{
|
|
"id": 5,
|
|
"value": "option.Male"
|
|
},
|
|
{
|
|
"id": 6,
|
|
"value": "option.Female"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"columnName": "Education_cv",
|
|
"columnType": "varchar",
|
|
"columnLength": 60,
|
|
"columnDisplayType": "CODEVALUE",
|
|
"isColumnNullable": true,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": [
|
|
{
|
|
"id": 9,
|
|
"value": "Primary"
|
|
},
|
|
{
|
|
"id": 10,
|
|
"value": "Secondary"
|
|
},
|
|
{
|
|
"id": 11,
|
|
"value": "University"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"columnName": "Next Visit",
|
|
"columnType": "date",
|
|
"columnLength": 0,
|
|
"columnDisplayType": "DATE",
|
|
"isColumnNullable": true,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "Highest Rate Paid",
|
|
"columnType": "decimal",
|
|
"columnLength": 0,
|
|
"columnDisplayType": "DECIMAL",
|
|
"isColumnNullable": true,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "Comment",
|
|
"columnType": "text",
|
|
"columnLength": 65535,
|
|
"columnDisplayType": "TEXT",
|
|
"isColumnNullable": true,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
}
|
|
],
|
|
"data": [
|
|
{
|
|
"row": [
|
|
"1",
|
|
"Livestock sales",
|
|
"5",
|
|
"6",
|
|
"Primary",
|
|
"2012-10-01",
|
|
"8.500000",
|
|
"First\tcomment made"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a id="datatables_update" name="datatables_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update Entry in Data Table (One to One)</h4>
|
|
<p>Updates the row (if it exists) of the data table.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/datatables/{datatable}/{apptableId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT datatables/extra_client_details/1
|
|
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"Business Description": "Livestock sales updated",
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"Business Description": "Livestock sales updated"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="datatables_update_1M" name="datatables_update_1M"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update Entry in Data Table (One to Many)</h4>
|
|
<p>Updates the row (if it exists) of the data table.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/datatables/{datatable}/{apptableId}/{datatableId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT datatables/Extra Family Details Data/1/2
|
|
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"Date of Birth": "01 June 1982",
|
|
Education_cdHighest: "5",
|
|
Name: "June",
|
|
"Other Notes": "More\nnotes",
|
|
"Points Score": "20",
|
|
dateFormat: "dd MMMM yyyy",
|
|
locale: "en"
|
|
}
|
|
</code>
|
|
<code class="method-response">{ "resourceId": 1 } </code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="datatables_delete" name="datatables_delete"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete Entry(s) in Data Table</h4>
|
|
<p>
|
|
Deletes the entry (if it exists) for data tables that are one-to-one with the application table. <br> Deletes the entries (if they exist) for data tables that are one-to-many with the application table.
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/datatables/{datatable}/{apptableId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE datatables/extra_client_details/1
|
|
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="datatables_delete_1M" name="datatables_delete_1M"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete Entry in Datatable (One to Many)</h4>
|
|
<p>Deletes the entry (if it exists) for data tables that are
|
|
one to many with the application table.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/datatables/{datatable}/{apptableId}/{datatableId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE datatables/extra_family_details/1/2
|
|
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<!-- end of datatables api docs -->
|
|
|
|
<!-- start of Notes api docs -->
|
|
<a id="notes" name="notes" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Notes</h3>
|
|
<p>Notes API allows to enter notes for supported resources.</p>
|
|
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>note</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>A simple text note created for supported resources.</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<br>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Supported Resources</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>
|
|
<a href="#clients">Client</a>
|
|
<br>
|
|
<a href="#loans">Loan</a>
|
|
<br>
|
|
<a href="#groups">Group</a>
|
|
<br>
|
|
<a href="#savingsaccounts">Savings Account</a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="resources_addnote" name="resources_addnote"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Add a Resource Note</h4>
|
|
<p>Adds a new note to a supported resource.</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>note</td>
|
|
</tr>
|
|
</table>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1/notes</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>groups/1/notes</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/{resource}/{resourceId}/notes
|
|
</code>
|
|
<code class="method-request">
|
|
POST clients/1/notes
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"note": "a note about the client"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"resourceId": 76
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="resource_notelist" name="resource_notelist"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Resource's Notes</h4>
|
|
<p>
|
|
<b>Note:</b> Notes are returned in descending createOn order.
|
|
</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/2/notes</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>groups/2/notes?fields=note,createdOn,createdByUsername</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/{resource}/{resourceId}/notes
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 2,
|
|
"clientId": 1,
|
|
"noteType": {
|
|
"id": 100,
|
|
"code": "noteType.client",
|
|
"value": "Client note"
|
|
},
|
|
"note": "First note edited",
|
|
"createdById": 1,
|
|
"createdByUsername": "mifos",
|
|
"createdOn": 1342498505000,
|
|
"updatedById": 1,
|
|
"updatedByUsername": "mifos",
|
|
"updatedOn": 1342498517000
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="resources_retrievenote" name="resources_retrievenote"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Resource Note</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1/notes/76</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>groups/1/notes/20</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>clients/1/notes/76?fields=note,createdOn,createdByUsername</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>groups/1/notes/20?fields=note,createdOn,createdByUsername</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/{resource}/{resourceId}/notes/{noteId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 76,
|
|
"clientId": 1,
|
|
"noteType": {
|
|
"id": 100,
|
|
"code": "noteType.client",
|
|
"value": "Client note"
|
|
},
|
|
"note": "a note about the client",
|
|
"createdById": 1,
|
|
"createdByUsername": "mifos",
|
|
"createdOn": 1359463135000,
|
|
"updatedById": 1,
|
|
"updatedByUsername": "mifos",
|
|
"updatedOn": 1359463135000
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="resources_updatenote" name="resources_updatenote"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Resource Note</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/{resource}/{resourceId}/notes/{noteId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT clients/1/notes/76
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"note": "and here the note is updated nicely."
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"clientId": 1,
|
|
"resourceId": 76,
|
|
"changes": {
|
|
"note": "and here the note is updated nicely."
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="resources_deletenote" name="resources_deletenote"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a Resource Note</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/{resource}/{resourceId}/notes/{noteId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE clients/1/notes/76
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 76
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- end of Notes api docs -->
|
|
|
|
<!-- start of documents api docs -->
|
|
<a id="documents" name="documents" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Documents</h3>
|
|
<p>Multiple Documents (a combination of a name, description
|
|
and a file) may be attached to different Entities
|
|
like Clients, Staff, Loans, Savings and Client
|
|
Identifiers in the system
|
|
</p>
|
|
<p>Note: The currently allowed Entities are
|
|
<ul>
|
|
<li>Clients: URL Pattern as <i>clients</i></li>
|
|
<li>Staff: URL Pattern as <i>staff</i></li>
|
|
<li>Loans: URL Pattern as <i>loans</i></li>
|
|
<li>Savings: URL Pattern as <i>savings</i></li>
|
|
<li>Client Identifiers: URL Pattern as <i>client_identifiers</i></li>
|
|
</ul>
|
|
</p>
|
|
<br/>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>parentEntityType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The type of the Entity
|
|
with which this document is associated
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>parentEntityId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The ID of the entity (client,
|
|
loan etc) with which this document is
|
|
associated</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>User Defined name for the
|
|
document, need not be the same as the name
|
|
of the file associated with the document
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>fileName</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The name of the file associated
|
|
with this document</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>size</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The size (in bytes) of the file
|
|
associated with this document</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>type</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Mime Type of the file
|
|
associated with this document
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>description</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>A description of this document
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="documents_list" name="documents_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List documents</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1/documents</div>
|
|
<br>
|
|
<div class=apiClick>client_identifiers/1/documents</div>
|
|
<br>
|
|
<div class=apiClick>loans/1/documents?fields=name,description</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/{entityType}/{entityId}/documents
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"parentEntityType": "clients",
|
|
"parentEntityId": 1,
|
|
"name": "Client Details Form ",
|
|
"fileName": "CGAP.pdf",
|
|
"size": 5246719,
|
|
"type": "application/pdf",
|
|
"description": "A signed form signed by new member"
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="documents_retrieve" name="documents_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Document</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1/documents/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loans/1/documents/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>client_identifiers/1/documents/1?fields=name,description</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/documents/{clientId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"parentEntityType": "clients",
|
|
"parentEntityId": 1,
|
|
"name": "Client Details Form ",
|
|
"fileName": "CGAP.pdf",
|
|
"size": 5246719,
|
|
"type": "application/pdf",
|
|
"description": "A signed form signed by new member"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="documents_create" name="documents_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a Document</h4>
|
|
<p>
|
|
<b>Note:</b> A document is created using a Multi-part form upload
|
|
<br>
|
|
<table class=matrixHeading>
|
|
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Body Parts</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Name or summary of the document
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>description</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Description of the document
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>file</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The file to be uploaded
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>file and description</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/{entityType}/{entityId}/documents
|
|
</code>
|
|
<code class="method-request">
|
|
POST clients/1/documents
|
|
Content-Type: multipart/form-data
|
|
Request Body:
|
|
<i>Not Shown (multi-part form data)</i>
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId":3,
|
|
"resourceIdentifier":"3"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="documents_update" name="documents_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Document</h4>
|
|
<p>
|
|
<b>Note:</b> A document is updated using a Multi-part form upload
|
|
<br>
|
|
<table class=matrixHeading>
|
|
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Body Parts</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Name or summary of the document
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>description</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Description of the document
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>file</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The file to be uploaded
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/{entityType}/{entityId}/documents/{documentId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT clients/1/documents/1
|
|
Content-Type: multipart/form-data
|
|
Request Body:
|
|
<i>Not Shown (multi-part form data)</i>
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId":3,
|
|
"changes":{},
|
|
"resourceIdentifier":"3"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="documents_retrieve_file" name="documents_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve Binary File associated with Document</h4>
|
|
<p>Request used to download the file associated with the document</p>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1/documents/1/attachment</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loans/1/documents/1/attachment</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/{entityType}/{entityId}/documents/{documentId}/attachment
|
|
</code>
|
|
<code class="method-response">
|
|
<i>Not Shown: The corresponding Binary file</i>
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="documents_delete" name="documents_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Remove a Document</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/{entityType}/{entityId}/documents/{documentId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE clients/1/documents/1
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId":1,
|
|
"changes":{},
|
|
"resourceIdentifier":"1"
|
|
}
|
|
</code>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/{entityType}/{entityId}/documents/{documentId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE loans/1/documents/1
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId":1,
|
|
"changes":{},
|
|
"resourceIdentifier":"1"
|
|
}
|
|
</code>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<!-- start of reports api docs -->
|
|
<a id="reports" name="reports" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Reports</h3>
|
|
<p>The reports resource allows you to run and receive output
|
|
from pre-defined Mifos X reports. The default output is a JSON
|
|
formatted "Generic Resultset". The Generic Resultset contains
|
|
Column Heading as well as Data information. However, you can
|
|
export to CSV format by simply adding "&exportCSV=true" to the end
|
|
of your URL.</p>
|
|
<p>If Pentaho reports have been pre-defined, they can also be
|
|
run through this resource. Pentaho reports can return HTML, PDF or
|
|
CSV formats.</p>
|
|
<p>The Mifos X Individual Lending client application uses a
|
|
JQuery plugin called stretchyreporting which, itself, uses this
|
|
reports resource to provide a pretty flexible reporting User
|
|
Interface (UI).</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<a id="reports_list" name="reports_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Reports</h4>
|
|
<p>Lists all reports and their parameters. If a report has more
|
|
than one parameter it will be listed the same number of times as
|
|
it has parameters.</p>
|
|
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>exportCSV</dt>
|
|
<dd>
|
|
optional, <span>The only valid value is 'true'. If any
|
|
other value is provided the argument will be ignored</span>
|
|
</dd>
|
|
<dd>Output will be delivered as a CSV file instead of JSON.</dd>
|
|
</dl>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>reports</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>reports?exportCSV=true</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/reports
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"columnHeaders": [
|
|
{
|
|
"columnName": "report_id",
|
|
"columnType": "INT",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "report_name",
|
|
"columnType": "VARCHAR",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "report_type",
|
|
"columnType": "VARCHAR",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "report_subtype",
|
|
"columnType": "VARCHAR",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "report_category",
|
|
"columnType": "VARCHAR",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "parameter_id",
|
|
"columnType": "INT",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "report_parameter_name",
|
|
"columnType": "VARCHAR",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "parameter_name",
|
|
"columnType": "VARCHAR",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
}
|
|
],
|
|
"data": [
|
|
{
|
|
"row": [
|
|
"10",
|
|
"Active Loans Portfolio Status",
|
|
"Table",
|
|
null,
|
|
"Loan",
|
|
"5",
|
|
null,
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"10",
|
|
"Active Loans Portfolio Status",
|
|
"Table",
|
|
null,
|
|
"Loan",
|
|
"6",
|
|
null,
|
|
"loanOfficerIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"10",
|
|
"Active Loans Portfolio Status",
|
|
"Table",
|
|
null,
|
|
"Loan",
|
|
"10",
|
|
null,
|
|
"currencyIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"10",
|
|
"Active Loans Portfolio Status",
|
|
"Table",
|
|
null,
|
|
"Loan",
|
|
"20",
|
|
null,
|
|
"fundIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"10",
|
|
"Active Loans Portfolio Status",
|
|
"Table",
|
|
null,
|
|
"Loan",
|
|
"25",
|
|
null,
|
|
"loanProductIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"11",
|
|
"Active Loans Summary per Branch",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"5",
|
|
null,
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"11",
|
|
"Active Loans Summary per Branch",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"10",
|
|
null,
|
|
"currencyIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"48",
|
|
"Balance Sheet",
|
|
"Pentaho",
|
|
null,
|
|
"Accounting",
|
|
"5",
|
|
"branch",
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"48",
|
|
"Balance Sheet",
|
|
"Pentaho",
|
|
null,
|
|
"Accounting",
|
|
"41",
|
|
"date",
|
|
"endDateSelect"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"1",
|
|
"Client Listing",
|
|
"Table",
|
|
null,
|
|
"Client",
|
|
"5",
|
|
null,
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"2",
|
|
"Client Loans Listing",
|
|
"Table",
|
|
null,
|
|
"Client",
|
|
"5",
|
|
null,
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"2",
|
|
"Client Loans Listing",
|
|
"Table",
|
|
null,
|
|
"Client",
|
|
"6",
|
|
null,
|
|
"loanOfficerIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"2",
|
|
"Client Loans Listing",
|
|
"Table",
|
|
null,
|
|
"Client",
|
|
"10",
|
|
null,
|
|
"currencyIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"2",
|
|
"Client Loans Listing",
|
|
"Table",
|
|
null,
|
|
"Client",
|
|
"20",
|
|
null,
|
|
"fundIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"2",
|
|
"Client Loans Listing",
|
|
"Table",
|
|
null,
|
|
"Client",
|
|
"25",
|
|
null,
|
|
"loanProductIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"20",
|
|
"Funds Disbursed Between Dates Summary",
|
|
"Table",
|
|
null,
|
|
"Fund",
|
|
"10",
|
|
null,
|
|
"currencyIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"20",
|
|
"Funds Disbursed Between Dates Summary",
|
|
"Table",
|
|
null,
|
|
"Fund",
|
|
"20",
|
|
null,
|
|
"fundIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"20",
|
|
"Funds Disbursed Between Dates Summary",
|
|
"Table",
|
|
null,
|
|
"Fund",
|
|
"40",
|
|
null,
|
|
"startDateSelect"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"20",
|
|
"Funds Disbursed Between Dates Summary",
|
|
"Table",
|
|
null,
|
|
"Fund",
|
|
"41",
|
|
null,
|
|
"endDateSelect"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"21",
|
|
"Funds Disbursed Between Dates Summary by Office",
|
|
"Table",
|
|
null,
|
|
"Fund",
|
|
"5",
|
|
null,
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"21",
|
|
"Funds Disbursed Between Dates Summary by Office",
|
|
"Table",
|
|
null,
|
|
"Fund",
|
|
"10",
|
|
null,
|
|
"currencyIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"21",
|
|
"Funds Disbursed Between Dates Summary by Office",
|
|
"Table",
|
|
null,
|
|
"Fund",
|
|
"20",
|
|
null,
|
|
"fundIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"21",
|
|
"Funds Disbursed Between Dates Summary by Office",
|
|
"Table",
|
|
null,
|
|
"Fund",
|
|
"40",
|
|
null,
|
|
"startDateSelect"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"21",
|
|
"Funds Disbursed Between Dates Summary by Office",
|
|
"Table",
|
|
null,
|
|
"Fund",
|
|
"41",
|
|
null,
|
|
"endDateSelect"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"49",
|
|
"Income Statement",
|
|
"Pentaho",
|
|
null,
|
|
"Accounting",
|
|
"5",
|
|
"branch",
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"49",
|
|
"Income Statement",
|
|
"Pentaho",
|
|
null,
|
|
"Accounting",
|
|
"40",
|
|
"fromDate",
|
|
"startDateSelect"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"49",
|
|
"Income Statement",
|
|
"Pentaho",
|
|
null,
|
|
"Accounting",
|
|
"41",
|
|
"toDate",
|
|
"endDateSelect"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"5",
|
|
"Loans Awaiting Disbursal",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"5",
|
|
null,
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"5",
|
|
"Loans Awaiting Disbursal",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"6",
|
|
null,
|
|
"loanOfficerIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"5",
|
|
"Loans Awaiting Disbursal",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"10",
|
|
null,
|
|
"currencyIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"5",
|
|
"Loans Awaiting Disbursal",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"20",
|
|
null,
|
|
"fundIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"5",
|
|
"Loans Awaiting Disbursal",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"25",
|
|
null,
|
|
"loanProductIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"6",
|
|
"Loans Awaiting Disbursal Summary",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"5",
|
|
null,
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"6",
|
|
"Loans Awaiting Disbursal Summary",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"6",
|
|
null,
|
|
"loanOfficerIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"6",
|
|
"Loans Awaiting Disbursal Summary",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"10",
|
|
null,
|
|
"currencyIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"6",
|
|
"Loans Awaiting Disbursal Summary",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"20",
|
|
null,
|
|
"fundIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"6",
|
|
"Loans Awaiting Disbursal Summary",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"25",
|
|
null,
|
|
"loanProductIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"7",
|
|
"Loans Awaiting Disbursal Summary by Month",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"5",
|
|
null,
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"7",
|
|
"Loans Awaiting Disbursal Summary by Month",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"6",
|
|
null,
|
|
"loanOfficerIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"7",
|
|
"Loans Awaiting Disbursal Summary by Month",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"10",
|
|
null,
|
|
"currencyIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"7",
|
|
"Loans Awaiting Disbursal Summary by Month",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"20",
|
|
null,
|
|
"fundIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"7",
|
|
"Loans Awaiting Disbursal Summary by Month",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"25",
|
|
null,
|
|
"loanProductIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"15",
|
|
"Portfolio at Risk",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"5",
|
|
null,
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"15",
|
|
"Portfolio at Risk",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"6",
|
|
null,
|
|
"loanOfficerIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"15",
|
|
"Portfolio at Risk",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"10",
|
|
null,
|
|
"currencyIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"15",
|
|
"Portfolio at Risk",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"20",
|
|
null,
|
|
"fundIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"15",
|
|
"Portfolio at Risk",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"25",
|
|
null,
|
|
"loanProductIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"16",
|
|
"Portfolio at Risk by Branch",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"5",
|
|
null,
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"16",
|
|
"Portfolio at Risk by Branch",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"6",
|
|
null,
|
|
"loanOfficerIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"16",
|
|
"Portfolio at Risk by Branch",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"10",
|
|
null,
|
|
"currencyIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"16",
|
|
"Portfolio at Risk by Branch",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"20",
|
|
null,
|
|
"fundIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"16",
|
|
"Portfolio at Risk by Branch",
|
|
"Table",
|
|
null,
|
|
"Loan Portfolio",
|
|
"25",
|
|
null,
|
|
"loanProductIdSelectAll"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"50",
|
|
"Trial Balance",
|
|
"Pentaho",
|
|
null,
|
|
"Accounting",
|
|
"5",
|
|
"branch",
|
|
"OfficeIdSelectOne"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"50",
|
|
"Trial Balance",
|
|
"Pentaho",
|
|
null,
|
|
"Accounting",
|
|
"40",
|
|
"fromDate",
|
|
"startDateSelect"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"50",
|
|
"Trial Balance",
|
|
"Pentaho",
|
|
null,
|
|
"Accounting",
|
|
"41",
|
|
"toDate",
|
|
"endDateSelect"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="report_run" name="report_run" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Running a Report</h4>
|
|
<p>Runs a report and returns the report output.</p>
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>R_'parameter names' ...</dt>
|
|
<dd>
|
|
optional, <span>No defaults</span>
|
|
</dd>
|
|
<dd>The number and names of the parameters depend on the
|
|
specific report and how it has been configured. R_officeId is an
|
|
example parameter name.</dd>
|
|
<dd>Note: the prefix R_ stands for Reporting</dd>
|
|
<dt>parameterType</dt>
|
|
<dd>
|
|
optional, <span>The only valid value is 'true'. If any
|
|
other value is provided the argument will be ignored</span>
|
|
</dd>
|
|
<dd>Determines whether the request looks in the list of
|
|
reports or the list of parameters for its data. Doesn't apply to
|
|
Pentaho reports.</dd>
|
|
<dt>exportCSV</dt>
|
|
<dd>
|
|
optional, <span>The only valid value is 'true'. If any
|
|
other value is provided the argument will be ignored</span>
|
|
</dd>
|
|
<dd>Output will be delivered as a CSV file instead of JSON.
|
|
Doesn't apply to Pentaho reports.</dd>
|
|
<dt>output-type</dt>
|
|
<dd>
|
|
optional, <span>Defaults to HTML.</span>
|
|
</dd>
|
|
<dd>Valid Values are HTML, XLS, CSV and PDF for html, Excel,
|
|
CSV and PDF formats respectively.</dd>
|
|
<dd>Only applies to Pentaho reports.</dd>
|
|
</dl>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>reports/Client%20Listing?R_officeId=1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>reports/Client%20Listing?R_officeId=1&exportCSV=true</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>reports/selectOfficeId?R_officeId=1&parameterType=true</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>reports/selectOfficeId?R_officeId=1&parameterType=true&exportCSV=true</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>reports/Client Listing
|
|
(Pentaho)?output-type=HTML&R_officeId=1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>reports/Client Listing
|
|
(Pentaho)?output-type=XLS&R_officeId=1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>reports/Client Listing
|
|
(Pentaho)?output-type=CSV&R_officeId=1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>reports/Client Listing
|
|
(Pentaho)?output-type=PDF&R_officeId=1</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/reports/{reportName}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"columnHeaders": [
|
|
{
|
|
"columnName": "Office/Branch",
|
|
"columnType": "VARCHAR",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "Client Account No.",
|
|
"columnType": "VARCHAR",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "Name",
|
|
"columnType": "VARCHAR",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "Joined",
|
|
"columnType": "DATE",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
},
|
|
{
|
|
"columnName": "External Id",
|
|
"columnType": "VARCHAR",
|
|
"isColumnNullable": false,
|
|
"isColumnPrimaryKey": false,
|
|
"columnValues": []
|
|
}
|
|
],
|
|
"data": [
|
|
{
|
|
"row": [
|
|
"Head Office",
|
|
"000000001",
|
|
"Petra Yton",
|
|
"2009-03-04",
|
|
"786YYH7"
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"Head Office",
|
|
"000000002",
|
|
"Keith(changed) Yton",
|
|
"2009-03-04",
|
|
null
|
|
]
|
|
},
|
|
{
|
|
"row": [
|
|
"Head Office",
|
|
"000000003",
|
|
"Jorge lastname",
|
|
"2013-02-05",
|
|
null
|
|
]
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- start of authentication api docs -->
|
|
<a id="authentication" name="authentication" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Authentication</h3>
|
|
<p>An API capability that allows client applications to verify
|
|
authentication details.</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>base64EncodedAuthenticationKey</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>HTTP Basic Auth key. See <a
|
|
href="#authentication_overview">Authentication Overview</a> for
|
|
an example of its use.
|
|
</td>
|
|
</tr>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="authenticate_request" name="authenticate_request"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Verify authentication</h4>
|
|
<p>Authenticates the credentials provided and returns the set roles and permissions allowed.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/authentication?username={username}&password={password}
|
|
</code>
|
|
<code class="method-request">
|
|
POST authentication?username=mifos&password=password
|
|
Content-Type: application/json
|
|
No Request Body
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"username": "mifos",
|
|
"userId": 1,
|
|
"base64EncodedAuthenticationKey": "bWlmb3M6cGFzc3dvcmQ=",
|
|
"authenticated": true,
|
|
"roles": [
|
|
{
|
|
"id": 1,
|
|
"name": "Super user",
|
|
"description": "This role provides all application permissions."
|
|
}
|
|
],
|
|
"permissions": [
|
|
"ALL_FUNCTIONS"
|
|
]
|
|
}
|
|
</code>
|
|
<code class="method-request">
|
|
POST authentication?username=mifos&password=fail
|
|
Content-Type: application/json
|
|
No Request Body
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"developerMessage": "Invalid authentication details were passed in api request.",
|
|
"developerDocLink": "https://github.com/keithwoodlock/mifosx/wiki/HTTP-API-Error-codes",
|
|
"httpStatusCode": "401",
|
|
"defaultUserMessage": "Unauthenticated. Please login.",
|
|
"userMessageGlobalisationCode": "error.msg.not.authenticated",
|
|
"errors": []
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- start of users api docs -->
|
|
<a id="users" name="users" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Users</h3>
|
|
<p>An API capability to support administration of application users.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="users_list" name="users_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve list of users</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>users</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>users?fields=id,username,email,officeName</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/users
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"username": "mifos",
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"firstname": "App",
|
|
"lastname": "Administrator",
|
|
"email": "demomfi@mifos.org"
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="users_template" name="users_template" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve User Details Template</h4>
|
|
<p>This is a convenience resource. It can be useful when
|
|
building maintenance user interface screens for client
|
|
applications. The template data returned consists of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>users/template</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/users/template
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"allowedOffices": [
|
|
{
|
|
"id": 1,
|
|
"name": "Head Office",
|
|
"nameDecorated": "Head Office"
|
|
}
|
|
],
|
|
"availableRoles": [
|
|
{
|
|
"id": 1,
|
|
"name": "Super user",
|
|
"description": "This role provides all application permissions."
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="users_retrieve" name="users_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a User</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>users/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>users/1?template=true</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>users/1?fields=username,officeName</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/users/{userId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"username": "mifos",
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"firstname": "App",
|
|
"lastname": "Administrator",
|
|
"email": "demomfi@mifos.org",
|
|
"availableRoles": [],
|
|
"selectedRoles": [
|
|
{
|
|
"id": 1,
|
|
"name": "Super user",
|
|
"description": "This role provides all application permissions."
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="users_create" name="users_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a User</h4>
|
|
<p>Adds new application user.</p>
|
|
<p>
|
|
<b>Note:</b> Password information is not required (or processed).
|
|
Password details at present are auto-generated and then sent to
|
|
the email account given (which is why it can take a few seconds to
|
|
complete).
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>username, firstname, lastname, email, officeId, roles</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/users
|
|
</code>
|
|
<code class="method-request">
|
|
POST users
|
|
Content-Type: application/json
|
|
Request body:
|
|
{
|
|
"username": "newuser",
|
|
"firstname": "Test",
|
|
"lastname": "User",
|
|
"email": "whatever@mifos.org",
|
|
"officeId": 1,
|
|
"roles": [2,3]
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"resourceId": 11
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="users_update" name="users_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a User</h4>
|
|
<p>
|
|
<b>Note:</b> When updating a password you must provide the
|
|
repeatPassword parameter also.
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/users/{userId)
|
|
</code>
|
|
<code class="method-request">
|
|
PUT users/3
|
|
Content-Type: application/json
|
|
Request body:
|
|
{
|
|
"firstname": "Test",
|
|
"password": "window75",
|
|
"repeatPassword": "window75"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"resourceId": 3,
|
|
"changes": {
|
|
"firstname": "Test",
|
|
"passwordEncoded": "abc3326b1bb376351c7baeb4175f5e0504e33aadf6a158474a6d71de1befae51"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="users_delete" name="users_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a User</h4>
|
|
<p>Removes the user and the associated roles and permissions.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/users/{userId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE users/20
|
|
Content-Type: application/json
|
|
No Request Body
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"resourceId": 20,
|
|
"changes": {}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
<!-- end of users api docs -->
|
|
|
|
<!-- start of roles api docs -->
|
|
<a id="roles" name="users" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Roles</h3>
|
|
<p>An API capability to support management of application roles for user administration.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="roles_list" name="roles_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Roles</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>roles</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>roles?fields=name</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/roles
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "Super user",
|
|
"description": "This role provides all application permissions."
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="roles_retrieve" name="roles_retrieve" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Role</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>roles/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>roles/1?fields=name</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/roles/{roleId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"name": "Super user",
|
|
"description": "This role provides all application permissions."
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="roles_create" name="roles_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a New Role</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name, description</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/roles
|
|
</code>
|
|
<code class="method-request">
|
|
POST roles
|
|
Content-Type: application/json
|
|
Request body:
|
|
{
|
|
"name": "Another Role Name",
|
|
"description": "A description outlining the purpose of this role in relation to the application."
|
|
}
|
|
</code>
|
|
<code class="method-response">{ "resourceId": 2} </code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="roles_update" name="roles_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Role</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/roles/{roleId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT roles/1
|
|
Content-Type: application/json
|
|
Request body:
|
|
{
|
|
"description": "some description(changed)"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"description": "some description(changed)"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="rolespermissions_retrieve" name="rolespermissions_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Role's Permissions</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>roles/1/permissions</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/roles/{roleId}/permissions
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"name": "Super user",
|
|
"description": "This role provides all application permissions.",
|
|
"permissionUsageData": [
|
|
{
|
|
"grouping": "authorisation",
|
|
"code": "READ_PERMISSION",
|
|
"entityName": "PERMISSION",
|
|
"actionName": "READ",
|
|
"selected": false
|
|
},
|
|
...
|
|
{
|
|
"grouping": "transaction_loan",
|
|
"code": "WRITEOFF_LOAN_CHECKER",
|
|
"entityName": "LOAN",
|
|
"actionName": "WRITEOFF",
|
|
"selected": false
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="rolespermissions_update" name="rolespermissions_update"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Role's Permissions</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/roles/{roleId}/permissions
|
|
</code>
|
|
<code class="method-request">
|
|
PUT roles/8
|
|
Content-Type: application/json
|
|
Request body:
|
|
{
|
|
"permissions": {
|
|
"ALL_FUNCTIONS_READ": "true"
|
|
}
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 8,
|
|
"changes": {
|
|
"permissions": {
|
|
"ALL_FUNCTIONS_READ": true
|
|
}
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- start of permissions api docs -->
|
|
<a id="permissions" name="permissions" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Permissions</h3>
|
|
<p>An API capability to support management of application permissions for user administration.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="permissions_list" name="permissions_list"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Application Permissions</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>permissions</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>permissions?fields=grouping,code</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/permissions
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"grouping": "authorisation",
|
|
"code": "READ_PERMISSION",
|
|
"entityName": "PERMISSION",
|
|
"actionName": "READ",
|
|
"selected": true
|
|
},
|
|
....
|
|
{
|
|
"grouping": "transaction_loan",
|
|
"code": "WRITEOFF_LOAN",
|
|
"entityName": "LOAN",
|
|
"actionName": "WRITEOFF",
|
|
"selected": true
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- start of accounting api docs -->
|
|
<a id="glaccounts" name="glaccounts" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>General Ledger Account</h3>
|
|
<p>Ledger accounts represent an Individual account within an Organizations Chart
|
|
Of Accounts(COA) and are assigned a name and unique number by which they can
|
|
be identified. <br/>
|
|
All transactions relating to a company's assets, liabilities, owners' equity,
|
|
revenue and expenses are recorded against these accounts
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The name of the account</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>glCode</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The ledger code associated with the
|
|
Account<br>These codes are mandatory and should be unique within
|
|
an organization</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>A boolean flag that indicates whether an account
|
|
is currently in use</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>type</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Classifies the account into one of the following Types
|
|
<br/><b>Asset:</b> 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<br/>
|
|
<b>Liability:</b> represent the different types of economic obligations
|
|
by a business, such as accounts payable, bank loan, bonds payable<br/>
|
|
<b>Income:</b> represent the company's gross earnings and common examples
|
|
include Interest Income, Sales and Service revenue<br/>
|
|
<b>Expense:</b> represent the company's expenditures to enable itself to
|
|
operate. Common examples are electricity and water, rentals, depreciation,
|
|
doubtful accounts, insurance.<br/>
|
|
<b>Equity:</b> represent the residual equity of a business (after
|
|
deducting from Assets all the liabilities) including Retained Earnings
|
|
and Appropriations <br/><br/>
|
|
The options are fully listed in <a href="#glaccounts_template">Retrieve
|
|
General Ledger Accounts Template</a>.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>usage</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Determines how the account shall be used<br>
|
|
"Header" accounts specify the title of a group of accounts. They are used
|
|
only for grouping together detail accounts that have a similar purpose; that is, detail accounts
|
|
are assigned to specific header accounts
|
|
<br/>
|
|
"Detail" accounts may have transactions logged against them<br/><br/>
|
|
The options are fully listed in <a href="#glaccounts_template">Retrieve
|
|
General Ledger Accounts Template</a>.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>manualEntriesAllowed</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Specifies if manual entries can be made
|
|
against this account using the <a href="#journalentries_create">
|
|
Create Journal Entries API</a> </td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>description</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Human understandable description for the Ledger Account
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glaccounts_list" name="glaccounts_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List General Ledger Accounts</h4>
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>type</dt>
|
|
<dd>
|
|
Integer <span>optional</span>
|
|
</dd>
|
|
<dt>manualEntriesAllowed</dt>
|
|
<dd>
|
|
boolean <span>optional</span>
|
|
</dd>
|
|
<dt>usage</dt>
|
|
<dd>
|
|
Integer <span>optional</span>
|
|
</dd>
|
|
<dt>disabled</dt>
|
|
<dd>
|
|
boolean <span>optional</span>
|
|
</dd>
|
|
</dl>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>glaccounts</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>glaccounts?type=1&manualEntriesAllowed=true&usage=1&disabled=false</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/glaccounts
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 16,
|
|
"name": "Cash",
|
|
"glCode": "100001",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 1,
|
|
"code": "accountType.asset",
|
|
"value": "ASSET"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
},
|
|
"description": "Desc"
|
|
},
|
|
{
|
|
"id": 15,
|
|
"name": "Fund Source For Loan",
|
|
"glCode": "100002",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 1,
|
|
"code": "accountType.asset",
|
|
"value": "ASSET"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
},
|
|
"description": "Desc"
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glaccounts_template" name="glaccounts_template"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve GL Accounts Template</h4>
|
|
<p>This is a convenience resource. It can be useful when
|
|
building maintenance user interface screens for client
|
|
applications. The template data returned consists of any or all
|
|
of:
|
|
<ul>
|
|
<li class=normalli>Field Defaults</li>
|
|
<li class=normalli>Allowed Value Lists</li>
|
|
</ul>
|
|
</p>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>glaccounts/template</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/glaccounts/template
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 1,
|
|
"code": "accountType.asset",
|
|
"value": "ASSET"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
},
|
|
"accountTypeOptions": [
|
|
{
|
|
"id": 1,
|
|
"code": "accountType.asset",
|
|
"value": "ASSET"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"code": "accountType.liability",
|
|
"value": "LIABILITY"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"code": "accountType.equity",
|
|
"value": "EQUITY"
|
|
},
|
|
{
|
|
"id": 4,
|
|
"code": "accountType.income",
|
|
"value": "INCOME"
|
|
},
|
|
{
|
|
"id": 5,
|
|
"code": "accountType.expense",
|
|
"value": "EXPENSE"
|
|
}
|
|
],
|
|
"usageOptions": [
|
|
{
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"code": "accountUsage.header",
|
|
"value": "HEADER"
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a id="glaccounts_retrieve" name="glaccounts_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a General Ledger Account</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>glaccounts/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>glaccounts/1?template=true</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>glaccounts/1?fields=name,glCode</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/glaccounts/{glaccountsId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"name": "Cash",
|
|
"glCode": "100001",
|
|
"disabled": false,
|
|
"manualEntriesAllowed": true,
|
|
"type": {
|
|
"id": 1,
|
|
"code": "accountType.asset1",
|
|
"value": "ASSET"
|
|
},
|
|
"usage": {
|
|
"id": 1,
|
|
"code": "accountUsage.detail",
|
|
"value": "DETAIL"
|
|
},
|
|
"description": "Desc"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glaccounts_create" name="glaccounts_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a General Ledger Account</h4>
|
|
<p>
|
|
<b>Note:</b> You may optionally
|
|
create Hierarchical Chart of Accounts by using the "parentId"
|
|
property of an Account<br>
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name, glCode, type, usage and manualEntriesAllowed
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/glaccounts
|
|
</code>
|
|
<code class="method-request">
|
|
POST glaccounts
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "Cash at Bangalore",
|
|
"glCode": "100017",
|
|
"manualEntriesAllowed": true,
|
|
"type": 1,
|
|
"usage": 1,
|
|
"description": "Cash at Bangalore Branch"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 22
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glaccounts_update" name="glaccounts_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a General Ledger Account</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/glaccounts/{glaccountId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT glaccounts/22
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"name": "Cash at Bangalore rural"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 22,
|
|
"changes": {
|
|
"name": "Cash at Bangalore rural"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-request">
|
|
PUT glaccounts/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"disabled": true
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"disabled": true
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glaccounts_delete" name="glaccounts_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete a General Ledger Account</h4>
|
|
<p>
|
|
<b>Note:</b> Only Ledger Accounts against which no transactions have been logged
|
|
(either manually or by the loan or Savings portfolio) can be deleted.
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/glaccounts/{glaccountId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE glaccounts/1
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"resourceId": 1,
|
|
"changes": {}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glclosures" name="glclosures" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Accounting Closure</h3>
|
|
<p>An accounting closure indicates that no more journal
|
|
entries may be logged (or reversed) in the system,
|
|
either manually or via the portfolio with an entry date
|
|
prior to the defined closure date
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>closingDate</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The date for which the
|
|
accounting closure is defined</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>officeId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The identifer of the branch for
|
|
which accounting has been closed</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>comments</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Description associated with an
|
|
Accounting closure</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glclosures_list" name="glclosures_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Accounting closures</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>glclosures</div>
|
|
<br>
|
|
<br>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/glclosures
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 7,
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"closingDate": [
|
|
2013,
|
|
1,
|
|
2
|
|
],
|
|
"deleted": false,
|
|
"createdDate": [
|
|
2013,
|
|
1,
|
|
3
|
|
],
|
|
"lastUpdatedDate": [
|
|
2013,
|
|
1,
|
|
3
|
|
],
|
|
"createdByUserId": 1,
|
|
"createdByUsername": "mifos",
|
|
"lastUpdatedByUserId": 1,
|
|
"lastUpdatedByUsername": "mifos",
|
|
"comments": "closed",
|
|
},
|
|
{
|
|
"id": 6,
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"closingDate": [
|
|
2012,
|
|
12,
|
|
13
|
|
],
|
|
"deleted": false,
|
|
"createdDate": [
|
|
2012,
|
|
12,
|
|
14
|
|
],
|
|
"lastUpdatedDate": [
|
|
2012,
|
|
12,
|
|
14
|
|
],
|
|
"createdByUserId": 1,
|
|
"createdByUsername": "mifos",
|
|
"lastUpdatedByUserId": 1,
|
|
"lastUpdatedByUsername": "mifos",
|
|
"comments": "hello",
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glclosures_retrieve" name="glclosures_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve an Accounting Closure</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>glclosures/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>/glclosures/1?fields=officeName,closingDate</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/glclosures/{glclosureId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 7,
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"closingDate": [
|
|
2013,
|
|
1,
|
|
2
|
|
],
|
|
"deleted": false,
|
|
"createdDate": [
|
|
2013,
|
|
1,
|
|
3
|
|
],
|
|
"lastUpdatedDate": [
|
|
2013,
|
|
1,
|
|
3
|
|
],
|
|
"createdByUserId": 1,
|
|
"createdByUsername": "mifos",
|
|
"lastUpdatedByUserId": 1,
|
|
"lastUpdatedByUsername": "mifos",
|
|
"comments": "closed",
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glclosures_create" name="glclosures_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create an Accounting Closure</h4>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>officeId,closingDate
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/glclosures
|
|
</code>
|
|
<code class="method-request">
|
|
POST glclosures
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"officeId": 1,
|
|
"closingDate": "06 December 2012",
|
|
"comments": "The accountants are heading for a carribean vacation",
|
|
"locale": "en" ,
|
|
"dateFormat": "dd MMMM yyyy"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"resourceId": 9
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glclosures_update" name="glclosures_update" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update an Accounting closure</h4>
|
|
<p>Once an accounting closure is created, only the comments associated with it may be edited
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
PUT https://DomainName/api/v1/glclosures/{glclosureId}
|
|
</code>
|
|
<code class="method-request">
|
|
PUT glclosures/1
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"comments": "All transactions verified by Johnny Cash"
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"resourceId": 1,
|
|
"changes": {
|
|
"comments": "All transactions verified by Johnny Cash"
|
|
}
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="glclosures_delete" name="glclosures_delete" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Delete an accounting closure</h4>
|
|
<p>
|
|
<b>Note:</b> Only the latest accounting closure
|
|
associated with a branch may be deleted.
|
|
</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
DELETE https://DomainName/api/v1/glclosures/{glclosureId}
|
|
</code>
|
|
<code class="method-request">
|
|
DELETE glclosures/1
|
|
Content-Type: application/json
|
|
No Request Body:
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"resourceId": 1
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="journalentries" name="journalentries" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h3>Journal Entries</h3>
|
|
<p>A journal entry refers to the logging of
|
|
transactions against general ledger accounts. A journal
|
|
entry may consist of several line items, each of which is either a "debit" or a "credit". The total amount of the
|
|
debits must equal the total amount of the credits or the
|
|
journal entry is said to be "unbalanced" <br/><br/>
|
|
A journal entry directly changes the account balances on
|
|
the general ledger
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>officeId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The identifier of the office (
|
|
cost center) at which the financial activity
|
|
occured</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>glAccountId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The identifier of the account (
|
|
Ledger Account) against which this journal entry
|
|
was made
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>transactionDate</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The target date for which this
|
|
entry was recorded</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>amount</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The Monetary amount associated
|
|
with this entry
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>comments</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>A description associated with
|
|
this entry</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>entryType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Either a Credit(1) or a Debit(2)</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>transactionId</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>A unique Identifier for a set
|
|
of related Credit and Debit entries that make up
|
|
a "balanced" jounral Entry. For a manual entry,
|
|
this feild is a unique string.<br/>
|
|
For a system generated entry, the combination
|
|
of transactionId and entityId is unique
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>manualEntry</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Flag determines if an entry is
|
|
generated by the portfolio (posted automatically by
|
|
the system during the lifecycle of loan or saving
|
|
products) or manually created by using the <a href="
|
|
journalentries_create">Create (Balanced) Journal
|
|
Entries</a> API
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>reversed</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Flag determines if this manual
|
|
journal entry has been reversed using the <a href="
|
|
journalentries_reverse">Reverse a Journal Entry</a>
|
|
API. <br/>
|
|
Note: A journal entry is reversed by logging debits
|
|
for all credits that make up the Journal entry and
|
|
vice-versa
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="journalentries_list" name="journalentries_list" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>List Journal Entries</h4>
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>officeId</dt>
|
|
<dd>
|
|
Integer <span>optional</span>
|
|
</dd>
|
|
<dt>glAccountId</dt>
|
|
<dd>
|
|
Integer <span>optional</span>
|
|
</dd>
|
|
<dt>manualEntriesOnly</dt>
|
|
<dd>
|
|
Boolean <span>optional</span>
|
|
</dd>
|
|
<dd>Flag determines if only manually created journal entries
|
|
are to be returned( journal entries created by
|
|
the system during lifecycle of loan or saving
|
|
products etc shall be excluded)
|
|
<br/>
|
|
Set to "false" by default if not passed in explicity
|
|
</dd>
|
|
<dt>fromDate</dt>
|
|
<dd>
|
|
Date (yyyy-MM-dd)<span>optional</span>
|
|
</dd>
|
|
<dd>Filters for Journal entries whose entry Date
|
|
is greater than or equal to the passed in Date
|
|
</dd>
|
|
<dt>toDate</dt>
|
|
<dd>
|
|
Date (yyyy-MM-dd)<span>optional</span>
|
|
</dd>
|
|
<dd>Filters for Journal entries whose entry Date
|
|
is lesser than or equal to the passed in Date
|
|
</dd>
|
|
<dt>transactionId</dt>
|
|
<dd>
|
|
String <span>optional</span>
|
|
</dd>
|
|
</dl>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>journalentries?transactionId=PB37X8Y21EQUY4S</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>journalentries?officeId=1&glAccountId=17&manualEntriesOnly=true&fromDate=2012-01-01&toDate=2013-01-01</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/journalentries?transactionId=PB37X8Y21EQUY4S
|
|
</code>
|
|
<code class="method-response">
|
|
[
|
|
{
|
|
"id": 81,
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"glAccountName": "Something totally else",
|
|
"glAccountId": 17,
|
|
"glAccountCode": "340098",
|
|
"glAccountType": {
|
|
"id": 3,
|
|
"code": "accountType.equity",
|
|
"value": "EQUITY"
|
|
},
|
|
"transactionDate": [
|
|
2012,
|
|
12,
|
|
12
|
|
],
|
|
"entryType": {
|
|
"id": 2,
|
|
"code": "journalEntrytType.debit",
|
|
"value": "DEBIT"
|
|
},
|
|
"amount": 120,
|
|
"transactionId": "PB37X8Y21EQUY4S",
|
|
"manualEntry": true,
|
|
"createdByUserId": 1,
|
|
"createdDate": [
|
|
2012,
|
|
12,
|
|
13
|
|
],
|
|
"createdByUserName": "mifos",
|
|
"reversed": true
|
|
},
|
|
{
|
|
"id": 82,
|
|
"officeId": 1,
|
|
"officeName": "Head Office",
|
|
"glAccountName": "Something else",
|
|
"glAccountId": 19,
|
|
"glAccountCode": "560050",
|
|
"glAccountType": {
|
|
"id": 3,
|
|
"code": "accountType.equity",
|
|
"value": "EQUITY"
|
|
},
|
|
"transactionDate": [
|
|
2012,
|
|
12,
|
|
12
|
|
],
|
|
"entryType": {
|
|
"id": 1,
|
|
"code": "journalEntryType.credit",
|
|
"value": "CREDIT"
|
|
},
|
|
"amount": 120,
|
|
"transactionId": "PB37X8Y21EQUY4S",
|
|
"manualEntry": true,
|
|
"createdByUserId": 1,
|
|
"createdDate": [
|
|
2012,
|
|
12,
|
|
13
|
|
],
|
|
"createdByUserName": "mifos",
|
|
"reversed": true
|
|
}
|
|
]
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="journalentries_create" name="journalentries_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create "Balanced" Journal Entries</h4>
|
|
<p>
|
|
<b>Note:</b> A Balanced (simple) Journal entry would
|
|
have atleast one "Debit" and one "Credit" entry whose
|
|
amounts are equal <br/>
|
|
Compound Journal entries may have "n" debits and "m"
|
|
credits where both "m" and "n" are greater than 0
|
|
and the net sum or all debits and credits are equal
|
|
<br>
|
|
</p>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>officeId, transactionDate
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>credits</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Details of the credits contained
|
|
in the journal entry. Each credit entry contains
|
|
the following items <br/>
|
|
glAccountId: Identifier of the general ledger
|
|
account against which the credit entry shall be
|
|
made <br/>
|
|
amount: Amount of money credited
|
|
<br/>
|
|
comments: Optional description associated with
|
|
a credit entry
|
|
</a>.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>debits</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Details of the debits contained
|
|
in the journal entry. Each debit entry contains the
|
|
following items <br/>
|
|
glAccountId: Identifier of the general ledger account
|
|
against which the debit entry shall be
|
|
made <br/>
|
|
amount: Amount of money debited
|
|
<br/>
|
|
comments: Optional description associated with
|
|
a debit entry
|
|
</a>.
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
POST https://DomainName/api/v1/journalentries
|
|
</code>
|
|
<code class="method-request">
|
|
POST journalentries
|
|
Content-Type: application/json
|
|
Request Body:
|
|
{
|
|
"officeId": 1,
|
|
"transactionDate": "06 December 2012",
|
|
"comments": "Gifts for staff",
|
|
"locale": "en" ,
|
|
"dateFormat": "dd MMMM yyyy",
|
|
"credits":[{"glAccountId":1,
|
|
"amount":5000},
|
|
{"glAccountId":2,
|
|
"amount":5000}
|
|
],
|
|
"debits":[{"glAccountId":3,
|
|
"amount":5000},
|
|
{"glAccountId":4,
|
|
"amount":5000}
|
|
]
|
|
}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"officeId": 1,
|
|
"transactionId": "DNEEMS2LPD0NJ9O"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="journalentries_retrieve" name="journalentries_retrieve"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a single Entry</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>journalentries/1</div>
|
|
<br>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>journalentries/1?fields=officeName,glAccountId,entryType,amount</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/journalentries/{entryId}
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"id": 1,
|
|
"officeId": 2,
|
|
"officeName": "sub branch 1",
|
|
"glAccountName": "Income from interest",
|
|
"glAccountId": 14,
|
|
"glAccountCode": "400001",
|
|
"glAccountType": {
|
|
"id": 4,
|
|
"code": "accountType.income",
|
|
"value": "INCOME"
|
|
},
|
|
"transactionDate": [
|
|
2012,
|
|
11,
|
|
2
|
|
],
|
|
"entryType": {
|
|
"id": 1,
|
|
"code": "journalEntryType.credit",
|
|
"value": "CREDIT"
|
|
},
|
|
"amount": 900,
|
|
"transactionId": "13",
|
|
"manualEntry": true,
|
|
"createdByUserId": 1,
|
|
"createdDate": [
|
|
2012,
|
|
11,
|
|
2
|
|
],
|
|
"createdByUserName": "mifos",
|
|
"reversed": false
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="journalentries_reverse" name="journalentries_reverse"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Reverse a Journal Entry</h4>
|
|
<p>
|
|
<b>Note:</b> A journal entry is reversed by logging debits
|
|
for all credits that constitute the Journal entry and
|
|
vice-versa. The transactionId of the "reversal Entry" is returned
|
|
as the methods response
|
|
</p>
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>command</dt>
|
|
<dd>
|
|
String<span> Mandatory, case-insensitive</span>
|
|
</dd>
|
|
<dd>'reverse' : Reverse the Journal Entry</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">
|
|
GET https://DomainName/api/v1/journalentries/{transactionId}
|
|
</code>
|
|
<code class="method-request">
|
|
POST journalentries/C1MAE935K0IAEYA?command=reverse
|
|
Content-Type: application/json
|
|
</code>
|
|
<code class="method-response">
|
|
{
|
|
"transactionId": "YFDYMPBVVI9TRJP"
|
|
}
|
|
</code>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
<!-- main-content-wrapper -->
|
|
|
|
<a id="fullapi_matrix" name="fullapi_matrix" class="old-syle-anchor"> </a>
|
|
<br>
|
|
<br>
|
|
<br>
|
|
<div class=fullMatrixOuter>
|
|
<table width="80%">
|
|
<tr>
|
|
<td><h3>
|
|
Full API Matrix
|
|
</h3></td>
|
|
</tr>
|
|
</table>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">POST</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>create/complex update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">PUT</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>update</div></td>
|
|
</tr>
|
|
</table></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">DELETE</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>delete</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#clients">Clients</a></td>
|
|
<td>clients</td>
|
|
<td><a href="#clients_create">Create a Client</a></td>
|
|
<td><a href="#clients_list">List Clients</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>clients/{clientId}</td>
|
|
<td></td>
|
|
<td><a href="#clients_retrieve">Retrieve a Client</a></td>
|
|
<td><a href="#clients_update">Update a Client</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>clients/{clientId}/loans</td>
|
|
<td></td>
|
|
<td><a href="#clients_loansummary">Retrieve a Client's
|
|
Loan Account Summary</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#client_identifiers">Client Identifiers</a></td>
|
|
<td>clients/{clientId}/identifiers</td>
|
|
<td><a href="#client_identifiers_create">Create an Identifier for a Client</a></td>
|
|
<td><a href="#client_identifiers_list">List all Identifiers for a Client</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>clients/{clientId}/identifiers/{identifierId}</td>
|
|
<td></td>
|
|
<td><a href="#client_identifiers_retrieve">Retrieve a Client Identifier</a></td>
|
|
<td><a href="#client_identifiers_update">Update a Client Identifier</a></td>
|
|
<td><a href="#client_identifiers_delete">Delete a Client Identifier</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#client_images">Client Images</a></td>
|
|
<td>clients/{clientId}/images</td>
|
|
<td><a href="#client_images_create">Upload an Image for a Client (as DATA URI)</a></td>
|
|
<td><a href="#client_images_retrieve">Get Client Image (DATA URI)</a></td>
|
|
<td><a href="#client_images_update">Update Client Image (DATA URI)</a></td>
|
|
<td><a href="#client_images_delete">Delete Client Image</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td></td>
|
|
<td><a href="#client_images_create_form">
|
|
Upload an Image for a Client (Multi-part form data)</a>
|
|
</td>
|
|
<td><a href="#client_images_retrieve_binary">Get Client Image (Binary file)</a></td>
|
|
<td><a href="#client_images_update_form">
|
|
Update Client Image (Multi-part form data)</a>
|
|
</td>
|
|
<td></td>
|
|
</tr>
|
|
<!-- loans api full matrix-->
|
|
<tr class="alt">
|
|
<td><a href="#loanproducts">Loan Product</a></td>
|
|
<td>loanproducts</td>
|
|
<td><a href="#loanproducts_create">Create a Loan Product</a></td>
|
|
<td><a href="#loanproducts_list">List Loan Products</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loanproducts/{productId}</td>
|
|
<td></td>
|
|
<td><a href="#loanproducts_retrieve">Retrieve a Loan
|
|
Product</a></td>
|
|
<td><a href="#loanproducts_update">Update a Loan Product</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#loans">Loans</a></td>
|
|
<td>loans?calculateLoanSchedule</td>
|
|
<td><a href="#loans_calculate">Calculate Loan Repayment Schedule</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans</td>
|
|
<td><a href="#loans_create">Submit a new Loan Application</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}</td>
|
|
<td></td>
|
|
<td><a href="#loans_retrieve">Retrieve a Loan</a></td>
|
|
<td></td>
|
|
<td><a href="#loans_delete">Delete a Loan Application</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}?command=approve</td>
|
|
<td><a href="#loans_approve">Approve Loan Application</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}?command=undoApproval</td>
|
|
<td><a href="#loans_approve_undo">Undo Loan Application Approval</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}?command=reject</td>
|
|
<td><a href="#loans_reject">Reject Loan Application</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}?command=withdraw</td>
|
|
<td><a href="#loans_withdraw">Withdraw Loan Application</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}?command=disburse</td>
|
|
<td><a href="#loans_disburse">Disburse Loan</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}?command=undoDisbursal</td>
|
|
<td><a href="#loans_disburse_undo">Undo Loan Application Disbursal</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#loans_transactions">Loan Transactions</a></td>
|
|
<td>loans/{loanId}/transactions?command=repayment</td>
|
|
<td><a href="#loans_transaction_repayment">Enter a repayment</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}/transactions?command=waiveInterest</td>
|
|
<td><a href="#loans_transaction_waiveinterest">Waive Interest</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}/transactions/{transactionId}</td>
|
|
<td></td>
|
|
<td><a href="#loans_transaction_retrieve">Retrieve a transactions details</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}/transactions/{transactionId}</td>
|
|
<td><a href="#loans_transaction_adjust">Adjust a Transaction</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#loans_charges">Loan Charges</a></td>
|
|
<td>loans/{loanId}/charges</td>
|
|
<td><a href="#loans_charges_create">Add a loan charge</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}/charges/{loanChargeId}</td>
|
|
<td></td>
|
|
<td><a href="#loans_charges_retrieve">Retrieve a Loan Charge</a></td>
|
|
<td><a href="#loans_charges_update">Modify a Loan Charge</a></td>
|
|
<td><a href="#loans_charges_delete">Delete a Loan Charge</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#guarantors">Loan Guarantors</a></td>
|
|
<td>loans/{loanId}/guarantors</td>
|
|
<td><a href="#guarantors_create">Create a Guarantor
|
|
</a></td>
|
|
<td><a href="#guarantors_list">List Guarantors
|
|
</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}/guarantors/{guarantorId}</td>
|
|
<td></td>
|
|
<td><a href="#guarantors_retrieve">Retrieve a Guarantor</a></td>
|
|
<td><a href="#guarantors_update">Update a Guarantor</a></td>
|
|
<td><a href="#guarantors_delete">Delete a Guarantor</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#savingsproducts">Savings Product</a></td>
|
|
<td>savingsproducts</td>
|
|
<td><a href="#savingsproducts_create">Create a Savings product</a></td>
|
|
<td><a href="#savingsproducts_list">List Savings products</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>savingsproducts/{productId}</td>
|
|
<td></td>
|
|
<td><a href="#savingsproducts_retrieve">Retrieve a Savings product</a></td>
|
|
<td><a href="#savingsproducts_update">Update a Savings product</a></td>
|
|
<td><a href="#savingsproducts_delete">Delete a Savings product</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#savingsaccounts">Savings Accounts</a></td>
|
|
<td>savingsaccounts</td>
|
|
<td><a href="#savingsaccounts_create">Create new Savings Account</a></td>
|
|
<td><a href="#savingsaccounts_list">List Savings Accounts</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>savingsaccounts/{accountId}</td>
|
|
<td></td>
|
|
<td><a href="#savingsaccounts_retrieve">Retrieve a Savings Account</a></td>
|
|
<td><a href="#savingsaccounts_update">Update a Savings Account</a></td>
|
|
<td><a href="#savingsaccounts_delete">Delete a Savings Account</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#offices">Office</a></td>
|
|
<td>offices</td>
|
|
<td><a href="#offices_create">Create an Office</a></td>
|
|
<td><a href="#offices_list">List Offices</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>offices/{officeId}</td>
|
|
<td></td>
|
|
<td><a href="#offices_retrieve">Retrieve an Office</a></td>
|
|
<td><a href="#offices_update">Update an Office</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr class="alt">
|
|
<td><a href="#configs">CURRENCY</a></td>
|
|
<td>currencies</td>
|
|
<td></td>
|
|
<td><a href="#configs_currencyretrieve">Retrieve Currency
|
|
Configuration</a></td>
|
|
<td><a href="#configs_currencyupdate">Update Currency
|
|
Configuration</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#configs_global">GLOBAL CONFIGURATION</a></td>
|
|
<td>configurations</td>
|
|
<td></td>
|
|
<td><a href="#configs_globalconfig_retrieve">Retrieve
|
|
Global Configuration</a></td>
|
|
<td><a href="#configs_globalconfig_update">Update Global
|
|
Configuration</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#configs_codes">CODES</a></td>
|
|
<td>codes</td>
|
|
<td><a href="#configs_codes_create">Create a Code</a></td>
|
|
<td><a href="#configs_codes_retrieve">List Codes</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>codes/{codeId}</td>
|
|
<td></td>
|
|
<td><a href="#configs_code_retrieve">Retrieve a Code</a></td>
|
|
<td><a href="#configs_code_update">Update a Code</a></td>
|
|
<td><a href="#configs_code_delete">Delete a Code</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#configs_codes_codevalues">CODE VALUES</a></td>
|
|
<td>codes/{codeId}/codevalues</td>
|
|
<td><a href="#configs_codes_codevalues_create">Create a Code Value</a></td>
|
|
<td><a href="#configs_codes_codevalues_list">List Code Values</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr >
|
|
<td></td>
|
|
<td>codes/{codeId}/codevalues/{codevalueId}</td>
|
|
<td></td>
|
|
<td><a href="#configs_codes_codevalues_retrieve">Retrieve a Code Value</a></td>
|
|
<td><a href="#configs_codes_codevalues_update">Update a Code Value</a></td>
|
|
<td><a href="#configs_codes_codevalues_delete">Delete a Code Value</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#funds">FUNDS</a></td>
|
|
<td>funds</td>
|
|
<td><a href="#funds_create">Create a Fund</a></td>
|
|
<td><a href="#funds_retrieve">List Funds</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>funds/{fundId}</td>
|
|
<td></td>
|
|
<td><a href="#fund_retrieve">Retrieve a Fund</a></td>
|
|
<td><a href="#fund_update">Update a Fund</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#staff">STAFF</a></td>
|
|
<td>staff</td>
|
|
<td><a href="#staff_create">Create a Staff</a></td>
|
|
<td><a href="#staff_list">List Staff</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>staff/{staffId}</td>
|
|
<td></td>
|
|
<td><a href="#staff_retrieve">Retrieve a Staff Member</a></td>
|
|
<td><a href="#staff_update">Update a Staff Member</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#charges">CHARGES</a></td>
|
|
<td>charges</td>
|
|
<td><a href="#charges_create">Create a Charge</a></td>
|
|
<td><a href="#charges_list">List Charges</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>charges/{chargeId}</td>
|
|
<td></td>
|
|
<td><a href="#charges_retrieve">Retrieve a Charge</a></td>
|
|
<td><a href="#charges_update">Update a Charge</a></td>
|
|
<td><a href="#charges_delete">Delete a Charge</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#datatables">DATA TABLE</a></td>
|
|
<td>datatables</td>
|
|
<td></td>
|
|
<td><a href="#datatables_list">List Data Tables</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>datatables/register/{datatable}/{apptable}</td>
|
|
<td><a href="#datatables_register">Register Data Table</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>datatables/deregister/{datatable}</td>
|
|
<td><a href="#datatables_deregister">Deregister Data Table</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>datatables/{datatable}/{apptableId}</td>
|
|
<td><a href="#datatables_create">Create Entry in Data
|
|
Table</a></td>
|
|
<td><a href="#datatables_retrieve">Retrieve Entry(s) from
|
|
Data Table</a></td>
|
|
<td><a href="#datatables_update">Update Entry in Data
|
|
Table (One to One)</a></td>
|
|
<td><a href="#datatables_delete">Delete Entry(s) in Data
|
|
Table</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>datatables/{datatable}/{apptableId}/{datatableId}</td>
|
|
<td></td>
|
|
<td><a href="#datatables_update_1M">Update Entry in Data
|
|
Table (One to Many)</a></td>
|
|
<td></td>
|
|
<td><a href="#datatables_delete_1M">Delete Entry in Data
|
|
Table (One to Many)</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#documents">Documents</a></td>
|
|
<td>{entityType}/{entityId}/documents</td>
|
|
<td><a href="#documents_create">Create a Document</td>
|
|
<td><a href="#documents_list">List All Document Details</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>{entityType}/{entityId}/documents/{documentId}</td>
|
|
<td></td>
|
|
<td><a href="#documents_retrieve">Retrieve a Documents Details</a></td>
|
|
<td><a href="#documents_update">Update a Document</a></td>
|
|
<td><a href="#documents_delete">Delete a Document</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>{entityType}/{entityId}/documents/{documentId}/attachment</td>
|
|
<td></td>
|
|
<td><a href="#documents_retrieve_file">Retrieve
|
|
binary file associated with a
|
|
Document</a>
|
|
</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#notes">NOTES</a></td>
|
|
<td>{resource}/{resourceId}/notes</td>
|
|
<td><a href="#resources_addnote">Add a Resource Note</td>
|
|
<td><a href="#resource_notelist">Retrieve a Resource's Notes</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>{resource}/{resourceId}/notes/{noteId}</td>
|
|
<td></td>
|
|
<td><a href="#resources_retrievenote">List All
|
|
Notes for a Resource</a></td>
|
|
<td><a href="#resources_updatenote">Update a Resource Note</a></td>
|
|
<td><a href="#resources_deletenote">Delete a Resource Note</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#glaccounts">General Ledger Account</a></td>
|
|
<td>glaccounts</td>
|
|
<td><a href="#glaccounts_create">Create a New Ledger Account</a></td>
|
|
<td><a href="#glaccounts_list">List Ledger Accounts</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>glaccounts/{glaccountId}</td>
|
|
<td></td>
|
|
<td><a href="#glaccounts_retrieve">Retrieve a Ledger Account</a></td>
|
|
<td><a href="#glaccounts_update">Update a Ledger Account</a></td>
|
|
<td><a href="#glaccounts_delete">Delete a Ledger Account</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#glclosures">Accounting Closure</a></td>
|
|
<td>glclosures</td>
|
|
<td><a href="#glclosures_create">Create an Accounting Closure</a></td>
|
|
<td><a href="#glclosures_list">List Accounting Closures</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>glclosures/{glclosureId}</td>
|
|
<td></td>
|
|
<td><a href="#glclosures_retrieve">Retrieve an Accounting Closure</a></td>
|
|
<td><a href="#glclosures_update">Update an Accounting Closure</a></td>
|
|
<td><a href="#glclosures_delete">Delete an Accounting Closure</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#journalentries">Journal Entries</a></td>
|
|
<td>journalentries</td>
|
|
<td><a href="#journalentries_create">Create Journal Entries</a></td>
|
|
<td><a href="#journalentries_list">List Journal Entries</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>journalentries/{entryId}</td>
|
|
<td></td>
|
|
<td><a href="#journalentries_retrieve">Retrieve a single Entry</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>journalentries/{transactionId}/reversal</td>
|
|
<td><a href="#journalentries_reverse">Reverse Journal Entries</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#reports">REPORT</a></td>
|
|
<td>reports</td>
|
|
<td></td>
|
|
<td><a href="#reports_list">List Reports</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>reports/{reportName}</td>
|
|
<td></td>
|
|
<td><a href="#report_run">Run a Report</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#authentication">AUTHENTICATION</a></td>
|
|
<td>authentication</td>
|
|
<td><a href="#authenticate_request">Verify Authentication</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#users">USER</a></td>
|
|
<td>users</td>
|
|
<td><a href="#users_create">Create a User</a></td>
|
|
<td><a href="#users_list">List Users</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>users/{userId}</td>
|
|
<td></td>
|
|
<td><a href="#users_retrieve">Retrieve a User</a></td>
|
|
<td><a href="#users_update">Update a User</a></td>
|
|
<td><a href="#users_delete">Delete a User</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#roles">ROLE</a></td>
|
|
<td>roles</td>
|
|
<td><a href="#roles_create">Create a New Role</a></td>
|
|
<td><a href="#roles_list">List Roles</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>roles/{roleId}</td>
|
|
<td></td>
|
|
<td><a href="#roles_retrieve">Retrieve a Role</a></td>
|
|
<td><a href="#roles_update">Update a Role</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>roles/{roleId}/permissions</td>
|
|
<td></td>
|
|
<td><a href="#rolespermissions_retrieve">Retrieve a Role's
|
|
Permissions</a></td>
|
|
<td><a href="#rolespermissions_update">Update a Role's
|
|
Permissions</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#permissions">PERMISSION</a></td>
|
|
<td>permissions</td>
|
|
<td></td>
|
|
<td><a href="#permissions_list">List Permissions</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td valign="top"><div class="matrixHeadingVerbs">
|
|
<table>
|
|
<tr>
|
|
<td>TEMPLATE RESOURCES</td>
|
|
</tr>
|
|
</table>
|
|
</div></td>
|
|
<td><table>
|
|
<tr>
|
|
<td><div class="matrixHeadingVerbs">GET</div></td>
|
|
</tr>
|
|
<tr>
|
|
<td><div class=matrixHeadingCommands>read</div></td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>clients/template</td>
|
|
<td><a href="#clients_template">Retrieve Client Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>loanproducts/template</td>
|
|
<td><a href="#loanproducts_template">Retrieve Loan Product Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>loans/template?clientId={clientId}</td>
|
|
<td><a href="#loans_template">Retrieve Loan Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>loans/{loanId}/transactions/template</td>
|
|
<td><a href="#loans_repaymenttemplate_etc">Retrieve Tranaction Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>savingproducts/template</td>
|
|
<td><a href="#savingsproducts_template">Retrieve Savings Product Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>savingsaccounts/template?clientId={clientId}</td>
|
|
<td><a href="#savingsaccounts_template">Retrieve Savings Account Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>offices/template</td>
|
|
<td><a href="#offices_template">Retrieve Office Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>users/template</td>
|
|
<td><a href="#users_template">Retrieve User Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>audit/searchtemplate</td>
|
|
<td><a href="#audit_searchtemplate">Retrieve Audit Search Template</a></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
$(document).ready(function() {
|
|
|
|
$('.apiClick').bind('click', function() {
|
|
clickAPILink($(this).text());
|
|
});
|
|
|
|
$('.apiClickNotPretty').bind('click', function() {
|
|
clickAPILinkNotPretty($(this).text());
|
|
});
|
|
|
|
baseURL = getBaseURL(window.location.href);
|
|
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |