diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm index 34887c066..d16f91eaa 100644 --- a/api-docs/apiLive.htm +++ b/api-docs/apiLive.htm @@ -103,7 +103,7 @@
  • Creating and Updating
  • Updating Dates and Numbers
  • Field Descriptions
  • -
  • Authentication Overview
  • +
  • Authentication Overview
  • Errors
  • Batch API
  • Full API Matrix
  • @@ -816,7 +816,7 @@ - + Recurring Deposit Transactions recurringdepositaccounts/{accountId}/transactions?command=deposit @@ -1822,7 +1822,7 @@ holidays/{holidayId}?command=activate Activate a Holiday - + @@ -2381,8 +2381,8 @@ {entityType}/{entityId}/documents/{documentId}/attachment - Retrieve - binary file associated with a + Retrieve + binary file associated with a Document @@ -2608,8 +2608,8 @@ - - + +
    @@ -2763,16 +2763,16 @@ application as you shouldn't need to do any date format conversion prior to issuing your POST or PUT request.

    -JSON examples: +JSON examples: { - "locale": "en_US", - "dateFormat": "dd MMMM yyyy", - "openingDate": "01 July 2007" -} + "locale": "en_US", + "dateFormat": "dd MMMM yyyy", + "openingDate": "01 July 2007" +} { "locale": "en_US", - "dateFormat": "yyyy-MM-dd", + "dateFormat": "yyyy-MM-dd", "openingDate": "2007-03-21" } @@ -2783,11 +2783,11 @@ back an error message if you forget.

    JSON examples: { - "locale": "en_US", + "locale": "en_US", "principal": "240,400.88" -} -{ - "locale": "fr_CH", +} +{ + "locale": "fr_CH", "principal": "240 400.88" } @@ -2828,48 +2828,48 @@

    - -// 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 + +// 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). +// (see the function executeAjaxRequest below). -function setBasicAuthKey(username, password) { +function setBasicAuthKey(username, password) { - var jqxhr = $.ajax({ + var jqxhr = $.ajax({ url : "authentication?username=" + username + "&password=" + password, - type : 'POST', + 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); + dataType : 'json', + data : "{}", + cache : false, + success : function(data, textStatus, jqXHR) { + basicAuthKey = data.base64EncodedAuthenticationKey; }, - success : successFunction, - error : errorFunction - }); -} + 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 + }); +}
    @@ -2880,7 +2880,7 @@ function executeAjaxRequest(url, verbType, jsonData, basicAuthKey, successFuncti

    Batch API

    - The Mifos X Batch API enables a consumer to access significant amounts of data in a single call or to make changes to several objects at once. + The Mifos X Batch API enables a consumer to access significant amounts of data in a single call or to make changes to several objects at once. Batching allows a consumer to pass instructions for several operations in a single HTTP request. A consumer can also specify dependencies between related operations. Once all operations have been completed, a consolidated response will be passed back and the HTTP connection will be closed.

    @@ -2895,7 +2895,7 @@ function executeAjaxRequest(url, verbType, jsonData, basicAuthKey, successFuncti

    - Batch API is able to handle deeply nested dependent requests as well nested parameters. As shown in the example, requests are dependent on each other as, 1<--2<--6, i.e a nested dependency, where request '6' is not directly dependent on request '1' but still it is one of the nested child of request '1'. + Batch API is able to handle deeply nested dependent requests as well nested parameters. As shown in the example, requests are dependent on each other as, 1<--2<--6, i.e a nested dependency, where request '6' is not directly dependent on request '1' but still it is one of the nested child of request '1'. In the same way Batch API could handle a deeply nested dependent value, such as {..[..{..,$.parameter_name,..}..]}.

    @@ -2907,86 +2907,86 @@ POST https://DomainName/api/v1/batches POST batches Content-Type: application/json Request Body: -[ - { +[ + { "requestId":1, "relativeUrl":"clients", "method":"POST", - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" } ], - "body":"{ - \"officeId\": 1, - \"firstname\": \"Petra\", - \"lastname\": \"Yton\", - \"externalId\": \"ex_externalId1\", - \"dateFormat\": \"dd MMMM yyyy\", - \"locale\": \"en\", - \"active\": true, - \"activationDate\": \"04 March 2009\", - \"submittedOnDate\": \"04 March 2009\" + "body":"{ + \"officeId\": 1, + \"firstname\": \"Petra\", + \"lastname\": \"Yton\", + \"externalId\": \"ex_externalId1\", + \"dateFormat\": \"dd MMMM yyyy\", + \"locale\": \"en\", + \"active\": true, + \"activationDate\": \"04 March 2009\", + \"submittedOnDate\": \"04 March 2009\" }" }, - { + { "requestId":2, "relativeUrl":"loans", "method":"POST", - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" } ], "reference":1, - "body":"{ \"dateFormat\": \"dd MMMM yyyy\", - \"locale\": \"en_GB\", - \"clientId\": \"$.clientId\", - \"productId\": 26, - \"principal\": \"10,000.00\", - \"loanTermFrequency\": 12, - \"loanTermFrequencyType\": 2, - \"loanType\": \"individual\", - \"numberOfRepayments\": 10, - \"repaymentEvery\": 1, - \"repaymentFrequencyType\": 2, - \"interestRatePerPeriod\": 10, - \"amortizationType\": 1, - \"interestType\": 0, - \"interestCalculationPeriodType\": 1, - \"transactionProcessingStrategyId\": 1, - \"expectedDisbursementDate\": \"10 Jun 2013\", - \"submittedOnDate\": \"10 Jun 2013\" + "body":"{ \"dateFormat\": \"dd MMMM yyyy\", + \"locale\": \"en_GB\", + \"clientId\": \"$.clientId\", + \"productId\": 26, + \"principal\": \"10,000.00\", + \"loanTermFrequency\": 12, + \"loanTermFrequencyType\": 2, + \"loanType\": \"individual\", + \"numberOfRepayments\": 10, + \"repaymentEvery\": 1, + \"repaymentFrequencyType\": 2, + \"interestRatePerPeriod\": 10, + \"amortizationType\": 1, + \"interestType\": 0, + \"interestCalculationPeriodType\": 1, + \"transactionProcessingStrategyId\": 1, + \"expectedDisbursementDate\": \"10 Jun 2013\", + \"submittedOnDate\": \"10 Jun 2013\" }" }, - { + { "requestId":3, "relativeUrl":"loans/$.loanId/charges", "method":"POST", "reference":2, - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" } ], - "body":"{ - \"chargeId\": \"2\", - \"locale\": \"en\", - \"amount\": \"100\", - \"dateFormat\": \"dd MMMM yyyy\", - \"dueDate\": \"29 April 2013\" + "body":"{ + \"chargeId\": \"2\", + \"locale\": \"en\", + \"amount\": \"100\", + \"dateFormat\": \"dd MMMM yyyy\", + \"dueDate\": \"29 April 2013\" }" }, - { + { "requestId":4, "relativeUrl":"loans/$.loanId/charges", "method":"GET", "reference":2, - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" } @@ -2996,100 +2996,100 @@ Content-Type: application/json Request Body: ] -[ - { +[ + { "requestId":1, "statusCode":200, - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" }, - { + { "name":"X-Mifos-Platform-TenantId", "value":"text/html" } ], "body":"{\"officeId\":1,\"clientId\":909,\"resourceId\":909}" }, - { + { "requestId":2, "statusCode":200, - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" } ], "body":"{\"officeId\":1,\"clientId\":909,\"loanId\":212,\"resourceId\":212}" }, - { + { "requestId":3, "statusCode":200, - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" } ], "body":"{\"officeId\":1,\"clientId\":909,\"loanId\":212,\"resourceId\":155}" }, - { + { "requestId":4, "statusCode":200, - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" } ], - "body":"[ - { - \"id\":155, - \"chargeId\":2, - \"name\":\"Charge_Loans_GEQJC5\", - \"chargeTimeType\":{ - \"id\":1, - \"code\":\"chargeTimeType.disbursement\", - \"value\":\"Disbursement\" - }, - \"chargeCalculationType\":{ - \"id\":2, - \"code\":\"chargeCalculationType.percent.of.amount\", - \"value\":\"% Amount\" - }, - \"percentage\":100.000000, - \"amountPercentageAppliedTo\":10000.000000, - \"currency\":{ - \"code\":\"USD\", - \"name\":\"USDollar\", - \"decimalPlaces\":2, - \"displaySymbol\":\"$\", - \"nameCode\":\"currency.USD\", - \"displayLabel\":\"US Dollar ($)\" - }, - \"amount\":10000.000000, - \"amountPaid\":0, - \"amountWaived\":0, - \"amountWrittenOff\":0, - \"amountOutstanding\":10000.000000, - \"amountOrPercentage\":100.000000, - \"penalty\":false, - \"chargePaymentMode\":{ - \"id\":0, - \"code\":\"chargepaymentmode.regular\", - \"value\":\"Regular\" - }, - \"paid\":false, - \"waived\":false, - \"chargePayable\":false - } + "body":"[ + { + \"id\":155, + \"chargeId\":2, + \"name\":\"Charge_Loans_GEQJC5\", + \"chargeTimeType\":{ + \"id\":1, + \"code\":\"chargeTimeType.disbursement\", + \"value\":\"Disbursement\" + }, + \"chargeCalculationType\":{ + \"id\":2, + \"code\":\"chargeCalculationType.percent.of.amount\", + \"value\":\"% Amount\" + }, + \"percentage\":100.000000, + \"amountPercentageAppliedTo\":10000.000000, + \"currency\":{ + \"code\":\"USD\", + \"name\":\"USDollar\", + \"decimalPlaces\":2, + \"displaySymbol\":\"$\", + \"nameCode\":\"currency.USD\", + \"displayLabel\":\"US Dollar ($)\" + }, + \"amount\":10000.000000, + \"amountPaid\":0, + \"amountWaived\":0, + \"amountWrittenOff\":0, + \"amountOutstanding\":10000.000000, + \"amountOrPercentage\":100.000000, + \"penalty\":false, + \"chargePaymentMode\":{ + \"id\":0, + \"code\":\"chargepaymentmode.regular\", + \"value\":\"Regular\" + }, + \"paid\":false, + \"waived\":false, + \"chargePayable\":false + } ]" } ] - - + +   @@ -3113,76 +3113,76 @@ POST https://DomainName/api/v1/batches?enclosingTransaction=true POST batches Content-Type: application/json Request Body: -[ - { +[ + { "requestId":1, "relativeUrl":"clients", "method":"POST", - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" }, - { + { "name":"X-Mifos-Platform-TenantId", "value":"text/html" } ], - "body":"{ - \"officeId\": 1, - \"firstname\": \"Petra\", - \"lastname\": \"Yton\", - \"externalId\": \"externalId_4\", - \"dateFormat\": \"dd MMMM yyyy\", - \"locale\": \"en\", \"active\": true, - \"activationDate\": \"04 March 2009\", - \"submittedOnDate\": \"04 March 2009\" + "body":"{ + \"officeId\": 1, + \"firstname\": \"Petra\", + \"lastname\": \"Yton\", + \"externalId\": \"externalId_4\", + \"dateFormat\": \"dd MMMM yyyy\", + \"locale\": \"en\", \"active\": true, + \"activationDate\": \"04 March 2009\", + \"submittedOnDate\": \"04 March 2009\" }" }, - { + { "requestId":2, "relativeUrl":"savingsaccounts", "method":"POST", "reference":1, - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" } ], - "body":"{ - \"clientId\": \"$.clientId\", - \"productId\": 1, - \"locale\": \"en\", - \"dateFormat\": \"dd MMMM yyyy\", - \"submittedOnDate\": \"01 March 2011\" + "body":"{ + \"clientId\": \"$.clientId\", + \"productId\": 1, + \"locale\": \"en\", + \"dateFormat\": \"dd MMMM yyyy\", + \"submittedOnDate\": \"01 March 2011\" }" } ] Successful transaction response: -[ - { +[ + { "requestId":1, "statusCode":200, - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" }, - { + { "name":"X-Mifos-Platform-TenantId", "value":"text/html" } ], "body":"{\"officeId\":1,\"clientId\":922,\"resourceId\":922}" }, - { + { "requestId":2, "statusCode":200, - "headers":[ - { + "headers":[ + { "name":"Content-type", "value":"text/html" } @@ -3192,8 +3192,8 @@ Successful transaction response: ] - - + +   @@ -3202,7 +3202,7 @@ Successful transaction response:

    Batch API Errors

    - In Batch API without "enclosingTransaction=true", if one of the response is erroneous, then an appropriate status code will be set for that request and the error message will be returned in it's "body", while all other requests will return successful response with a status code of "200". + In Batch API without "enclosingTransaction=true", if one of the response is erroneous, then an appropriate status code will be set for that request and the error message will be returned in it's "body", while all other requests will return successful response with a status code of "200".

    @@ -3257,35 +3257,35 @@ Successful transaction response:
    Error Message returned when attempting to create an Office without passing any parameters -{ -"developerMessage": "The request was invalid. This typically will happen due to validation errors which are provided.", +{ +"developerMessage": "The request was invalid. This typically will happen due to validation errors which are provided.", "developerDocLink": "https://github.com/openMF/mifosx/wiki/HTTP-API-Error-codes", -"httpStatusCode": "400", -"defaultUserMessage": "Validation errors exist.", -"userMessageGlobalisationCode": "validation.msg.validation.errors.exist", -"errors": [ +"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.", + "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": [] - }, + "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": [] - } -] + } +] }
    @@ -3380,7 +3380,7 @@ Successful transaction response: savingsProductId - Optional: Default overdraft savings account of client + Optional: Default overdraft savings account of client @@ -3410,13 +3410,13 @@ Successful transaction response:
    Boolean optional
    -
    Defaults to false if not provided. If staffInSelectedOfficeOnly=true only staff - who are associated with the selected branch are returned.
    +
    Defaults to false if not provided. If staffInSelectedOfficeOnly=true only staff + who are associated with the selected branch are returned.
    commandParam
    String optional
    -
    If commandParam=close retrieves all closureReasons which are associated with +
    If commandParam=close retrieves all closureReasons which are associated with "ClientClosureReason" value.

    Example Request:

    @@ -3492,18 +3492,18 @@ POST https://DomainName/api/v1/clients POST clients Content-Type: application/json Request Body: -{ - "officeId": 1, - "firstname": "Petra", - "lastname": "Yton", - "externalId": "786YYH7", - "dateFormat": "dd MMMM yyyy", - "locale": "en", +{ + "officeId": 1, + "firstname": "Petra", + "lastname": "Yton", + "externalId": "786YYH7", + "dateFormat": "dd MMMM yyyy", + "locale": "en", "active": true, "activationDate": "04 March 2009", "submittedOnDate":"04 March 2009", "savingsProductId" : 4 -} +} { @@ -3517,14 +3517,14 @@ Content-Type: application/json Request Body:
    POST clients -Content-Type: application/json +Content-Type: application/json Request Body: -{ - "officeId": 1, +{ + "officeId": 1, "fullname": "Client of group", "groupId": 1, - "dateFormat": "dd MMMM yyyy", - "locale": "en", + "dateFormat": "dd MMMM yyyy", + "locale": "en", "active": true, "activationDate": "04 March 2009" } @@ -3567,7 +3567,7 @@ Request Body:
    - +  
    @@ -3585,17 +3585,17 @@ Request Body: "locale":"en", "closureDate":"25 June 2013", "closureReasonId":"11" -} +} -{ +{ "clientId":15, "resourceId":15 }
    - +  
    @@ -3612,7 +3612,7 @@ Request Body:
    - +
    POST https://Domain Name/api/v1/clients/{clientId}?command=reject POST clients/1?command=reject @@ -3623,17 +3623,17 @@ Request Body: "rejectionReasonId":16, "locale":"en", "dateFormat":"dd MMMM yyyy" -} +} -{ +{ "clientId":15, "resourceId":15 }
    - +  
    @@ -3660,10 +3660,10 @@ Request Body: "withdrawalReasonId":17, "locale":"en", "dateFormat":"dd MMMM yyyy" -} +} -{ +{ "officeId":1, "clientId":15, "resourceId":15 @@ -3671,8 +3671,8 @@ Request Body:
    - - + +  
    @@ -3698,10 +3698,10 @@ Request Body: "reactivationDate":"28 November 2014", "locale":"en", "dateFormat":"dd MMMM yyyy" -} +} -{ +{ "clientId":15, "resourceId":15 @@ -3714,7 +3714,7 @@ Request Body:

    Assign a Staff

    Allows you to assign a Staff for existed Client.

    -

    The selected Staff should belong to the same office (or an officer higher up in the hierarchy) +

    The selected Staff should belong to the same office (or an officer higher up in the hierarchy) as the Client he manages.

    @@ -3736,7 +3736,7 @@ Request Body:
    - +  
    @@ -3750,10 +3750,10 @@ Content-Type: application/json Request Body: { "staffId":"1" -} +} -{ +{ "officeId": 1, "clientId": 1, "resourceId": 1, @@ -3806,7 +3806,7 @@ Request Body: { "destinationOfficeId":"2", "note":"Client Relocating to Bangalore" -} +} { @@ -3824,7 +3824,7 @@ Request Body:

    Withdraw a Client Transfer

    Allows you to withdraw the proposed transfer of a Client to a different Office.

    -

    Withdrawal can happen only if the destination Branch (to which the transfer was +

    Withdrawal can happen only if the destination Branch (to which the transfer was proposed) has not already accepted the transfer proposal

    @@ -3835,7 +3835,7 @@ Content-Type: application/json Request Body: { "note":"Sorry, data entry error" -} +}
    { @@ -3861,7 +3861,7 @@ Content-Type: application/json Request Body: { "note":"We cannot accept tranfers of clients having loans with less than 1 repayment left" -} +} { @@ -3872,7 +3872,7 @@ Request Body:
    -
    +
     
    @@ -3891,7 +3891,7 @@ Request Body: "destinationGroupId":"13", "staffId":"1", "note":"Due Diligence done and all documents received" -} +} { @@ -3922,7 +3922,7 @@ Request Body: "destinationGroupId":"13", "staffId":"1", "note":"Client Relocating to Bangalore" -} +} { @@ -3933,7 +3933,7 @@ Request Body:
    - +   @@ -4011,7 +4011,7 @@ GET https://DomainName/api/v1/clients/{clientId} Integer optional, defaults to 0
    Indicates the result from which pagination starts
    - +
    limit
    Integer optional, defaults to 200 @@ -4032,7 +4032,7 @@ GET https://DomainName/api/v1/clients/{clientId}
    officeId
    - Integer optional + Integer optional
    Provides the ability to restrict list of clients returned based on the office they are associated with.
    underHierarchy
    @@ -4069,7 +4069,7 @@ GET https://DomainName/api/v1/clients/{clientId}
    String optional
    -
    Use an sql fragment valid for the underlying client schema to filter results. e.g. display_name like %K%
    +
    Use an sql fragment valid for the underlying client schema to filter results. e.g. display_name like %K%

    Example Requests:

    clients
    @@ -4140,8 +4140,8 @@ GET https://DomainName/api/v1/clients PUT https://DomainName/api/v1/clients/{clientId} -PUT clients/1 -Content-Type: application/json +PUT clients/1 +Content-Type: application/json Request Body: { "externalId": "786444UUUYYH7" @@ -4172,7 +4172,7 @@ DELETE https://DomainName/api/v1/clients/{clientId} DELETE clients/3 -Content-Type: application/json +Content-Type: application/json Request Body: { } @@ -4323,9 +4323,9 @@ GET https://DomainName/api/v1/clients/{clientId}/accounts

    Client Identifiers

    -

    Client Identifiers refer to documents that are +

    Client Identifiers refer to documents that are used to uniquely identify a customer
    - Ex: Drivers License, Passport, Ration card etc + Ex: Drivers License, Passport, Ration card etc

    @@ -4342,14 +4342,14 @@ GET https://DomainName/api/v1/clients/{clientId}/accounts - -
    documentType
    Type of the identification document + Type of the identification document (License, Passport Etc)
    description
    Any user comments to be associated + Any user comments to be associated with the Client Identifier
    @@ -4491,7 +4491,7 @@ POST https://DomainName/api/v1/clients/{clientId}/identifiers
    POST clients/1/identifiers -Content-Type: application/json +Content-Type: application/json Request Body: { "documentTypeId":"1", @@ -4519,8 +4519,8 @@ Request Body: PUT https://DomainName/api/v1/clients/{clientId}/identifiers/{identifierId} -PUT clients/1/identifiers/3 -Content-Type: application/json +PUT clients/1/identifiers/3 +Content-Type: application/json Request Body: { "documentTypeId":"4", @@ -4553,8 +4553,8 @@ Request Body: DELETE https://DomainName/api/v1/clients/{clientId}/identifiers/{identifierId} -DELETE clients/1/identifiers/3 -Content-Type: application/json +DELETE clients/1/identifiers/3 +Content-Type: application/json No Request Body: @@ -4573,9 +4573,9 @@ No Request Body:

    Client Images

    -

    The current API provides support for the addition of a single +

    The current API provides support for the addition of a single image for a Client
    - Allowed formats: JPEG (.jpg or .jpeg), GIF (.gif) and PNG (.png) + Allowed formats: JPEG (.jpg or .jpeg), GIF (.gif) and PNG (.png)

    The API supports two different Approaches for manipulating Client Images

      @@ -4584,7 +4584,7 @@ No Request Body:
    • Multi-part form data: - Images can be uploaded using Multi part forms and downloaded as regular binary files + Images can be uploaded using Multi part forms and downloaded as regular binary files

    @@ -4603,7 +4603,7 @@ No Request Body:
    GET https://DomainName/api/v1/clients/{clientId}/images -Accept: text/plain +Accept: text/plain @@ -4636,16 +4636,16 @@ gAEAOg13B6R/SAgAAAAASUVORK5CYII= Integer optional
    Triggers resizing of the image to the defined width
    - +
    maxHeight
    Integer optional -
    +
    Triggers resizing of the image to the defined height
    - +
    @@ -4655,7 +4655,7 @@ Accept: application/octet-stream POST clients/1/images -Accept: application/octet-stream +Accept: application/octet-stream Not shown: The corresponding binary (image) file @@ -4674,7 +4674,7 @@ POST https://DomainName/api/v1/clients/{clientId}/images POST clients/1/images -Content-Type: text/plain +Content-Type: text/plain Request Body: data:image/png;base64,iVBORw0KGgoAA AANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0l @@ -4705,10 +4705,10 @@ P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC

    - The form should contain a required named body part with the - name "file".

    - If you are using a HTML form, a snippet like - <input type="file" name="file"></input> + The form should contain a required named body part with the + name "file".

    + If you are using a HTML form, a snippet like + <input type="file" name="file"></input> can be used for uploading the image file

    @@ -4718,7 +4718,7 @@ POST https://DomainName/api/v1/clients/{clientId}/images POST clients/1/images -Content-Type: multipart/form-data +Content-Type: multipart/form-data Request Body: Not shown @@ -4742,7 +4742,7 @@ PUT https://DomainName/api/v1/clients/{clientId}/images PUT clients/1/images -Content-Type: text/plain +Content-Type: text/plain Request Body: data:image/png;base64,iVBORw0KGgoAA AANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0l @@ -4773,10 +4773,10 @@ P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC

    - The form should contain a required named body part with the - name "file".

    - If you are using a HTML form, a snippet like - <input type="file" name="file"></input> + The form should contain a required named body part with the + name "file".

    + If you are using a HTML form, a snippet like + <input type="file" name="file"></input> can be used for uploading the image file

    @@ -4786,7 +4786,7 @@ PUT https://DomainName/api/v1/clients/{clientId}/images PUT clients/1/images -Content-Type: multipart/form-data +Content-Type: multipart/form-data Request Body: Not shown
    @@ -4803,7 +4803,7 @@ DELETE https://DomainName/api/v1/clients/{clientId}/images DELETE clients/1/images -Content-Type: application/json +Content-Type: application/json No Request Body: @@ -5007,8 +5007,8 @@ POST https://DomainName/mifosng-provider/api/v1/centers POST centers Content-Type: application/json Request Body: { - "name": "First Center (No groups)", - "officeId": 1, + "name": "First Center (No groups)", + "officeId": 1, "active": false } @@ -5338,7 +5338,7 @@ Request Body:

    Save Collection Sheet

    -

    This Api allows the loan officer to perform bulk repayments of JLG loans for a center on a given meeting date.

    +

    This Api allows the loan officer to perform bulk repayments of JLG loans for a center on a given meeting date.

    POST https://Domain Name/api/v1/centers/{centerId}?command=saveCollectionSheet @@ -5373,7 +5373,7 @@ Request Body: }
    -
    +
     
    @@ -5386,7 +5386,7 @@ PUT https://DomainName/mifosng-provider/api/v1/centers/{centerId} PUT centers/8 -Content-Type: application/json +Content-Type: application/json Request Body: { "name": "First Center (No groups)" @@ -5404,7 +5404,7 @@ Request Body:
    - +  
    @@ -5502,7 +5502,7 @@ GET https://DomainName/mifosng-provider/api/v1/centers/9 Integer optional, defaults to 0
    Indicates from what result to start from.
    - +
    limit
    Integer optional, defaults to 200 @@ -5523,7 +5523,7 @@ GET https://DomainName/mifosng-provider/api/v1/centers/9
    officeId
    - Integer optional + Integer optional
    Provides ability to restrict list of centers returned based on the office there associated with.
    underHierarchy
    @@ -5548,7 +5548,7 @@ GET https://DomainName/mifosng-provider/api/v1/centers/9
    String optional
    -
    Use an sql fragment valid for the underlying center schema to filter results. e.g. display_name like %K%
    +
    Use an sql fragment valid for the underlying center schema to filter results. e.g. display_name like %K%

    Example Requests:

    centers
    @@ -5730,10 +5730,10 @@ GET https://DomainName/mifosng-provider/api/v1/centers?paged=true
    Boolean optional
    -
    Defaults to false if not provided. If staffInSelectedOfficeOnly=true only staff - who are associated with the selected branch are returned.
    +
    Defaults to false if not provided. If staffInSelectedOfficeOnly=true only staff + who are associated with the selected branch are returned.
    - +

    Example Requests:

    groups/template

    @@ -5863,7 +5863,7 @@ Content-Type: application/json Request Body: { "officeId":"1", "name":"Pending Group", - "active": false + "active": false } @@ -5877,13 +5877,13 @@ Content-Type: application/json Request Body: POST groups Content-Type: application/json Request Body: { - "officeId":"1", + "officeId":"1", "name":"First Group", - "externalId": "000-1A", + "externalId": "000-1A", "clientMembers": ["1"], - "dateFormat": "dd MMMM yyyy", - "locale": "en", - "active": true, + "dateFormat": "dd MMMM yyyy", + "locale": "en", + "active": true, "activationDate": "04 March 2009", "submittedOnDate":"04 March 2009" } @@ -6475,8 +6475,8 @@ Request Body:
    Boolean optional, defaults to false
    -
    If staffInSelectedOfficeOnly=true only staff - who are associated with the selected branch are returned.
    +
    If staffInSelectedOfficeOnly=true only staff + who are associated with the selected branch are returned.
    roleId
    Long optional @@ -6796,7 +6796,7 @@ PUT https://DomainName/mifosng-provider/api/v1/groups/{groupid} PUT groups/1 -Content-Type: application/json +Content-Type: application/json Request Body: { "name": "First Group (changed)" @@ -6855,7 +6855,7 @@ DELETE groups/2 Integer optional, defaults to 0
    Indicates from what result to start from.
    - +
    limit
    Integer optional, defaults to 200 @@ -6876,7 +6876,7 @@ DELETE groups/2
    officeId
    - Integer optional + Integer optional
    Provides ability to restrict list of groups returned based on the office there associated with.
    underHierarchy
    @@ -6901,7 +6901,7 @@ DELETE groups/2
    String optional
    -
    Use an sql fragment valid for the underlying group schema to filter results. e.g. display_name like %K%
    +
    Use an sql fragment valid for the underlying group schema to filter results. e.g. display_name like %K%

    Example Requests:

    groups
    @@ -7145,7 +7145,7 @@ GET https://DomainName/mifosng-provider/api/v1/groups?paged=true An enumeration that indicates the type of transaction processing strategy to be used. This relates to functionality that is also known as Payment Application Logic. - +

    A number of out of the box approaches exist, some are custom to specific MFIs, some are more general and indicate the order in which payments are processed.

    Refer to the Payment Application Logic / Transaction Processing Strategy section in the appendix for more detailed overview of each available payment application logic provided out of the box.

    @@ -7237,12 +7237,12 @@ An enumeration that indicates the type of transaction processing strategy to be
    If entered, productId, productName and selectedProduct fields are returned.
    - +
    staffInSelectedOfficeOnly
    Boolean optional
    -
    Defaults to false if not provided. If staffInSelectedOfficeOnly=true only loan officers +
    Defaults to false if not provided. If staffInSelectedOfficeOnly=true only loan officers who are associated with the selected branch are returned.
    activeOnly
    @@ -7600,7 +7600,7 @@ GET https://DomainName/api/v1/loans/template?templateType=individual&clientId=1& 'originalSchedule': Loan schedule data without interest recalculations.
    - 'futureSchedule': Loan schedule data from today date(will be displayed only for interest first repayment strategy processors) + 'futureSchedule': Loan schedule data from today date(will be displayed only for interest first repayment strategy processors)
    'transactions': Loan transactions data. @@ -7864,7 +7864,7 @@ GET https://DomainName/api/v1/loans/{loanId} Integer optional, defaults to 0
    Indicates from what result to start from.
    - +
    limit
    Integer optional, defaults to 200 @@ -7885,10 +7885,10 @@ GET https://DomainName/api/v1/loans/{loanId}
    officeId
    - Integer optional + Integer optional
    Provides ability to restrict list of loans returned based on the office there associated with.
    - +
    underHierarchy
    String optional @@ -7911,7 +7911,7 @@ GET https://DomainName/api/v1/loans/{loanId}
    String optional
    -
    Use an sql fragment valid for the underlying loan schema to filter results. e.g. display_name like %K%
    +
    Use an sql fragment valid for the underlying loan schema to filter results. e.g. display_name like %K%

    Example Requests:

    loans
    @@ -8107,7 +8107,7 @@ GET https://DomainName/mifosng-provider/api/v1/loans
    PUT https://Domain Name/api/v1/loans/{loanId} - PUT loans/1 + PUT loans/1 Content-Type: application/json No Request Body: { @@ -8167,7 +8167,7 @@ POST https://DomainName/api/v1/loans?command=calculateLoanSchedule POST loans?command=calculateLoanSchedule -Content-Type: application/json +Content-Type: application/json Request Body: { "dateFormat": "dd MMMM yyyy", @@ -8337,7 +8337,7 @@ POST https://DomainName/api/v1/loans POST loans -Content-Type: application/json +Content-Type: application/json Request Body: { "dateFormat": "dd MMMM yyyy", @@ -8404,7 +8404,7 @@ POST https://DomainName/api/v1/loans/{loanId}?command=approve POST loans/1?command=approve -Content-Type: application/json +Content-Type: application/json Request Body: { "locale": "en", @@ -8443,7 +8443,7 @@ Request Body:
    - +  
    @@ -8455,12 +8455,12 @@ POST https://DomainName/api/v1/loans/{loanId}?command=recoverGuarantees POST loans/1?command=approve -Content-Type: application/json +Content-Type: application/json No Request Body: { - + "loanId": 1 } @@ -8540,7 +8540,7 @@ Request Body:
    - +  
    @@ -8556,7 +8556,7 @@ Request Body: "unassignedDate":"15 September 2014", "locale":"en", "dateFormat":"dd MMMM yyyy" -} +} { @@ -8588,7 +8588,7 @@ POST https://DomainName/api/v1/loans/{loanId}?command=reject POST loans/1?command=reject -Content-Type: application/json +Content-Type: application/json Request Body: { "locale": "en", @@ -8646,7 +8646,7 @@ POST https://DomainName/api/v1/loans/{loanId}?command=withdrawnByApplicant POST loans/1?command=withdrawnByApplicant -Content-Type: application/json +Content-Type: application/json Request Body: { "locale": "en", @@ -8713,7 +8713,7 @@ POST https://DomainName/api/v1/loans/{loanId}?command=disburse POST loans/1?command=disburse -Content-Type: application/json +Content-Type: application/json Request Body: { "dateFormat": "dd MMMM yyyy", @@ -8793,7 +8793,7 @@ POST https://DomainName/api/v1/loans/{loanId}?command=disburseToSavings POST loans/1?command=disburse -Content-Type: application/json +Content-Type: application/json Request Body: { "dateFormat": "dd MMMM yyyy", @@ -8891,7 +8891,7 @@ DELETE https://DomainName/api/v1/loans/{loanId} DELETE loans/1 -Content-Type: application/json +Content-Type: application/json No Request Body: @@ -8963,7 +8963,7 @@ No Request Body: loan's inArrearsTolerance
    - 'refundbycash'
    "date" is set to the current date
    + 'refundbycash'
    "date" is set to the current date
    "total" "amount" is set to the total amount paid in advance.
    @@ -9053,7 +9053,7 @@ Request Body:
    - +  
    @@ -9237,9 +9237,9 @@ Request Body:
    - + - +  
    @@ -9256,7 +9256,7 @@ Request Body: { } - + { "officeId": 1, "clientId": 1, @@ -9313,7 +9313,7 @@ GET https://DomainName/api/v1/loans/{loanId}/transactions/{transactionId}
    - +  
    @@ -9334,7 +9334,7 @@ POST https://DomainName/api/v1/loans/{loanId}/transactions/{transactionId} POST loans/1/transactions/2 -Content-Type: application/json +Content-Type: application/json Request Body: { "locale": "en_GB", @@ -9345,13 +9345,13 @@ Request Body: } -{ +{ "resourceId": 16 }
    - +   @@ -9359,7 +9359,7 @@ Request Body:

    Guarantors

    A person who guarantees to pay for someone else's debt - if he or she should default on a loan obligation. A guarantor acts as a co-signor of sorts. + if he or she should default on a loan obligation. A guarantor acts as a co-signor of sorts.

    @@ -9420,7 +9420,7 @@ Request Body: - @@ -9636,7 +9636,7 @@ POST https://DomainName/api/v1//loans/{loanId}}/guarantors POST /loans/1/guarantors -Content-Type: application/json +Content-Type: application/json Request Body: { guarantorTypeId:3, @@ -9653,7 +9653,7 @@ Request Body: POST /loans/1/guarantors -Content-Type: application/json +Content-Type: application/json Request Body: { guarantorTypeId:1, @@ -9682,8 +9682,8 @@ PUT https://DomainName/api/v1/loans/{loanId}/guarantors/{guarantorId} PUT loans/1/guarantors/1 -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { entityId:1 } @@ -9717,7 +9717,7 @@ DELETE https://DomainName/api/v1/loans/{loanId}/guarantors/{guarantorId}?guarant DELETE loans/1/guarantors/1 DELETE loans/1/guarantors/1?guarantorFundingId=1 -Content-Type: application/json +Content-Type: application/json No Request Body: @@ -9734,12 +9734,12 @@ No Request Body:

    Loan Collateral

    -

    In lending agreements, collateral is a borrower's pledge of specific property to a lender, - to secure repayment of a loan. The collateral serves as protection for a lender against a +

    In lending agreements, collateral is a borrower's pledge of specific property to a lender, + to secure repayment of a loan. The collateral serves as protection for a lender against a borrower's default - that is, any borrower failing to pay the principal and interest under - the terms of a loan obligation. If a borrower does default on a loan (due to insolvency - or other event), that borrower forfeits (gives up) the property pledged as collateral - - and the lender then becomes the owner of the collateral + the terms of a loan obligation. If a borrower does default on a loan (due to insolvency + or other event), that borrower forfeits (gives up) the property pledged as collateral + - and the lender then becomes the owner of the collateral

    savingsId
    Guarantors Savings Account on which Amount will be blocked + Guarantors Savings Account on which Amount will be blocked
    @@ -9750,8 +9750,8 @@ No Request Body: @@ -9931,7 +9931,7 @@ POST https://DomainName/api/v1//loans/{loanId}/collaterals POST /loans/1/collaterals -Content-Type: application/json +Content-Type: application/json Request Body: { collateralTypeId:9, @@ -9945,7 +9945,7 @@ Request Body: POST /loans/1/collaterals -Content-Type: application/json +Content-Type: application/json Request Body: { "collateralTypeId":"8", @@ -9976,9 +9976,9 @@ PUT https://DomainName/api/v1/loans/{loanId}/collaterals/{collateralId} PUT loans/1/collaterals/12 -Content-Type: application/json -Request Body: -{ +Content-Type: application/json +Request Body: +{ "description": "22 Carat Gold chain weighing 12 grams" } @@ -10008,7 +10008,7 @@ DELETE https://DomainName/api/v1/loans/{loanId}/collaterals/{collateralId} DELETE loans/1/collaterals/13 -Content-Type: application/json +Content-Type: application/json No Request Body: @@ -10027,10 +10027,10 @@ No Request Body:

    Loan Charges

    Its typical for MFIs to add extra costs for their loan products. They can be either Fees or Penalties.

    -

    Loan Charges are instances of Charges and +

    Loan Charges are instances of Charges and represent either fees and penalties for loan products. Refer Charges for documentation of the various properties of a charge, Only additional properties ( - specific to the context of a Charge being associated with a Loan) are + specific to the context of a Charge being associated with a Loan) are described here

    Identifies the type of a collateral
    - Ex: Gold, property etc (permitted types can be configured using - Code Values for + Ex: Gold, property etc (permitted types can be configured using + Code Values for the Code LoanCollateral)
    Refer Retrieve Collateral Details Template for complete @@ -9778,8 +9778,8 @@ No Request Body:
    Details of the currency used to estimate the value of a Collateral. - The currency defaults to the currency of the - Loan for which this Collateral serves as a + The currency defaults to the currency of the + Loan for which this Collateral serves as a guarantee
    @@ -10354,7 +10354,7 @@ POST https://DomainName/api/v1/loans/{loanId}/charges POST /loans/1/charges -Content-Type: application/json +Content-Type: application/json Request Body: { "chargeId": "2", @@ -10380,7 +10380,7 @@ Request Body:

    Update a Loan Charge

    -

    Currently Loan Charges may be updated only if the Loan +

    Currently Loan Charges may be updated only if the Loan is not yet approved

    @@ -10390,8 +10390,8 @@ PUT https://DomainName/api/v1/loans/{loanId}/charges/{chargeId}
    PUT loans/1/charges/12 -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { "dateFormat": "dd MMMM yyyy", "locale": "en", @@ -10430,8 +10430,8 @@ POST https://DomainName/api/v1/loans/{loanId}/charges/{chargeId}?command=pay POST loans/1/charges/12?command=pay -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { "dateFormat": "dd MMMM yyyy", "locale": "en", @@ -10467,7 +10467,7 @@ DELETE https://DomainName/api/v1/loans/{loanId}/charges/{chargeId} DELETE loans/1/charges/2 -Content-Type: application/json +Content-Type: application/json No Request Body: @@ -10480,7 +10480,7 @@ No Request Body:
    - +  
    @@ -10560,7 +10560,7 @@ No Request Body:
    - +  
    @@ -10592,19 +10592,19 @@ POST https://DomainName/api/v1/rescheduleloans POST rescheduleloans Content-Type: application/json Request Body: -{ - "loanId": 1, - "graceOnPrincipal": 2, - "graceOnInterest": 3, +{ + "loanId": 1, + "graceOnPrincipal": 2, + "graceOnInterest": 3, "extraTerms": 2, - "rescheduleFromDate": "04 December 2014", - "dateFormat": "dd MMMM yyyy", - "locale": "en", + "rescheduleFromDate": "04 December 2014", + "dateFormat": "dd MMMM yyyy", + "locale": "en", "recalculateInterest": true, "submittedOnDate": "04 September 2014", "newInterestRate" : 28, "rescheduleReasonId": 1 -} +} { @@ -10617,17 +10617,17 @@ Content-Type: application/json Request Body: POST rescheduleloans Content-Type: application/json Request Body: -{ - "loanId": 1, - "graceOnPrincipal": 2, - "rescheduleFromDate": "04 December 2014", +{ + "loanId": 1, + "graceOnPrincipal": 2, + "rescheduleFromDate": "04 December 2014", "adjustedDueDate": "20 December 2014", - "dateFormat": "dd MMMM yyyy", - "locale": "en", + "dateFormat": "dd MMMM yyyy", + "locale": "en", "submittedOnDate": "04 September 2014", "rescheduleReasonComment" : "Client has gone AWOL", "rescheduleReasonId": 1 -} +} { @@ -10710,7 +10710,7 @@ GET https://DomainName/api/v1/rescheduleloans/{requestId} GET https://DomainName/api/v1/rescheduleloans/{requestId}?command=previewLoanReschedule - + "currency": { "code": "KES", "name": "Kenyan Shilling", @@ -11028,8 +11028,8 @@ POST https://DomainName/api/v1/offices POST offices -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { "name": "Example New Branch", "dateFormat": "dd MMMM yyyy", @@ -11059,10 +11059,10 @@ PUT https://DomainName/api/v1/offices/{officeId} PUT offices/1 -Content-Type: application/json -Request Body: -{ - "name": "Name is updated" +Content-Type: application/json +Request Body: +{ + "name": "Name is updated" } @@ -11249,7 +11249,7 @@ Request Body: - + @@ -11258,7 +11258,7 @@ Request Body: An enumeration that indicates the type of transaction processing strategy to be used. This relates to functionality that is also known as Payment Application Logic. - +

    A number of out of the box approaches exist, some are custom to specific MFIs, some are more general and indicate the order in which payments are processed.

    Refer to the Payment Application Logic / Transaction Processing Strategy section in the appendix for more detailed overview of each available payment application logic provided out of the box.

    @@ -12582,13 +12582,13 @@ GET https://DomainName/api/v1/loanproducts/{productId}

    Create a Loan Product

    -

    Depending of the Accounting Rule (accountingRule) selected, - additional fields with details of the appropriate Ledger Account +

    Depending of the Accounting Rule (accountingRule) selected, + additional fields with details of the appropriate Ledger Account identifiers would need to be passed in.

    Refer
    - MifosX Accounting Specs Draft for more details regarding the + MifosX Accounting Specs Draft for more details regarding the significance of the selected accounting rule

    @@ -12598,7 +12598,7 @@ GET https://DomainName/api/v1/loanproducts/{productId} name, shortName, currencyCode, digitsAfterDecimal, inMultiplesOf, principal, - numberOfRepayments, repaymentEvery, repaymentFrequencyType, + numberOfRepayments, repaymentEvery, repaymentFrequencyType, interestRatePerPeriod, interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType, transactionProcessingStrategyId, accountingRule, isInterestRecalculationEnabled, daysInYearType, daysInMonthType @@ -12623,8 +12623,8 @@ GET https://DomainName/api/v1/loanproducts/{productId}
    Additional Mandatory Fields for Cash(2) based accounting
    - fundSourceAccountId, loanPortfolioAccountId, interestOnLoanAccountId, - incomeFromFeeAccountId, incomeFromPenaltyAccountId, + fundSourceAccountId, loanPortfolioAccountId, interestOnLoanAccountId, + incomeFromFeeAccountId, incomeFromPenaltyAccountId, writeOffAccountId, transfersInSuspenseAccountId, overpaymentLiabilityAccountId @@ -12633,13 +12633,13 @@ GET https://DomainName/api/v1/loanproducts/{productId}
    Additional Mandatory Fields for periodic (3) and upfront (4)accrual accounting
    - fundSourceAccountId, loanPortfolioAccountId, interestOnLoanAccountId, - incomeFromFeeAccountId, incomeFromPenaltyAccountId, + fundSourceAccountId, loanPortfolioAccountId, interestOnLoanAccountId, + incomeFromFeeAccountId, incomeFromPenaltyAccountId, writeOffAccountId, receivableInterestAccountId, receivableFeeAccountId, receivablePenaltyAccountId, transfersInSuspenseAccountId, overpaymentLiabilityAccountId - +
    @@ -12647,7 +12647,7 @@ GET https://DomainName/api/v1/loanproducts/{productId}
    Additional Mandatory Fields if interest recalculation is enabled(true)
    interestRecalculationCompoundingMethod, rescheduleStrategyMethod, recalculationRestFrequencyType
    - +
    @@ -12655,7 +12655,7 @@ GET https://DomainName/api/v1/loanproducts/{productId}
    Additional Optional Fields if interest recalculation is enabled(true) and recalculationRestFrequencyType is not same as repayment period
    recalculationRestFrequencyInterval, recalculationRestFrequencyDate
    - +
    @@ -12663,7 +12663,7 @@ GET https://DomainName/api/v1/loanproducts/{productId}
    Additional Mandatory Fields if Hold Guarantee funds is enabled(true)
    mandatoryGuarantee
    - +
    @@ -12678,7 +12678,7 @@ POST https://DomainName/api/v1/loanproducts POST loanproducts -Content-Type: application/json +Content-Type: application/json Request Body: {"currencyCode":"USD", "includeInBorrowerCycle":"true", @@ -12738,13 +12738,13 @@ Request Body: } -{ - "resourceId": 1 +{ + "resourceId": 1 } POST loanproducts -Content-Type: application/json +Content-Type: application/json Request Body: { "name": "LP Cash Accounting", @@ -12800,17 +12800,17 @@ Request Body: "incomeAccountId": "9" } ] - + } -{ - "resourceId": 2 +{ + "resourceId": 2 } POST loanproducts -Content-Type: application/json +Content-Type: application/json Request Body: { "name": "LP Accrual Accounting", @@ -12846,11 +12846,11 @@ Request Body: } -{ - "resourceId": 3 +{ + "resourceId": 3 } - + @@ -12866,8 +12866,8 @@ PUT https://DomainName/api/v1/loanproducts/{loanId} PUT loanproducts/1 -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { "locale": "en_GB", "principal": "70,000.00" @@ -12884,8 +12884,8 @@ Request Body: PUT loanproducts/3 -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { "locale": "en", "isInterestRecalculationEnabled":"true", @@ -13188,19 +13188,19 @@ POST https://DomainName/api/v1/loanproducts/5/productmix POST loanproducts/{productId}/productmix -Content-Type: application/json +Content-Type: application/json Request Body: {"restrictedProducts":["1"]} -{ +{ "changes":{ "restrictedProductsForMix":[1], "removedProductsForMix":[] }, "productId":5 } - + @@ -13216,8 +13216,8 @@ PUT https://DomainName/api/v1/loanproducts/{productId}/productmix PUT loanproducts/5/productmix -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { "restrictedProducts":["3"] } @@ -13256,7 +13256,7 @@ DELETE loanproducts/5/productmix } - + @@ -13377,8 +13377,8 @@ POST https://DomainName/api/v1/holidays POST holidays -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { "name": "Good Friday", "description": "Good Friday", @@ -13414,8 +13414,8 @@ POST https://DomainName/api/v1/holidays/{holidayId}?command=activate POST holidays -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { } @@ -13481,8 +13481,8 @@ PUT https://DomainName/api/v1/holidays/{holidayId} PUT holidays/1 -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { name:"Independence day", description: "Holiday for Independence day celebration" @@ -13512,8 +13512,8 @@ DELETE https://DomainName/api/v1/holidays/{holidayId} DELETE holidays/1 -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { } @@ -13534,10 +13534,10 @@ Request Body:

    The days of the week that are workdays.

    - Rescheduling of repayments when it falls on a non-working is turned on /off by enable/disable reschedule-future-repayments parameter in Global configurations. + Rescheduling of repayments when it falls on a non-working is turned on /off by enable/disable reschedule-future-repayments parameter in Global configurations.

    - Allow transactions on non-working days is configurable by enabling/disbaling the allow-transactions-on-non_workingday parameter in Global configurations. + Allow transactions on non-working days is configurable by enabling/disbaling the allow-transactions-on-non_workingday parameter in Global configurations.

    Additional Optional Fields if Hold Guarantee funds is enabled(true)
    @@ -13575,7 +13575,7 @@ Request Body: - +   @@ -13657,8 +13657,8 @@ PUT https://DomainName/api/v1/currencies PUT currencies -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { "currencies": [ "KES", @@ -13808,7 +13808,7 @@ PUT https://DomainName/api/v1/configurations/9 PUT configurations -Content-Type: application/json +Content-Type: application/json Request Body: { "enabled":"true", "value":2 @@ -13882,7 +13882,7 @@ GET https://DomainName/api/v1/caches -  
    @@ -13895,8 +13895,8 @@ PUT https://DomainName/api/v1/caches PUT caches -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { "cacheType": 2 } @@ -13929,13 +13929,14 @@ Request Body:

    Create a Hook

    -

    The following parameters can be passed for the creation of a hook :- +

    The following parameters can be passed for the creation of a hook :-

    • name - string - Required. The name of the template that is being called. (See /hooks/template for the list of valid hook names.)
    • isActive - boolean - Determines whether the hook is actually triggered.
    • events - array - Determines what events the hook is triggered for.
    • config - hash - Required. Key/value pairs to provide settings for this hook. These settings vary between the templates.
    • +
    • templateId - Optional. The UGD template ID associated with the same entity (client or loan).
    @@ -13943,13 +13944,14 @@ Request Body: POST https://DomainName/api/v1/hooks -POST hooks -Content-Type: application/json -Request Body: +POST hooks +Content-Type: application/json +Request Body: { "name": "Web", "isActive": true, "displayName": "Kremlin", + "templateId": 1, "events": [ { "actionName": "DISBURSE", @@ -13967,8 +13969,8 @@ Request Body: } -{ - "resourceId": 4 +{ + "resourceId": 4 }
    @@ -13996,6 +13998,8 @@ GET https://DomainName/api/v1/hooks "isActive": true, "createdAt": [2014, 9, 16], "updatedAt": [2014, 9, 16], + "templateId": 1, + "templateName": "My UGD", "events": [ { "actionName": "DISBURSE", @@ -14043,6 +14047,8 @@ GET https://DomainName/api/v1/hooks/{hookId} "isActive": true, "createdAt": [2014, 9, 16], "updatedAt": [2014, 9, 16], + "templateId": 1, + "templateName": "My UGD", "events": [ { "actionName": "DISBURSE", @@ -14081,8 +14087,8 @@ PUT https://DomainName/api/v1/hooks/{hookId} PUT hooks/4 -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { "name": "Web", "isActive": true, @@ -14132,12 +14138,12 @@ Request Body: DELETE https://DomainName/api/v1/hooks/{hookId} -DELETE hooks/4 +DELETE hooks/4 Content-Type: application/json -{ - "resourceId": 4 +{ + "resourceId": 4 }
    @@ -14233,16 +14239,16 @@ GET https://DomainName/api/v1/hooks/template POST https://DomainName/api/v1/codes -POST codes -Content-Type: application/json -Request Body: +POST codes +Content-Type: application/json +Request Body: { "name": "MyNewCode" } -{ - "resourceId": 4 +{ + "resourceId": 4 }
    @@ -14319,9 +14325,9 @@ PUT https://DomainName/api/v1/codes/{codeId} PUT codes/4 -Content-Type: application/json -Request Body: -{ +Content-Type: application/json +Request Body: +{ "name": "MyNewCode(changed)" } @@ -14348,12 +14354,12 @@ Request Body: DELETE https://DomainName/api/v1/codes/{codeId} -DELETE codes/4 +DELETE codes/4 Content-Type: application/json -{ - "resourceId": 4 +{ + "resourceId": 4 }
    @@ -14386,9 +14392,9 @@ Content-Type: application/json POST https://DomainName/api/v1/codes/1/codevalues -POST codes/1/codevalues -Content-Type: application/json -Request Body: +POST codes/1/codevalues +Content-Type: application/json +Request Body: { "name":"Ration Card", "description: "Ration card information", @@ -14396,8 +14402,8 @@ Request Body: } -{ - "resourceId": 4 +{ + "resourceId": 4 } @@ -14490,9 +14496,9 @@ PUT https://DomainName/api/v1/codes/{codeId}/codevalues/{codevalueId} PUT codes/1/codevalues/1 -Content-Type: application/json -Request Body: -{ +Content-Type: application/json +Request Body: +{ "name": "Indian Passport", "description": "Indian Passport information", "position":2 @@ -14501,7 +14507,7 @@ Request Body: { "resourceId": 1, - "changes": + "changes": { "name": "Indian Passport", "description": "Indian Passport information", @@ -14524,11 +14530,11 @@ Request Body: DELETE https://DomainName/api/v1/codes/{codeId}/codevalues/{codevalueId} -DELETE codes/1/codevalues/5 +DELETE codes/1/codevalues/5 Content-Type: application/json -{ +{ "resourceId": 5 } @@ -14543,14 +14549,14 @@ Content-Type: application/json

    Audits

    Every non-read Mifos API request is audited. A fully processed request can not be changed or deleted. See maker checker api for situations where an audit is not - fully processed.

    - + fully processed.

    + Permissions: To search and look at audit entries a user needs to be attached to a role that has one of the ALL_FUNCTIONS, ALL_FUNCTIONS_READ or READ_AUDIT permissions.

    - + Data Scope: A user can only see audits that are within their data scope. However, 'head office' users can see all audits including those that aren't office/branch related - e.g. Loan Product changes. + e.g. Loan Product changes.

    @@ -14567,50 +14573,50 @@ Content-Type: application/json

    actionName
    optional
    Examples: CREATE, UPDATE, DISBURSE
    - +
    entityName
    optional
    Examples: CLIENT, LOAN, FUND
    - +
    resourceId
    optional, The id value of the entityName
    - +
    makerId
    optional, The id value of the application user creating the entry
    - +
    makerDateTimeFrom
    optional, Get entries created on or after this
    Example: 2013-04-10 08:00:00
    - +
    makerDateTimeTo
    optional, Get entries created on or before this
    Example: 2013-05-10 08:00:00
    - +
    checkerId
    optional, The id value of the application user that checked (approved) the entry
    - +
    checkerDateTimeFrom
    optional, Get entries checked on or after this
    Example: 2013-04-10 08:00:00
    - +
    checkerDateTimeTo
    optional, Get entries checked on or before this
    Example: 2013-05-10 18:00:00
    - +
    processingResult
    optional, The enum value of the processing status @@ -14621,33 +14627,33 @@ Content-Type: application/json 2: awaiting.approval
    3: rejected
    - +
    officeId
    optional, The id value of the office/branch associated with the entry (if there is one)
    - +
    groupId
    optional, The id value of the group associated with the entry (if there is one). A group is a general idea and may be a Center, a Group, a Communal Bank or other.
    - +
    clientId
    optional, The id value of the client associated with the entry (if there is one)
    - +
    loanId
    optional, The id value of the loan associated with the entry (if there is one)
    - +
    savingsAccountId
    optional, The id value of the savings account associated with the entry (if there is one)
    - +
    includeJson
    optional, Values are true, false. Default is false. @@ -14663,7 +14669,7 @@ Content-Type: application/json Integer optional, defaults to 0
    Indicates from what result to start from.
    - +
    limit
    Integer optional, defaults to 200 @@ -14681,7 +14687,7 @@ Content-Type: application/json String optional, one of ASC, DESC
    Indicates what way to order results if orderBy is used.
    - +

    Example Requests:

    audits

    @@ -14778,7 +14784,7 @@ GET https://DomainName/api/v1/audits GET https://DomainName/api/v1/audits?paged=true&limit=5
    -{ +{ "totalFilteredRecords": 30, "pageItems": [ { @@ -14979,7 +14985,7 @@ GET https://DomainName/api/v1/audits

    Account number format

    -

    Account number preferences are used to describe custom formats for account numbers associated with Customer, Loan and Savings accounts. +

    Account number preferences are used to describe custom formats for account numbers associated with Customer, Loan and Savings accounts.

    @@ -15006,7 +15012,7 @@ GET https://DomainName/api/v1/audits details - +
    @@ -15218,7 +15224,7 @@ POST https://DomainName/api/v1/accountnumberformats POST /accountnumberformats -Content-Type: application/json +Content-Type: application/json Request Body: { accountType :1, @@ -15233,7 +15239,7 @@ Request Body: POST /accountnumberformats -Content-Type: application/json +Content-Type: application/json Request Body: { accountType :2, @@ -15260,8 +15266,8 @@ PUT https://DomainName/api/v1/accountnumberformats/{accountnumberformatId} PUT accountnumberformats/2 -Content-Type: application/json -Request Body: +Content-Type: application/json +Request Body: { prefixType:1 } @@ -15293,7 +15299,7 @@ DELETE https://DomainName/api/v1/accountnumberformats/{accountnumberformatId} DELETE accountnumberformats/2 -Content-Type: application/json +Content-Type: application/json No Request Body: @@ -15315,18 +15321,18 @@ No Request Body: Then, another user that has "Checker" rights for that transaction, can inspect and approve the data.

    - +

    By default, Maker Checker functionality is disabled. See Update Global Configuration to enable/disable Maker Checker functionality at a global level.

    - +

    Additionally, Maker Checker functionality for each transaction (permission) is disabled by default. see Enable/Disable Permissions for Maker Checker to enable/disable Maker Checker functionality at a transaction (permission) level.

    - +

    Finally, to give checking rights to a user (via a role associated with the user) see Update a Role's Permissions @@ -15349,13 +15355,13 @@ No Request Body: When a user "makes" an entry that is enabled for Maker Checker, it is audited and the audit status is set to a value of 2 (awaiting.approval).

    - + Checkers can only Check and approve entries that they have been permitted to check.

    - + Checkers can only Check and approve entries that are within their data scope. However, - 'head office' Checkers can Check and approve all entries + 'head office' Checkers can Check and approve all entries including those that aren't office/branch related (as long as they have the Checker permissions) - e.g. Loan Product changes. + e.g. Loan Product changes.

    @@ -15371,64 +15377,64 @@ No Request Body:
    actionName
    optional
    Examples: CREATE, UPDATE, DISBURSE
    - +
    entityName
    optional
    Examples: CLIENT, LOAN, FUND
    - +
    resourceId
    optional, The id value of the entityName
    - +
    makerId
    optional, The id value of the application user creating the entry
    - +
    makerDateTimeFrom
    optional, Get entries created on or after this
    Example: 2013-04-10 08:00:00
    - +
    makerDateTimeTo
    optional, Get entries created on or before this
    Example: 2013-05-10 08:00:00
    - +
    officeId
    optional, The id value of the office/branch associated with the entry (if there is one)
    - +
    groupId
    optional, The id value of the group associated with the entry (if there is one). A group is a general idea and may be a Center, a Group, a Communal Bank or other.
    - +
    clientId
    optional, The id value of the client associated with the entry (if there is one)
    - +
    loanId
    optional, The id value of the loan associated with the entry (if there is one)
    - +
    savingsAccountId
    optional, The id value of the savings account associated with the entry (if there is one)
    - +
    includeJson
    optional, Values are true, false. Default is false.
    - +

    Example Requests:

    makercheckers

    @@ -15566,7 +15572,7 @@ Content-Type: application/json { "auditId": 1 } - +  
    @@ -15583,7 +15589,7 @@ Content-Type: application/json { "auditId": 1 }
    - +  
    @@ -15591,14 +15597,14 @@ Content-Type: application/json

    MIFOSX-BATCH JOBS

    Batch jobs (also known as cron jobs on Unix-based systems) are a series of back-end jobs executed on a computer at a particular time defined in job's cron expression.

    - +

    At any point, you can view the list of batch jobs scheduled to run along with other details specific to each job. Manually you can execute the jobs at any point of time.

    The scheduler status can be either "Active" or "Standby". If the scheduler status is Active, it indicates that all batch jobs are running/ will run as per the specified schedule.If the scheduler status is Standby, it will ensure all scheduled batch runs are suspended.

    - +  
    @@ -15693,7 +15699,7 @@ GET https://DomainName/api/v1/jobs
    - +  
    @@ -15727,7 +15733,7 @@ https://localhost:8443/mifosng-provider/api/v1/jobs/5
    - +  
    @@ -15741,7 +15747,7 @@ PUT https://DomainName/api/v1/jobs/{jobId} PUT jobs/1 -Content-Type: application/json +Content-Type: application/json { "displayName":"Update loan Summary", "cronExpression":"0 0 22 1/1 * ? *", @@ -15749,7 +15755,7 @@ Content-Type: application/json }
    - +  
    @@ -15766,7 +15772,7 @@ POST jobs/1?command=executeJob
    - +  
    @@ -15844,7 +15850,7 @@ GET https://DomainName/api/v1/jobs/{jobid}/runhistory?offset=0&limit=200
    - +  
    @@ -15866,7 +15872,7 @@ https://localhost:8443/mifosng-provider/api/v1/scheduler
    - +  
    @@ -15883,7 +15889,7 @@ POST scheduler?command=start
    - +  
    @@ -15907,7 +15913,7 @@ POST scheduler?command=stop

    Funds

    - +  
    @@ -15920,16 +15926,16 @@ POST https://DomainName/api/v1/funds POST funds -Content-Type: application/json -Request Body: -{ +Content-Type: application/json +Request Body: +{ "name": "EU Agri Fund" } -{ - "resourceId": 1 -} +{ + "resourceId": 1 +}
    @@ -15970,9 +15976,9 @@ GET https://DomainName/api/v1/funds GET https://DomainName/api/v1/funds/{fundId}
    -{ - "id": 1, - "name": "EU Agri Fund" +{ + "id": 1, + "name": "EU Agri Fund" } @@ -15990,10 +15996,10 @@ PUT https://DomainName/api/v1/funds/{fundId} PUT funds/1 -Content-Type: application/json -Request Body: -{ - "name": "EU Agri Fund (2010-2020)" +Content-Type: application/json +Request Body: +{ + "name": "EU Agri Fund (2010-2020)" } @@ -16042,14 +16048,14 @@ Request Body: mobileNo - Mobile number of an Employee. + Mobile number of an Employee. isLoanOfficer - Indicates whether the employee account is to be created as Loan Officer. If isLoanOfficer=true, then the employee is Loan Officer. If isLoanOfficer=false, then the employee is + Indicates whether the employee account is to be created as Loan Officer. If isLoanOfficer=true, then the employee is Loan Officer. If isLoanOfficer=false, then the employee is not Loan Officer. @@ -16092,9 +16098,9 @@ Request Body: POST https://DomainName/api/v1/staff -POST staff -Content-Type: application/json -Request Body: +POST staff +Content-Type: application/json +Request Body: { "officeId": 1, "firstname": "John", @@ -16217,9 +16223,9 @@ PUT https://DomainName/api/v1/staff/{staffId} PUT staff/1 -Content-Type: application/json -Request Body: -{ +Content-Type: application/json +Request Body: +{ "isLoanOfficer": "false", "externalId": "17Hbb" } @@ -16306,24 +16312,24 @@ Request Body: minCap - - + + Optional: Can be used when a '% of Amount' value is used for chargeCalculationType.

    Used to enforce a minimum charge amount in cases where the calculated amount is less than the minimum amount provided.

    e.g. A 2% fee with a minimum cap of 500:
    In case of a 5000 loan, the 2% is 100, and therefore automatically 500 is used as the value of the charge. -

    +

    - + maxCap - + Optional: Can be used when a '% of Amount' value is used for chargeCalculationType.

    Used to enforce a maximum charge amount in cases where the calculated amount is greater than the maximum amount provided.

    e.g. A 2% fee, with a maximum of 2000.:
    In case of a 150000 loan, the 2% adds up to 3000 charge, and therefore the maximum cap of 2000 will be used. -

    +

    @@ -16350,13 +16356,13 @@ Request Body: 1=Account Transfer - + feeOnMonthDay Used along with monthDayFormat to indicate the recurring charge due date starting on a given day of the month and follow specified feeInterval. e.g. fee due date starting on 10 May with feeInterval of two (2) months then a recurring fee on 10th of every two months is applied to savings account. monthDayFormat indicates day and month formatting used e.g. "dd MMM" for 10 May
    - This field is mandatory if chargeTimeType is of type Monthly Fee + This field is mandatory if chargeTimeType is of type Monthly Fee @@ -16372,7 +16378,7 @@ Request Body: This field is Optional Used to indicate the recurring(days,weeks,months and Years) charge due date starting on system calculated date for overdue penalty.
    - + @@ -16631,7 +16637,7 @@ POST https://DomainName/api/v1/charges
    POST charges -Content-Type: application/json +Content-Type: application/json Request Body: { "name": "Loan service fee", @@ -16652,7 +16658,7 @@ Request Body: POST charges -Content-Type: application/json +Content-Type: application/json Request Body: { "locale": "en", @@ -16677,7 +16683,7 @@ Request Body: POST charges -Content-Type: application/json +Content-Type: application/json Request Body: { "locale": "en", @@ -16699,7 +16705,7 @@ Request Body: POST charges -Content-Type: application/json +Content-Type: application/json Request Body: { "locale": "en", @@ -16723,7 +16729,7 @@ Request Body: POST charges -Content-Type: application/json +Content-Type: application/json Request Body: { "chargeAppliesTo":1, @@ -16930,11 +16936,11 @@ GET https://DomainName/api/v1/charges/{chargeId} PUT https://DomainName/api/v1/charges/{chargeId} -PUT charges/1 -Content-Type: application/json -Request Body: -{ - "name": "Loan service fee(changed)" +PUT charges/1 +Content-Type: application/json +Request Body: +{ + "name": "Loan service fee(changed)" } @@ -16977,16 +16983,16 @@ Content-Type: application/json working day. The branch office users might not understand enough of accounting to figure out which account needs to get credited and which account needs to be debited to represent this transaction.

    -

    Enter accounting rules, an abstraction on top of manual Journal entires for enabling +

    Enter accounting rules, an abstraction on top of manual Journal entires for enabling simpler data entry. - An accounting rule can define any of the following abstractions + An accounting rule can define any of the following abstractions