4517 lines
163 KiB
HTML
4517 lines
163 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>
|
|
<td></td>
|
|
<td>clients/{clientId}/notes</td>
|
|
<td><a href="#clients_addnote">Add a Client Note</a></td>
|
|
<td><a href="#clients_notes">Retrieve a Client's Notes</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>clients/{clientId}/notes/{noteId}</td>
|
|
<td></td>
|
|
<td><a href="#clients_retrievenote">Retrieve a Client
|
|
Note</a></td>
|
|
<td><a href="#clients_updatenote">Update a Client Note</a></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">LOAN</a></td>
|
|
<td>loans</td>
|
|
<td><a href="#loans_create">Create a New Loan / Submit
|
|
a Loan Application</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}</td>
|
|
<td><a href="#loans_approve_etc">Approve, Undo
|
|
Approval, Disburse, Undo Disbursal, Reject a Loan or Withdraw
|
|
a Loan Application</a></td>
|
|
<td><a href="#loans_retrieve">Retrieve a Loan</a></td>
|
|
<td></td>
|
|
<td><a href="#loans_delete">Delete a Loan</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}/transactions</td>
|
|
<td><a href="#loans_repayment_etc">Make a Repayment /
|
|
Loan Waiver</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}/transactions/{transactionId}</td>
|
|
<td><a href="#loans_repaymentadjust_etc">Adjust a
|
|
Repayment or Waiver</a></td>
|
|
<td><a href="#loans_repaymentretrieve_etc">Retrieve a
|
|
Repayment or Waiver Details</a></td>
|
|
<td></td>
|
|
<td></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>
|
|
</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>
|
|
</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 Details
|
|
Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>loans/template</td>
|
|
<td><a href="#loans_template">Retrieve Loan Details
|
|
Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>loans/{loanId}/transactions/template</td>
|
|
<td><a href="#loans_repaymenttemplate_etc">Retrieve
|
|
Loan Repayment/Loan Waiver Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>offices/template</td>
|
|
<td><a href="#offices_template">Retrieve Office Details
|
|
Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>loanproducts/template</td>
|
|
<td><a href="#loanproducts_template">Retrieve Loan
|
|
Product Details Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>users/template</td>
|
|
<td><a href="#users_template">Retrieve User Details
|
|
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">Account</h2>
|
|
<div id="toc-menu-account" 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>Not Yet Available</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Group</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>Not Yet Available</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flybar-nav">
|
|
<h2 class="flybar-button">Savings</h2>
|
|
<div id="toc-menu-savings" 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>Work in Progress</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td><a href="#loans">FIXED DEPOSITS</a></td>
|
|
<td>depositaccounts</td>
|
|
<td><a href="#loans_create">Create a New Deposit
|
|
Application</a></td>
|
|
<td><a href="#loans_create">List Deposit Applications</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>depositaccounts/{accountId}</td>
|
|
<td><a href="#loans_approve_etc">Approve, Undo Approve,
|
|
Interest withdraw, Reject a Deposit Application or Withdraw a
|
|
Deposit Application</a></td>
|
|
<td><a href="#loans_retrieve">Retrieve a Deposit
|
|
Application</a></td>
|
|
<td><a href="#loans_delete">Update a Deposit
|
|
Application</a></td>
|
|
<td><a href="#loans_delete">Delete a Deposit
|
|
Application</a></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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/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>
|
|
|
|
<a id="clients_notes" name="clients_notes" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Client'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>clients/2/notes?fields=note,createdOn,createdByUsername</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain
|
|
Name/api/v1/clients/{clientId}/notes</code>
|
|
<code class="method-response">[ { "id": 2, "clientId": 1,
|
|
"noteType": { "id": 100, "code": "noteType.client", "value":
|
|
"Client note" }, "note": "First note\r\n\r\nedited",
|
|
"createdById": 1, "createdByUsername": "mifos", "createdOn":
|
|
1342498505000, "updatedById": 1, "updatedByUsername": "mifos",
|
|
"updatedOn": 1342498517000 } ] </code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="clients_addnote" name="clients_addnote"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Add a Client Note</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">POST https://Domain
|
|
Name/api/v1/clients/{clientId}/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="clients_retrievenote" name="clients_retrievenote"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Client Note</h4>
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>clients/1/notes/76</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>clients/1/notes/76?fields=note,createdOn,createdByUsername</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain
|
|
Name/api/v1/clients/{clientId}/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="clients_updatenote" name="clients_updatenote"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Update a Client Note</h4>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">PUT https://Domain
|
|
Name/api/v1/clients/{clientId}/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>
|
|
|
|
<!-- 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>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Field Descriptions</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>principal</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>The amount to be provided in the loan.</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>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>numberOfRepayments</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Number of installments to repay.<br>
|
|
Used like: numberOfRepayments Every repaymentEvery
|
|
repaymentFrequencyType<br> e.g. <b>10</b> (repayments)
|
|
Every 12 Weeks
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestRatePerPeriod</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Interest Rate.<br> Used like:
|
|
interestRatePerPeriod% interestRateFrequencyType - interestType<br>
|
|
e.g. <b>12.0000</b>% Per year - Declining Balance
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>repaymentEvery</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: numberOfRepayments Every
|
|
repaymentEvery repaymentFrequencyType<br> e.g. 10
|
|
(repayments) Every <b>12</b> Weeks
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fieldtype>Each of the items below has an id, code
|
|
and (english) value.<br> Only the id (integer) is used when
|
|
updating. All 3 are returned on GET (read) requests.<br>
|
|
The options are fully listed in <a href="#loanproducts_template">Retrieve
|
|
Loan Product Details Template</a>.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>repaymentFrequencyType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: numberOfRepayments Every
|
|
repaymentEvery repaymentFrequencyType<br> e.g. 10
|
|
(repayments) Every 12 <b>Weeks</b> <br>
|
|
<span>Example Values:</span> Days, Weeks, Months
|
|
</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> Per month, Per year
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>amortizationType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc><span>Example Values:</span> Equal
|
|
principle payments, Equal installments</td>
|
|
</tr>
|
|
</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> Declining Balance, Flat
|
|
</td>
|
|
</tr>
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestCalculationPeriodType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc><span>Example Values:</span> Same as
|
|
repayment period, Daily</td>
|
|
</tr>
|
|
</td>
|
|
</tr>
|
|
</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&productId=1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>loans/template?clientId=1</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain
|
|
Name/api/v1/loans/template</code>
|
|
<code class="method-response">{ "clientId" : 1, "clientName"
|
|
: "Patrick O'Meara", "productId" : 1, "productName" :
|
|
"Agricultural Loan", "selectedProduct" : { "id" : 1, "name" :
|
|
"Agricultural Loan", "description" : "An agricultural loan given
|
|
to farmers to help buy crop, stock and machinery. With an arrears
|
|
tolerance setting of 1,000 CFA, loans are not marked as 'in
|
|
arrears' or 'in bad standing' if the amount outstanding is less
|
|
than this. Interest rate is described using monthly percentage
|
|
rate (MPR) even though the loan typically lasts a year and
|
|
requires one repayment (typically at time when farmer sells
|
|
crop)", "principal" : { "currencyCode" : "XOF",
|
|
"digitsAfterDecimal" : 0, "amount" : 100000, "defaultName" : "CFA
|
|
Franc BCEAO", "nameCode" : "currency.XOF", "displaySymbol" :
|
|
"CFA", "zero" : false, "greaterThanZero" : true,
|
|
"displaySymbolValue" : "100000 CFA" }, "inArrearsTolerance" : {
|
|
"currencyCode" : "XOF", "digitsAfterDecimal" : 0, "amount" : 1000,
|
|
"defaultName" : "CFA Franc BCEAO", "nameCode" : "currency.XOF",
|
|
"displaySymbol" : "CFA", "zero" : false, "greaterThanZero" : true,
|
|
"displaySymbolValue" : "1000 CFA" }, "numberOfRepayments" : 1,
|
|
"repaymentEvery" : 12, "interestRatePerPeriod" : 1.750000,
|
|
"annualInterestRate" : 21.000000, "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" }, "createdOn" : 1334232874000,
|
|
"lastModifedOn" : 1334232874000, "currencyOptions" : [ { "code" :
|
|
"KES", "name" : "Kenyan Shilling", "decimalPlaces" : 2,
|
|
"displaySymbol" : "KSh", "nameCode" : "currency.KES",
|
|
"displayLabel" : "Kenyan Shilling (KSh)" }, { "code" : "BND",
|
|
"name" : "Brunei Dollar", "decimalPlaces" : 2, "displaySymbol" :
|
|
"BND", "nameCode" : "currency.BND", "displayLabel" : "Brunei
|
|
Dollar (BND)" }, { "code" : "LBP", "name" : "Lebanese Pound",
|
|
"decimalPlaces" : 2, "displaySymbol" : "L£", "nameCode" :
|
|
"currency.LBP", "displayLabel" : "Lebanese Pound (L£)" }, {
|
|
"code" : "GHC", "name" : "Ghana Cedi", "decimalPlaces" : 2,
|
|
"displaySymbol" : "GHC", "nameCode" : "currency.GHC",
|
|
"displayLabel" : "Ghana Cedi (GHC)" }, { "code" : "USD", "name" :
|
|
"US Dollar", "decimalPlaces" : 2, "displaySymbol" : "$",
|
|
"nameCode" : "currency.USD", "displayLabel" : "US Dollar ($)" }, {
|
|
"code" : "XOF", "name" : "CFA Franc BCEAO", "decimalPlaces" : 0,
|
|
"displaySymbol" : "CFA", "nameCode" : "currency.XOF",
|
|
"displayLabel" : "CFA Franc BCEAO (CFA)" } ],
|
|
"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" } ], "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" } ] }, "expectedDisbursementDate" : [ 2012, 6, 7 ],
|
|
"allowedProducts" : [ { "id" : 1, "name" : "Agricultural Loan" },
|
|
{ "id" : 2, "name" : "Brunei Loan" }, { "id" : 3, "name" : "IL
|
|
Loan" }, { "id" : 4, "name" : "IBL Mabeshte" }, { "id" : 5, "name"
|
|
: "Salary Loan" }, { "id" : 6, "name" : "daily-declining-balance"
|
|
}, { "id" : 7, "name" : "A new loan product for me" } ] } </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>'summary':</b> Loan summary data.
|
|
</dd>
|
|
<dd>
|
|
<b>'repaymentSchedule':</b> Loan Schedule data.
|
|
</dd>
|
|
<dd>
|
|
<b>'loanRepayments':</b> Loan Repayment data.
|
|
</dd>
|
|
<dd>
|
|
<b>'permissions':</b> Data that describes what things can happen
|
|
to the loan in its current state. Very specific to the needs of
|
|
the current Individual Lending client application.
|
|
</dd>
|
|
<dd>
|
|
<b>'convenienceData':</b> Some derived data that is specific to
|
|
the needs of the current Individual Lending client application.
|
|
</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://Domain
|
|
Name/api/v1/loans/{loanId}</code>
|
|
<code class="method-response">{ "id": 1, "accountNo":
|
|
"000000001", "clientId": 1, "clientName": "Petra Yton",
|
|
"loanProductId": 1, "loanProductName": "A new loan product for
|
|
me", "status": { "id": 100, "code":
|
|
"loanStatusType.submitted.and.pending.approval", "value":
|
|
"Submitted and pending approval" }, "currency": { "code": "USD",
|
|
"name": "US Dollar", "decimalPlaces": 2, "displaySymbol": "$",
|
|
"nameCode": "currency.USD", "displayLabel": "US Dollar ($)" },
|
|
"principal": 100000, "termFrequency": 12,
|
|
"termPeriodFrequencyType": { "id": 2, "code":
|
|
"termFrequency.periodFrequencyType.months", "value": "Months" },
|
|
"numberOfRepayments": 12, "repaymentEvery": 1,
|
|
"repaymentFrequencyType": { "id": 2, "code":
|
|
"repaymentFrequency.periodFrequencyType.months", "value": "Months"
|
|
}, "transactionProcessingStrategyId": 1, "amortizationType": {
|
|
"id": 1, "code": "amortizationType.equal.installments", "value":
|
|
"Equal installments" }, "interestRatePerPeriod": 2,
|
|
"interestRateFrequencyType": { "id": 2, "code":
|
|
"interestRateFrequency.periodFrequencyType.months", "value": "Per
|
|
month" }, "annualInterestRate": 24, "interestType": { "id": 0,
|
|
"code": "interestType.declining.balance", "value": "Declining
|
|
Balance" }, "interestCalculationPeriodType": { "id": 1, "code":
|
|
"interestCalculationPeriodType.same.as.repayment.period", "value":
|
|
"Same as repayment period" }, "submittedOnDate": [2011,9,20],
|
|
"expectedDisbursementDate": [2011,9,20], "expectedMaturityDate":
|
|
[2012,9,20], "lifeCycleStatusDate": [2011,9,20] } </code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_create" name="loans_create" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Create a New Loan / Submit a Loan Application</h4>
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>command</dt>
|
|
<dd>
|
|
String<span> Optional, case-insensitive</span>
|
|
</dd>
|
|
<dd>
|
|
The default action is to Submit a New Loan Application
|
|
("Submitted and awaiting approval" status).<br>
|
|
</dd>
|
|
<dd>If "?command=calculateLoanSchedule" is added to the URL
|
|
then no update is made but the loan schedule (as would have been
|
|
if the loan had been submitted) is returned. This gives the
|
|
ability to try out various loan options and 'preview' the
|
|
schedule before committing to it.</dd>
|
|
</dl>
|
|
<br>
|
|
<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, expectedDisbursementDate,
|
|
submittedOnDate, transactionProcessingStrategyId</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">POST https://Domain
|
|
Name/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,
|
|
"expectedDisbursementDate": "20 September 2011",
|
|
"submittedOnDate": "20 September 2011",
|
|
"transactionProcessingStrategyId": 1 } </code>
|
|
<code class="method-response">{ "officeId": 1, "clientId":
|
|
1, "loanId": 1, "resourceId": 1 } </code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_approve_etc" name="loans_approve_etc"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Approve, Undo Approval, Disburse, Undo Disbursal, Reject
|
|
or Withdraw a Loan Application</h4>
|
|
<h5>Arguments</h5>
|
|
<dl class="argument-list">
|
|
<dt>command</dt>
|
|
<dd>
|
|
String<span> Mandatory, case-insensitive</span>
|
|
</dd>
|
|
<dd>'approve' : Approve Loan</dd>
|
|
<dd>'disburse' : Disburse Loan</dd>
|
|
<dd>'reject' : Reject Loan</dd>
|
|
<dd>'withdrewbyclient' : Client Withdrew Loan Application</dd>
|
|
<dd>'undoapproval' : Undo Loan Approval</dd>
|
|
<dd>'undodisbursal' : Undo Loan Disbursal</dd>
|
|
</dl>
|
|
<br>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>eventDate</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">POST https://Domain
|
|
Name/api/v1/loans/{loanId}</code>
|
|
<code class="method-request">POST loans/1?command=approve
|
|
Content-Type: application/json Request Body: { "locale": "en",
|
|
"dateFormat": "dd MMMM yyyy", "eventDate": "20 September 2011",
|
|
"note": "and event note is added" } </code>
|
|
<code class="method-response">{ "officeId": 1, "clientId":
|
|
1, "loanId": 2, "resourceId": 2, "changes": { "status": { "id":
|
|
200, "code": "loanStatusType.approved", "value": "Approved" },
|
|
"locale": "en", "dateFormat": "dd MMMM yyyy", "approvedOnDate":
|
|
"20 September 2011", "note": "and event note is added" } } </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</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://Domain
|
|
Name/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>
|
|
|
|
<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 Repayment/Loan Waiver 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/10/transactions/template?command=repayment</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain
|
|
Name/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_repayment_etc" name="loans_repayment_etc"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Make a Repayment / Loan Waiver</h4>
|
|
<dl class="argument-list">
|
|
<dt>command</dt>
|
|
<dd>
|
|
String<span> Optional, case-insensitive</span>
|
|
</dd>
|
|
<dd>'repayment' : Make Loan Repayment.</dd>
|
|
<dd>'waiver' : Loan Waiver.</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">POST https://Domain
|
|
Name/api/v1/loans/{loanId}/transactions</code>
|
|
<code class="method-request">POST
|
|
loans/37/transactions?command=repayment Content-Type:
|
|
application/json Request Body: { "locale": "en_GB", "dateFormat":
|
|
"dd MMMM yyyy", "transactionDate": "14 May 2012",
|
|
"transactionAmount": "559.88", "note": "Repayment at branch" } </code>
|
|
<code class="method-response">{ "resourceId": 37 } </code>
|
|
</div>
|
|
</div>
|
|
|
|
<a id="loans_repaymentretrieve_etc"
|
|
name="loans_repaymentretrieve_etc" class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Retrieve a Repayment or Waiver Details</h4>
|
|
<p>Example Request:</p>
|
|
<div class=apiClick>loans/10/transactions/20</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain
|
|
Name/api/v1/loans/{loanId}/transactions/{transactionId}</code>
|
|
<code class="method-response">{ "id" : 10, "date" : [ 2009,
|
|
1, 29 ], "total" : { "currencyCode" : "XOF", "digitsAfterDecimal"
|
|
: 0, "amount" : 300000, "defaultName" : "CFA Franc BCEAO",
|
|
"nameCode" : "currency.XOF", "displaySymbol" : "CFA", "zero" :
|
|
false, "greaterThanZero" : true, "displaySymbolValue" : "300000
|
|
CFA" }, "transactionOffsetFromToday" : -1218 } </code>
|
|
</div>
|
|
</div>
|
|
<a id="loans_repaymentadjust_etc" name="loans_repaymentadjust_etc"
|
|
class="old-syle-anchor"> </a>
|
|
<div class="method-section">
|
|
<div class="method-description">
|
|
<h4>Adjust a Repayment or Waiver</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://Domain
|
|
Name/api/v1/loans/{loanId}/transactions/{transactionId}</code>
|
|
<code class="method-request">POST loans/16/transactions/32
|
|
Content-Type: application/json Request Body: { "locale": "en_GB",
|
|
"dateFormat": "dd MMMM yyyy", "transactionDate": "25 May 2012",
|
|
"transactionAmount": "50,000.00", "note": "adj note" } </code>
|
|
<code class="method-response">{ "resourceId": 16 } </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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/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>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>Loan amount.</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>numberOfRepayments</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Number of installments to repay.<br>
|
|
Used like: numberOfRepayments Every repaymentEvery
|
|
repaymentFrequencyType<br> e.g. <b>10</b> (repayments)
|
|
Every 12 Weeks
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestRatePerPeriod</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Interest Rate.<br> Used like:
|
|
interestRatePerPeriod% interestRateFrequencyType - interestType<br>
|
|
e.g. <b>12.0000</b>% Per year - Declining Balance
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>repaymentEvery</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: numberOfRepayments Every
|
|
repaymentEvery repaymentFrequencyType<br> e.g. 10
|
|
(repayments) Every <b>12</b> Weeks
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fieldtype>Each of the items below has an id, code
|
|
and (english) value.<br> Only the id (integer) is used when
|
|
updating. All 3 are returned on GET (read) requests.<br>
|
|
The options are fully listed in <a href="#loanproducts_template">Retrieve
|
|
Loan Product Details Template</a>.
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>repaymentFrequencyType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc>Used like: numberOfRepayments Every
|
|
repaymentEvery repaymentFrequencyType<br> e.g. 10
|
|
(repayments) Every 12 <b>Weeks</b> <br>
|
|
<span>Example Values:</span> Days, Weeks, Months
|
|
</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> Per month, Per year
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>amortizationType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc><span>Example Values:</span> Equal
|
|
principle payments, Equal installments</td>
|
|
</tr>
|
|
</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> Declining Balance, Flat
|
|
</td>
|
|
</tr>
|
|
</td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>interestCalculationPeriodType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc><span>Example Values:</span> Same as
|
|
repayment period, Daily</td>
|
|
</tr>
|
|
</td>
|
|
</tr>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>accountingType</td>
|
|
</tr>
|
|
<tr>
|
|
<td class=fielddesc><span>Example Values:</span>NONE(1),
|
|
CASH_BASED(2), ACCRUAL_BASED(3)</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://Domain
|
|
Name/api/v1/loanproducts</code>
|
|
<code class="method-response">[ { "id": 1, "name": "A new
|
|
loan product for me", "currency": { "code": "USD", "name": "US
|
|
Dollar", "decimalPlaces": 2, "displaySymbol": "$", "nameCode":
|
|
"currency.USD", "displayLabel": "US Dollar ($)" }, "principal":
|
|
100000, "numberOfRepayments": 12, "loanTermFrequency": 12,
|
|
"repaymentEvery": 1, "loanTermFrequencyType": { "id": 2, "code":
|
|
"loanTermFrequency.periodFrequencyType.months", "value": "Months"
|
|
}, "repaymentFrequencyType": { "id": 2, "code":
|
|
"repaymentFrequency.periodFrequencyType.months", "value": "Months"
|
|
}, "transactionProcessingStrategyId": 1,
|
|
"transactionProcessingStrategyName": "Mifos style",
|
|
"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" }, "accountingType": 1 } ] </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://Domain
|
|
Name/api/v1/loanproducts/template</code>
|
|
<code class="method-response">{ "currency": { "code": "USD",
|
|
"name": "US Dollar", "decimalPlaces": 2, "displaySymbol": "$",
|
|
"nameCode": "currency.USD", "displayLabel": "US Dollar ($)" },
|
|
"loanTermFrequencyType": { "id": 2, "code":
|
|
"loanTermFrequency.periodFrequencyType.months", "value": "Months"
|
|
}, "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" }, "accountingType": 1,
|
|
"currencyOptions": [ { "code": "USD", "name": "US Dollar",
|
|
"decimalPlaces": 2, "displaySymbol": "$", "nameCode":
|
|
"currency.USD", "displayLabel": "US Dollar ($)" } ],
|
|
"transactionProcessingStrategyOptions": [ { "id": 1, "code":
|
|
"mifos-standard-strategy", "name": "Mifos style" }, { "id": 2,
|
|
"code": "heavensfamily-strategy", "name": "Heavensfamily" }, {
|
|
"id": 3, "code": "creocore-strategy", "name": "Creocore" }, {
|
|
"id": 4, "code": "rbi-india-strategy", "name": "RBI (India)" } ],
|
|
"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" } ], "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" } ], "loanTermFrequencyTypeOptions": [ { "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" }
|
|
], "accountingMappings": {} } </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://Domain
|
|
Name/api/v1/loanproducts/{productId}</code>
|
|
<code class="method-response">{ "id": 1, "name": "A new loan
|
|
product for me", "currency": { "code": "USD", "name": "US Dollar",
|
|
"decimalPlaces": 2, "displaySymbol": "$", "nameCode":
|
|
"currency.USD", "displayLabel": "US Dollar ($)" }, "principal":
|
|
100000, "numberOfRepayments": 12, "loanTermFrequency": 12,
|
|
"repaymentEvery": 1, "loanTermFrequencyType": { "id": 2, "code":
|
|
"loanTermFrequency.periodFrequencyType.months", "value": "Months"
|
|
}, "repaymentFrequencyType": { "id": 2, "code":
|
|
"repaymentFrequency.periodFrequencyType.months", "value": "Months"
|
|
}, "transactionProcessingStrategyId": 1,
|
|
"transactionProcessingStrategyName": "Mifos style",
|
|
"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" }, "accountingType": 1, "charges": [] }
|
|
</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>
|
|
<table class=matrixHeading>
|
|
<tr class="matrixHeadingBG">
|
|
<td><div class="mifosXHeading2">Mandatory Fields</div></td>
|
|
</tr>
|
|
<tr class=alt>
|
|
<td>name, currencyCode, digitsAfterDecimal, principal,
|
|
inArrearsTolerance, repaymentFrequencyType, repaymentEvery,
|
|
numberOfRepayments, interestRatePerPeriod,
|
|
interestRateFrequencyType, amortizationType, interestType,
|
|
interestCalculationPeriodType, accountingType</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">POST https://Domain
|
|
Name/api/v1/loanproducts</code>
|
|
<code class="method-request">POST loanproducts Content-Type:
|
|
application/json Request Body: { "name": "A new loan product for
|
|
me", "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, "accountingType": 1 } </code>
|
|
<code class="method-response">{ "resourceId": 1 } </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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/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 modifed 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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/api/v1/codes/1</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://Domain
|
|
Name/api/v1/codes/4</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://Domain
|
|
Name/api/v1/codes/4</code>
|
|
<code class="method-request">DELETE codes/4 Content-Type:
|
|
application/json </code>
|
|
<code class="method-response">{ "resourceId": 4 } </code>
|
|
</div>
|
|
</div>
|
|
|
|
<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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/api/v1/funds/1</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://Domain
|
|
Name/api/v1/funds/1</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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/api/v1/staff/1</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://Domain
|
|
Name/api/v1/staff/1</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://Domain
|
|
Name/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" } </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://Domain
|
|
Name/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.560000, "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://Domain
|
|
Name/api/v1/charges/1</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.560000, "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://Domain
|
|
Name/api/v1/charges/1</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://Domain
|
|
Name/api/v1/charges/1</code>
|
|
<code class="method-request">DELETE charges/1 Content-Type:
|
|
application/json </code>
|
|
<code class="method-response">{ "resourceId": 1 } </code>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 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://Domain
|
|
Name/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://Domain
|
|
Name/api/v1/datatables/register/{datatable}/{apptable}</code>
|
|
<code class="method-request">POST datatables/register/New
|
|
Table/m_client Content-Type: application/json Request Body: { } </code>
|
|
<code class="method-response">{ "resourceId": null } </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://Domain
|
|
Name/api/v1/datatables/deregister/{datatable}</code>
|
|
<code class="method-request">POST datatables/register/New
|
|
Table Content-Type: application/json Request Body: { } </code>
|
|
<code class="method-response">{ "resourceId": null } </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://Domain
|
|
Name/api/v1/datatables/{datatable}/{apptableId}</code>
|
|
<code class="method-request">POST datatables/Additional
|
|
Client Fields Data/1 Content-Type: application/json Request Body:
|
|
{ "Business Description": "Livestock sales", Comment: "First
|
|
comment\nmade", Education_cv: "Trade", Gender_cd: "21", "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' a Generic Result Set JSON format is returned.
|
|
This format is used by the default data tables UI functionality.</dd>
|
|
</dl>
|
|
|
|
<p>Example Requests:</p>
|
|
<div class=apiClick>datatables/Additional Client Fields
|
|
Data/1</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>datatables/Extra Family Details
|
|
Data/1?order=`Date of Birth` desc</div>
|
|
<br>
|
|
<br>
|
|
<div class=apiClick>datatables/Additional Client Fields
|
|
Data/1?genericResultSet=true</div>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">GET https://Domain
|
|
Name/api/v1/datatables/{datatable}/{apptableId}</code>
|
|
<code class="method-response">[ {"client_id": 1, "Business
|
|
Description": "Livestock sales", "Years in Business": 5,
|
|
"Gender_cd": "21", "Education_cv": "Trade", "Next Visit": [2012,
|
|
10, 1], "Highest Rate Paid": 8.500000, "Comment": "First comment
|
|
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://Domain
|
|
Name/api/v1/datatables/{datatable}/{apptableId}</code>
|
|
<code class="method-request">PUT datatables/Additional
|
|
Client Fields Data/1 Content-Type: application/json Request Body:
|
|
{ "Business Description": "Livestock sales updated", Comment:
|
|
"First comment\nmade", Education_cv: "Trade", Gender_cd: "21",
|
|
"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_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://Domain
|
|
Name/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://Domain
|
|
Name/api/v1/datatables/{datatable}/{apptableId}</code>
|
|
<code class="method-request">DELETE datatables/Additional
|
|
Client Fields Data/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 Data Table (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://Domain
|
|
Name/api/v1/datatables/{datatable}/{apptableId}/{datatableId}</code>
|
|
<code class="method-request">DELETE datatables/Extra Family
|
|
Details Data/1/2 Content-Type: application/json Request Body: { }
|
|
</code>
|
|
<code class="method-response">{ "resourceId": 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://Domain
|
|
Name/api/v1/reports</code>
|
|
<code class="method-response">{ "columnHeaders" : [ {
|
|
"columnName" : "report_id", "columnType" : "INT", "columnLength" :
|
|
null, "columnDisplayType" : null, "columnValues" : [ ] }, {
|
|
"columnName" : "report_name", "columnType" : "VARCHAR",
|
|
"columnLength" : null, "columnDisplayType" : null, "columnValues"
|
|
: [ ] }, { "columnName" : "report_type", "columnType" : "VARCHAR",
|
|
"columnLength" : null, "columnDisplayType" : null, "columnValues"
|
|
: [ ] }, { "columnName" : "report_subtype", "columnType" :
|
|
"VARCHAR", "columnLength" : null, "columnDisplayType" : null,
|
|
"columnValues" : [ ] }, { "columnName" : "report_category",
|
|
"columnType" : "VARCHAR", "columnLength" : null,
|
|
"columnDisplayType" : null, "columnValues" : [ ] }, { "columnName"
|
|
: "parameter_id", "columnType" : "INT", "columnLength" : null,
|
|
"columnDisplayType" : null, "columnValues" : [ ] }, { "columnName"
|
|
: "report_parameter_name", "columnType" : "VARCHAR",
|
|
"columnLength" : null, "columnDisplayType" : null, "columnValues"
|
|
: [ ] }, { "columnName" : "parameter_name", "columnType" :
|
|
"VARCHAR", "columnLength" : null, "columnDisplayType" : null,
|
|
"columnValues" : [ ] } ], "data" : [ { "row" : [ "29", "Client
|
|
Listing", "Table", null, null, "5", null, "selectOfficeId" ] }, {
|
|
"row" : [ "42", "Client Listing - Additional and Unlikely",
|
|
"Table", null, null, "5", null, "selectOfficeId" ] }, { "row" : [
|
|
"30", "Client Loans Listing", "Table", null, null, "5", null,
|
|
"selectOfficeId" ] }, { "row" : [ "43", "Client Loans Listing -
|
|
Additional", "Table", null, null, "5", null, "selectOfficeId" ] },
|
|
{ "row" : [ "41", "Clients by Surname (a bit silly)", "Chart",
|
|
"Pie", null, "5", null, "selectOfficeId" ] }, { "row" : [ "39",
|
|
"Loan Disbursals in Previous Year", "Chart", "Bar", null, "5",
|
|
null, "selectOfficeId" ] }, { "row" : [ "39", "Loan Disbursals in
|
|
Previous Year", "Chart", "Bar", null, "7", null,
|
|
"currencyIdSelectOne" ] }, { "row" : [ "40", "Loan Repayments in
|
|
Previous Year", "Chart", "Bar", null, "5", null, "selectOfficeId"
|
|
] }, { "row" : [ "40", "Loan Repayments in Previous Year",
|
|
"Chart", "Bar", null, "7", null, "currencyIdSelectOne" ] }, {
|
|
"row" : [ "34", "Loans - Active Loans Portfolio Status", "Table",
|
|
null, null, "5", null, "selectOfficeId" ] }, { "row" : [ "34",
|
|
"Loans - Active Loans Portfolio Status", "Table", null, null, "6",
|
|
null, "currencyIdSelectAll" ] }, { "row" : [ "31", "Loans Awaiting
|
|
Disbursal", "Table", null, null, "5", null, "selectOfficeId" ] },
|
|
{ "row" : [ "35", "Portfolio at Risk", "Table", null, null, "5",
|
|
null, "selectOfficeId" ] }, { "row" : [ "35", "Portfolio at Risk",
|
|
"Table", null, null, "6", null, "currencyIdSelectAll" ] }, { "row"
|
|
: [ "32", "Upcoming Repayments", "Table", null, null, "5", null,
|
|
"selectOfficeId" ] }, { "row" : [ "32", "Upcoming Repayments",
|
|
"Table", null, null, "6", null, "currencyIdSelectAll" ] }, { "row"
|
|
: [ "38", "Upcoming Repayments Summary By Month, Currency and Loan
|
|
Risk", "Table", null, null, "5", null, "selectOfficeId" ] }, {
|
|
"row" : [ "38", "Upcoming Repayments Summary By Month, Currency
|
|
and Loan Risk", "Table", null, null, "6", null,
|
|
"currencyIdSelectAll" ] } ] } </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://Domain
|
|
Name/api/v1/reports/{reportName}</code>
|
|
<code class="method-response">{ "columnHeaders" : [ {
|
|
"columnName" : "Office/Branch", "columnType" : "VARCHAR",
|
|
"columnLength" : null, "columnDisplayType" : null, "columnValues"
|
|
: [ ] }, { "columnName" : "Name", "columnType" : "VARCHAR",
|
|
"columnLength" : null, "columnDisplayType" : null, "columnValues"
|
|
: [ ] }, { "columnName" : "Joining Date", "columnType" : "DATE",
|
|
"columnLength" : null, "columnDisplayType" : null, "columnValues"
|
|
: [ ] } ], "data" : [ { "row" : [ "Demo MFI Head Office",
|
|
"O'Meara, Patrick", "2009-01-04" ] }, { "row" : [ "Demo MFI Head
|
|
Office", "O'Meara, Dennis", "2009-01-04" ] }, { "row" : [ "Demo
|
|
MFI Head Office", "Smith, John", "2009-01-11" ] }, { "row" : [
|
|
"Demo MFI Head Office", "O'Meara, Jimmy", "2009-01-11" ] }, {
|
|
"row" : [ "Demo MFI Head Office", "Sunnyville vegetable growers
|
|
Ltd", "2009-01-24" ] }, { "row" : [ "Demo MFI Head Office",
|
|
"Traoré, Kalilou", "2009-02-04" ] }, { "row" : [ "Demo MFI Head
|
|
Office", "Koné, Sidi", "2009-02-11" ] }, { "row" : [ "Demo MFI
|
|
Head Office", "Yattabaré, Moustapha", "2009-02-18" ] }, { "row" :
|
|
[ "Demo MFI Head Office", "Mali fruit sales ltd.", "2009-02-18" ]
|
|
}, { "row" : [ "Demo MFI Head Office", "Djenne co-op group",
|
|
"2009-02-25" ] }, { "row" : [ "Demo MFI Head Office", "test,
|
|
test", "2012-04-19" ] }, { "row" : [ "Demo MFI Head Office",
|
|
"Ziffle, Fred", "2012-04-21" ] }, { "row" : [ "Demo MFI Head
|
|
Office", "omara, safik", "2012-04-24" ] }, { "row" : [ "Demo MFI
|
|
Head Office", "HF Test", "2012-04-24" ] }, { "row" : [ "Demo MFI
|
|
Head Office", "HF Test 2", "2012-04-24" ] }, { "row" : [ "Demo MFI
|
|
Head Office", "Kumar, Shiva", "2011-10-01" ] }, { "row" : [ "Demo
|
|
MFI Head Office", "Yton, Petra", "2006-06-09" ] }, { "row" : [
|
|
"Demo MFI Head Office", "Yton, Petra", "2006-06-09" ] }, { "row" :
|
|
[ "sub branch 1", "Lee, Jacques", "2012-04-03" ] }, { "row" : [
|
|
"sub branch 1", "Asare-Frimpong, Patrick", "2012-04-18" ] }, {
|
|
"row" : [ "sub branch 2", "t, test", "2012-04-18" ] }, { "row" : [
|
|
"Majmoua", "client, firstMajmoua", "2011-12-01" ] }, { "row" : [
|
|
"Intrasoft Technologies", "Said, Zayyad", "2012-04-02" ] }, {
|
|
"row" : [ "Hugo technologies", "typical individual lending
|
|
client", "2010-06-02" ] } ] } </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
|
|
of permissions allowed.</p>
|
|
</div>
|
|
<div class="method-example">
|
|
<code class="method-declaration">POST https://Domain
|
|
Name/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, "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://Domain
|
|
Name/api/v1/users</code>
|
|
<code class="method-response">[ { "id" : 6, "officeId" : 1,
|
|
"officeName" : "change super user", "username" : "committee1",
|
|
"firstname" : "Committee", "lastname" : "Member", "email" :
|
|
"fake@email.com" }, { "id" : 5, "officeId" : 1, "officeName" :
|
|
"change super user", "username" : "dataentry1", "firstname" :
|
|
"Data Entry", "lastname" : "User", "email" : "fake@email.com"
|
|
}...] </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://Domain
|
|
Name/api/v1/users/template</code>
|
|
<code class="method-response">{ "allowedOffices": [ { "id":
|
|
1, "name": "Head Office", "nameDecorated": "Head Office" }, {
|
|
"id": 10, "name": "Myanmar Regional Office", "nameDecorated":
|
|
"....Myanmar Regional Office" }, { "id": 7, "name": "Myanmar 1",
|
|
"nameDecorated": "........Myanmar 1" },... ], "availableRoles": [
|
|
{ "id": 1, "name": "Super user", "description": "This role
|
|
provides all application permissions." }, { "id": 2, "name":
|
|
"Field officer", "description": "A field officer role allows the
|
|
user to add client and loans and view reports but nothing else."
|
|
}, { "id": 3, "name": "Data Entry (Portfolio only)",
|
|
"description": "This role allows a user full permissions around
|
|
client and loan functionality but nothing else." },... ] } </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://Domain
|
|
Name/api/v1/users/1</code>
|
|
<code class="method-response">{ "id": 1, "username":
|
|
"mifos", "officeId": 1, "officeName": "Head Office", "firstname":
|
|
"App(test)", "lastname": "Administrator", "email":
|
|
"demomfi@mifos.org", "availableRoles": [ { "id": 2, "name": "Field
|
|
officer", "description": "A field officer role allows the user to
|
|
add client and loans and view reports but nothing else." }, {
|
|
"id": 3, "name": "Data Entry (Portfolio only)", "description":
|
|
"This role allows a user full permissions around client and loan
|
|
functionality but nothing else." },... ], "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://Domain
|
|
Name/api/v1/users</code>
|
|
<code class="method-request">POST users Content-Type:
|
|
application/json Request body: { "username": "Another New User
|
|
zll", "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://Domain
|
|
Name/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://Domain
|
|
Name/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://Domain
|
|
Name/api/v1/roles</code>
|
|
<code class="method-response">[ { "id" : 1, "name" : "Super
|
|
user", "description" : "This role provides all application
|
|
permissions." }, { "id" : 2, "name" : "Field officer",
|
|
"description" : "A field officer role allows the user to add
|
|
client and loans and view reports but nothing else." }, { "id" :
|
|
3, "name" : "Data Entry (Portfolio only)", "description" : "This
|
|
role allows a user full permissions around client and loan
|
|
functionality but nothing else." }, { "id" : 4, "name" : "Credit
|
|
Committe Member", "description" : "This role allows a user to
|
|
approve reject or withdraw loans (with reporting)." }, { "id" : 5,
|
|
"name" : "Manager", "description" : "This role allows a manager to
|
|
do anything related to portfolio management and also view all
|
|
reports." } ] </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://Domain
|
|
Name/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://Domain
|
|
Name/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": 8 } </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://Domain
|
|
Name/api/v1/roles/{roleId}</code>
|
|
<code class="method-request">PUT roles/8 Content-Type:
|
|
application/json Request body: { "description": "some
|
|
description(changed)" } </code>
|
|
<code class="method-response">{ "resourceId": 8, "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://Domain
|
|
Name/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": "authorisation", "code": "CREATE_ROLE", "entityName":
|
|
"ROLE", "actionName": "CREATE", "selected": false, }, {
|
|
"grouping": "authorisation", "code": "DELETE_ROLE", "entityName":
|
|
"ROLE", "actionName": "DELETE", "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://Domain
|
|
Name/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://Domain
|
|
Name/api/v1/permissions</code>
|
|
<code class="method-response">[ { "grouping":
|
|
"authorisation", "code": "READ_PERMISSION", "entityName":
|
|
"PERMISSION", "actionName": "READ", "selected": true }, {
|
|
"grouping": "authorisation", "code": "CREATE_ROLE", "entityName":
|
|
"ROLE", "actionName": "CREATE", "selected": true }, { "grouping":
|
|
"authorisation", "code": "DELETE_ROLE", "entityName": "ROLE",
|
|
"actionName": "DELETE", "selected": true }, ... ] </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">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>
|
|
<td></td>
|
|
<td>clients/{clientId}/notes</td>
|
|
<td><a href="#clients_addnote">Add a Client Note</a></td>
|
|
<td><a href="#clients_notes">Retrieve a Client's Notes</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>clients/{clientId}/notes/{noteId}</td>
|
|
<td></td>
|
|
<td><a href="#clients_retrievenote">Retrieve a Client Note</a></td>
|
|
<td><a href="#clients_updatenote">Update a Client Note</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><a href="#loans">LOAN</a></td>
|
|
<td>loans</td>
|
|
<td><a href="#loans_create">Create a New Loan / Submit a
|
|
Loan Application</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}</td>
|
|
<td><a href="#loans_approve_etc">Approve, Undo Approval,
|
|
Disburse, Undo Disbursal, Reject a Loan or Withdraw a Loan
|
|
Application</a></td>
|
|
<td><a href="#loans_retrieve">Retrieve a Loan</a></td>
|
|
<td></td>
|
|
<td><a href="#loans_delete">Delete a Loan</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td></td>
|
|
<td>loans/{loanId}/transactions</td>
|
|
<td><a href="#loans_repayment_etc">Make a Repayment / Loan
|
|
Waiver</a></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>loans/{loanId}/transactions/{transactionId}</td>
|
|
<td><a href="#loans_repaymentadjust_etc">Adjust a
|
|
Repayment or Waiver</a></td>
|
|
<td><a href="#loans_repaymentretrieve_etc">Retrieve a
|
|
Repayment or Waiver Details</a></td>
|
|
<td></td>
|
|
<td></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="#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="#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="#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 Application
|
|
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 Details
|
|
Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>loans/template</td>
|
|
<td><a href="#loans_template">Retrieve Loan Details
|
|
Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>loans/{loanId}/transactions/template</td>
|
|
<td><a href="#loans_repaymenttemplate_etc">Retrieve Loan
|
|
Repayment/Loan Waiver Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>offices/template</td>
|
|
<td><a href="#offices_template">Retrieve Office Details
|
|
Template</a></td>
|
|
</tr>
|
|
<tr class="alt">
|
|
<td>loanproducts/template</td>
|
|
<td><a href="#loanproducts_template">Retrieve Loan Product
|
|
Details Template</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>users/template</td>
|
|
<td><a href="#users_template">Retrieve User Details
|
|
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>
|
|
<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> |