NAV Navigation
cURL HTTP JavaScript Node.js Ruby Python Java Go

Welcome

This documentation was last updated on Mon Aug 3 12:55:40 UTC 2020 and covers Mambu Version v9.54.0

Welcome to the Mambu API 2.0 (Beta) documentation. Here you can learn everything you need to know about our API and how to interact with Mambu!

We have language bindings in cURL, HTTP, JavaScript, Node.js, Ruby, Python, Java, and Go! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the blue tabs at the top right.

About Mambu API 2.0

Scroll down for code samples, example requests, and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

For more information about API 2.0 (beta) vs. API 1.0, please see: our User Guide.

HTTP Verbs

In Mambu API 2.0, standard HTTP verbs are used to indicate the intent and method of an API request.

Verb Function
GET To retrieve a resource or a collection of resources
POST To create a resources
PATCH To modify an existing resources
PUT To replace an existing resource
DELETE To delete a resource

Base URL

The base URL for requests to the API is found below:

Authentication

Mambu requires Basic Authentication for authorizing all API calls. A username and password is specified with each request and is verified on the server to prevent unauthorized access. To ensure the username and password cannot be intercepted, all requests must use HTTPS.

Versioning

Code samples

# You can also use wget
curl -X {HTTP Verb} https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://YOUR_TENANT_NAME.mambu.com/api/Insert-Resource-URI-here HTTP/1.1
Host: YOUR_TENANT_NAME.mambu.com

Accept: application/vnd.mambu.v2+json
var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}',
  method: '{HTTP Verb}',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const request = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}',
{
  method: '{HTTP Verb}',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.{HTTP Verb} 'https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.{HTTP Verb}('https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty(“Accept”, “application/vnd.mambu.v2+json”);
con.setRequestMethod("{HTTP Verb}");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("{HTTP Verb}", "https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Mambu API 2.0 features a new versioning system to assist with backwards compatibility. Contract changes will result in a new version of each affected resource becoming available without the old version immediately becoming obsolete.

Versioning is supported in API requests via the Accept: header.

Template: application/vnd.mambu.{version}+json

To retrieve a specific version of an entity, fill a value into the template above. The highest currently supported version is v2.

Idempotency

Code samples

# You can also use wget
curl -X POST https://YOUR_TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: 01234567-9abc-def0-1234-56789abcdef0'

POST https://YOUR_TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions HTTP/1.1
Host: YOUR_TENANT_NAME.mambu.com
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: 01234567-9abc-def0-1234-56789abcdef0

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'01234567-9abc-def0-1234-56789abcdef0'

};

$.ajax({
  url: 'https://YOUR_TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const request = require('node-fetch');
const inputBody = '{
  "migrationEventKey": "string",
  "transactionDetails": {
    "encodedKey": "string",
    "transactionChannelKey": "string",
    "transactionChannelId": "string"
  },
  "notes": "string",
  "affectedAmounts": {
    "feesAmount": 0,
    "overdraftInterestAmount": 0,
    "overdraftFeesAmount": 0,
    "fractionAmount": 0,
    "overdraftAmount": 0,
    "interestAmount": 0,
    "fundsAmount": 0
  },
  "cardTransaction": {
    "externalReferenceId": "string",
    "advice": false,
    "externalAuthorizationReferenceId": "string",
    "cardAcceptor": {
      "zip": "string",
      "country": "string",
      "city": "string",
      "name": "string",
      "state": "string",
      "mcc": 0
    },
    "userTransactionTime": "string",
    "currencyCode": "string",
    "transactionChannelId": "string"
  },
  "taxes": {
    "taxRate": 0
  },
  "tillKey": "string",
  "type": "IMPORT",
  "balances": {
    "totalBalance": 0
  },
  "terms": {
    "interestSettings": {
      "interestRate": 0
    },
    "overdraftSettings": {
      "overdraftLimit": 0
    },
    "overdraftInterestSettings": {
      "interestRate": 0,
      "indexInterestRate": 0
    }
  },
  "reversalTransactionKey": "string",
  "id": "string",
  "originalTransactionKey": "string",
  "amount": 0,
  "linkedDepositTransactionKey": "string",
  "entryDate": "2016-09-06T13:37:50+03:00",
  "externalId": "string",
  "userKey": "string",
  "parentAccountKey": "string",
  "linkedLoanTransactionKey": "string",
  "productTypeKey": "string",
  "currencyCode": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'01234567-9abc-def0-1234-56789abcdef0'

};

fetch('https://YOUR_TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => '01234567-9abc-def0-1234-56789abcdef0'
}

result = RestClient.post 'https://YOUR_TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': '01234567-9abc-def0-1234-56789abcdef0'
}

r = requests.post('https://YOUR_TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://YOUR_TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
String idempotentKey = UUID.randomUUID().toString();
con.setRequestProperty(“Idempotency-Key”, idempotentKey);
con.setRequestProperty(“Accept”, “application/vnd.mambu.v2+json”);
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"01234567-9abc-def0-1234-56789abcdef0"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://YOUR_TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Following REST design principles, our API is designed to be robust in the event of failure. When working with financial transactions, it is especially important that interruptions in communication do not result in accidental data loss or duplication. If a user sends a request but never receives a response, they should be able to safely retry the request without fear of accidentally performing the action twice. In other words, the system should be designed so that a request will perform the desired action "exactly once", no matter how often it is repeated. This concept is called Idempotence.

Example Situations

Client Responsibilities

Support for idempotent requests is an integral part of our API and does not require any further set-up. Clients can choose whether to use Mambu in an idempotent manner or not on a request by request basis. When making an idempotent request, clients should keep the following requirements in mind.

Idempotency keys must

We recommend the use of a UUID Generator to ensure that all keys are valid V4 UUIDs.

Retry mechanisms must

Pagination

Code samples

# You can also use wget
curl -X GET https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://YOUR_TENANT_NAME.mambu.com/api/Insert-Resource-URI-here?offset=10&limit=10&paginationDetails=ON HTTP/1.1
Host: YOUR_TENANT_NAME.mambu.com

Accept: application/vnd.mambu.v2+json
var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON',
  method: '{HTTP Verb}',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const request = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}'?offset=10&limit=10&paginationDetails=ON,
{
  method: '{HTTP Verb}',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.{HTTP Verb} 'https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.{HTTP Verb}('https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty(“Accept”, “application/vnd.mambu.v2+json”);
con.setRequestMethod("{HTTP Verb}");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("{HTTP Verb}", "https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Response headers

(...) content-type: application/vnd.mambu.v2+json  date: Mon, 03 Sep 2018 10:56:15 GMT  items-limit: 10  items-offset: 10  items-total: 35  (...)

Mambu API 2.0 has customizable pagination capabilities, however this functionality is deactivated by default and must be specified in each request.

In order to view pagination details, append ?paginationDetails=ON to the end of the resource URI in your request. The pagination details (including total number of records) will be returned as headers in the response.

To further customize the response, the offset and limit parameters can be adjusted from their default values.

limit

The default limit for responses is 50. A value of up to 1,000 can be specified with limit.

offset

offset determines how many records will be skipped before being included in the returned results. The default offset value is 0.

Detail Level

Code samples

# You can also use wget
curl -X GET https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://YOUR_TENANT_NAME.mambu.com/api/Insert-Resource-URI-here?detailsLevel=FULL HTTP/1.1
Host: YOUR_TENANT_NAME.mambu.com

Accept: application/vnd.mambu.v2+json
var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL',
  method: '{HTTP Verb}',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const request = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL',
{
  method: '{HTTP Verb}',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.{HTTP Verb} 'https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.{HTTP Verb}('https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty(“Accept”, “application/vnd.mambu.v2+json”);
con.setRequestMethod("{HTTP Verb}");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("{HTTP Verb}", "https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Mambu API 2.0 supports two detail levels for responses:

To view a higher level of detail, append ?detailsLevel=FULL to the end of the resource URI in your request.

Using the API

Requests

Code samples

# You can also use wget
curl -X {HTTP Verb} https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://YOUR_TENANT_NAME.mambu.com/api/Insert-Resource-URI-here HTTP/1.1
Host: YOUR_TENANT_NAME.mambu.com

Accept: application/vnd.mambu.v2+json
var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}',
  method: '{HTTP Verb}',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const request = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}',
{
  method: '{HTTP Verb}',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.{HTTP Verb} 'https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.{HTTP Verb}('https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty(“Accept”, “application/vnd.mambu.v2+json”);
con.setRequestMethod("{HTTP Verb}");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("{HTTP Verb}", "https://YOUR_TENANT_NAME.mambu.com/api/{Insert resource URI here}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Also referred to as "calls", requests to the Mambu API identify who the requester is and exactly what information they wish to retrieve or which action they wish to perform.

To put together an API Request you will need to combine:

Responses

Error Response

{
  "errorCode":"4",
  "errorSource":"Property scheduleSettings.repaymentInstallments may not be null",
  "errorReason":"INVALID_PARAMETERS"
}

Single Resource - JSON object

{
  "field": "value"
}

Collection of Resources - JSON array

[
  {
    "field": "value"
  },
  {
    "field": "value"
  }
]

The response to a request will always be in JSON format and will contain either:

Field Type Availability Content
errorCode number Always present A unique error code. For a full list, please see Mambu Response Codes.
errorSource string Sometimes present A human-readable message capturing unsatisfied constraints.
errorReason string Always present A human-readable message stating the general category of the failure.

or

Generate an SDK

You can also generate a SDK Client for each resource in 50+ programming languages. To do so:

  1. Visit your instance's Swagger documentation page at https://{yourtenantname}.mambu.com/apidocs or visit the page for our demo tenant.

  2. Choose a resource from the drop-down menu in the upper right-hand corner.

  3. Scroll down to the "SDK Client" section at the bottom of the page.

  4. Choose from the available programming languages via the drop-down menu at the left.

  5. Click Generate SDK.

Using Custom Fields

Structure

Standard JSON structure for custom fields

{
  ...
  "_customFieldSet": {
    "customField1": "value",
    "customField2": "other value",
    "awesomeCustomField": "awesome value"
  }
  ...
}

Most Mambu resources (e.g., accounts, clients) can be extended with custom fields. These can be managed by your Mambu administrators. For more details please see our User Guide.

When working with API 2.0, custom fields are represented at the end of the JSON structure and are ALWAYS nested under their corresponding custom field set. Custom field sets are easily recognizable, since their names must begin with an underscore _.

Example JSON body showing a custom field set with custom fields nested below

{
  "id": "ABC001",
  "loanName": "Mortgage Loan",
  "loanState": "PARTIAL_APPLICATION",
  "_loanPerformanceScore": {    //custom field set
    "amountScore": "10",       //custom fields nested under the set
    "timeScore": "5"
  }
}

Example

If we have created a custom field set called _loanPerformanceScore containing custom fields called amountScore and timeScore, these would be represented in JSON as can be seen to the right.

PATCH operations

In API 2.0, custom fields are treated as regular JSON citizens. They can be patched the same way as native fields, except that the custom field set must always be specified in the operation path.

The denominator

In Mambu, custom fields are always nested under a custom field set. The type of custom field set dictates how custom fields must be handled in PATCH operations:

Standard - For this first category, all PATCH operations are treated similarly to native fields, except for adding new values, where the syntax differs slightly.

Grouped - Fields in this category can be instanced multiple times on the same record. Each instance will be considered an entry in a list, thus PATCHing fields in a grouped custom field set is the same as working with lists under the RFC6902 standard.

Standard custom field sets

Standard custom field set examples:

  • Using the add operation
[
  {
    "op": "add",
    "path": "/_OtherDetails",
    "value": {
      "Age": "48"
    }
  }
]
  • Using the replace operation
[
  {
    "op": "replace",
    "path": "/_OtherDetails/Age",
    "value": "51"
  }
]
  • Using the remove operation
[
  {
    "op": "remove",
    "path": "/_OtherDetails/Age"
  }
]

Custom fields created under a Standard custom field set are handled the same way across all operations.

For the following examples, let’s assume we want to capture the client’s age to be used for various scorings when applying for credits or other products. To set this up in Mambu we would first create a custom field set (in this example called "Other Details") and then create a custom field for "Age".

Adding data

Let’s assume that we want to add the age for a customer. The add operation must be used, as seen to the right.

Changing data

Let’s assume that we want to change the age for a customer. The replace operation must be used, as seen to the right.

Removing data

Let’s assume that we want to remove the age for a customer. The remove operation must be used, as seen to the right.










Grouped custom field sets

Grouped custom field set examples

Using the Add operation

[
  {
    "op": "add",
    "path": "/_Assets",
    "value": [
      {
        "ASSETYPE": "Land",
        "ASSETAGE": "10",
        "ASSETVALUE": "965000"
      },
      {
        "ASSETYPE": "Car",
        "ASSETAGE": "2",
        "ASSETVALUE": "25000"
      }
    ]
  }
]

For the following examples, let’s assume we want to capture the client assets that are to be used as guarantees for loans. To set this up in Mambu we would first create a custom field set (in this example called "Assets") and then create three fields, each capturing a different aspect of the asset:

Adding data

Let’s assume we want to add two assets as guarantees: a piece of land and a car. We would use the Add operation as seen to the right.







Changing data

Using the Replace operation

[
  {
    "op": "replace",
    "path": "/_Assets/1/ASSETAGE",
    "value": "2"
  }
  {
    "op": "replace",
    "path": "/_Assets/1/ASSETVALUE",
    "value": "35000"
  }
]

Let’s assume that we want to change the age or a recorded asset. To do so, we must use the Replace operation. Unlike with standard custom field sets however, the path must contain the index, which is how we state which asset we want to change.

Let’s assume I want to change the car’s age and value. Knowing that this was recorded as the second asset, and its index is 1, the API payload can be seen to the right.


Removing data

Using the Remove operation examples

  • Remove data from a single custom field (eg. remove the age of an asset, such as land, because it’s irrelevant).
[
  {
    "op": "remove",
    "path": "/_Assets/0/ASSETAGE"
  }
]
  • Remove an entire entry (eg. remove the entire asset such as the car)
[
  {
    "op": "remove",
    "path": "/_Assets/1"
  }
]
  • Remove all entries (eg. remove all the recorded assets)
[
  {
    "op": "remove",
    "path": "/_Assets"
  }
]

Removing grouped custom field data works with the Remove operation. This is largely the same as with standard custom fields sets, with one exception: here the path must contain the index, to be sure the desired record is being indicated.

Searching by Custom Fields

  • Search for entries where the given custom field has the value FALSE
{
  "filterCriteria": [
    {
      "field": "_marketing_opt_in.investor_newsletter",
      "operator": "EQUALS",
      "value": "FALSE"
    }
  ]
}
  • Search for entries where the given custom field has one of the given values
{
  "filterCriteria": [
    {
      "field": "_group_details.industry",
      "operator": "IN",
      "values": [
        "agriculture",
        "arboriculture"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "id",
    "order": "ASC"
  }
}

For any endpoint offering search functionality by POST request custom fields must be provided nested inside their repesctive custom field set using dot notation in the form _custom_field_set_ID.custom_field_ID. You can see an example of the syntax to the right.

Entities offering this kind of search functionality include; Clients, Groups, Loan Transactions and Deposit Transactions.

Apikeys

Management of apikeys.

rotateKey

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/apikey/rotation \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'secretkey: string'

POST https://localhost:8889/api/apikey/rotation HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
secretkey: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'secretkey':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/apikey/rotation',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "apiKey": "string",
  "expirationTime": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'secretkey':'string'

};

fetch('https://localhost:8889/api/apikey/rotation',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'secretkey' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/apikey/rotation',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'secretkey': 'string'
}

r = requests.post('https://localhost:8889/api/apikey/rotation', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/apikey/rotation");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "secretkey": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/apikey/rotation", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /apikey/rotation

Allows rotation of an existing apikey. The rotation operation invalidates the existing apikey and the secretkey used and returns a new apikey together with the new secretkey

Body parameter

{
  "apiKey": "string",
  "expirationTime": 0
}

Parameters

Name Type Description In Required
secretkey string Secret key used to authenticate to this endpoint in order to perform a rotate key operation header true
body ApiKeyRotation Represents the action of rotating an existing apikey, by providing the apikey to be rotated and the ttl (time to live) of the newly created apikey body false

Example responses

200 Response

{
  "apiKey": "string",
  "secretKey": "string"
}

Responses

Status Meaning Description Schema
200 OK Api key rotated successfully. ApiKeyRotationResult
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Application

Allows you to retrieve application information.

The application may have associated information such as data access state.

The data access state generally changes during scheduled maintenance or while the system is being updated.

getApplicationStatus

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/application/status \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/application/status HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/application/status',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/application/status',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/application/status',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/application/status', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/application/status");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/application/status", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /application/status

Allows you to retrieve the state of application data access

Example responses

200 Response

{
  "dataAccessState": "READ_ONLY_STATE"
}

Responses

Status Meaning Description Schema
200 OK Application status retrieved ApplicationStatus
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Branches

Allows you to retrieve branches which are being used by an organization.

getById

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/branches/{branchId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/branches/{branchId} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/branches/{branchId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/branches/{branchId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/branches/{branchId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/branches/{branchId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/branches/{branchId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/branches/{branchId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /branches/{branchId}

Allows retrieval of a single the branch via id or encoded key

Parameters

Name Type Description In Required
branchId string The id or or encoded key of a branch path true
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "_Branch_Organization_Branches": {
    "Clients_Branches": "string",
    "Organization_Staff_Branches": "string"
  },
  "_Province_Branches": {
    "Outside_of_province_Branches": "TRUE",
    "Province_Branches": "Catamarca"
  },
  "addresses": [
    {
      "buildingNumber": "string",
      "city": "string",
      "countryCode": "st",
      "postalCode": "string",
      "street": "string"
    }
  ],
  "branchHolidays": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "date": "1987-04-26",
      "encodedKey": "string",
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "notes": "string",
  "phoneNumber": "string",
  "state": "ACTIVE"
}

Responses

Status Meaning Description Schema
200 OK Branch retrieved Branch
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Branch not found ErrorResponse

getAll

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/branches \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/branches HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/branches',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/branches',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/branches',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/branches', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/branches");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/branches", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /branches

Allows retrieval of branches using various query parameters

Parameters

Name Type Description In Required
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query false
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query false
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query false
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false
sortBy string The criteria based on which the records will be sorted. Expected format is , eg sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: id,name, creationDate, lastModifiedDate
Default sorting is done by creationDate:DESC
query false

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "_Branch_Organization_Branches": {
      "Clients_Branches": "string",
      "Organization_Staff_Branches": "string"
    },
    "_Province_Branches": {
      "Outside_of_province_Branches": "TRUE",
      "Province_Branches": "Catamarca"
    },
    "addresses": [
      {
        "buildingNumber": "string",
        "city": "string",
        "countryCode": "st",
        "postalCode": "string",
        "street": "string"
      }
    ],
    "branchHolidays": [
      {
        "creationDate": "2016-09-06T13:37:50+03:00",
        "date": "1987-04-26",
        "encodedKey": "string",
        "isAnnuallyRecurring": true,
        "name": "string"
      }
    ],
    "creationDate": "2016-09-06T13:37:50+03:00",
    "emailAddress": "string",
    "encodedKey": "string",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "name": "string",
    "notes": "string",
    "phoneNumber": "string",
    "state": "ACTIVE"
  }
]

Responses

Status Meaning Description Schema
200 OK Branches list retrieved Inline
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Required Restrictions
anonymous [Branch] [Branch Date Transfer Object] false none
» _Branch_Organization_Branches object none false none
»» Clients_Branches string none false none
»» Organization_Staff_Branches string(number) none false none
» _Province_Branches object none false none
»» Outside_of_province_Branches string none false none
»» Province_Branches string none false none
» addresses [Address] list of branch addresses false none
»» buildingNumber string none false none
»» city string none false none
»» countryCode string Two characters as defined by ISO 3166. true none
»» postalCode string none false none
»» street string none false none
» branchHolidays [Holiday] list of branch holidays false none
»» creationDate string(date-time) holiday creation date false none
»» date string(date) holiday date false none
»» encodedKey string The encoded key of the entity, generated, globally unique false read-only
»» isAnnuallyRecurring boolean if is annually recurring false none
»» name string holiday name false none
» creationDate string(date-time) creation date of the branch false none
» emailAddress string branch email address false none
» encodedKey string The encoded key of the entity, generated, globally unique false read-only
» id string branch ID, unique false none
» lastModifiedDate string(date-time) last date when the branch was modified false none
» name string branch name false none
» notes string notes about this branch false none
» phoneNumber string branch phone number, as a string false none
» state string branch state false none

Enumerated Values

Property Value
Outside_of_province_Branches TRUE
Outside_of_province_Branches FALSE
Province_Branches Catamarca
Province_Branches Chaco
Province_Branches Jujuy
state ACTIVE
state INACTIVE

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Cards

Allows CRUD operations on card references and their associated items.

increaseAuthorizationHold

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "amount": 0,
  "currencyCode": "string",
  "externalReferenceId": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase

Increases the amount of an authorization hold.

Body parameter

{
  "amount": 0,
  "currencyCode": "string",
  "externalReferenceId": "string"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
cardReferenceToken string The token used to externally identify the card. path true
authorizationHoldExternalReferenceId string The ID used to reference the authorization hold. path true
body AuthorizationHoldAmountAdjustmentRequest The request containing the necessary fields to increase the amount of an authorization hold. body true

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The authorization hold was successfully increased. None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Card or authorization hold not found. ErrorResponse

getAuthorizationHoldById

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}

Allows retrieval of a single authorization hold via id or encoded key

Parameters

Name Type Description In Required
cardReferenceToken string The token used to externally identify the card. path true
authorizationHoldExternalReferenceId string The ID used to reference the authorization hold. path true

Example responses

200 Response

{
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "cardToken": "string",
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "encodedKey": "string",
  "exchangeRate": 0,
  "externalReferenceId": "string",
  "originalAmount": 0,
  "originalCurrency": "string",
  "status": "PENDING",
  "userTransactionTime": "string"
}

Responses

Status Meaning Description Schema
200 OK Authorization hold retrieved. GetAuthorizationHold
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Card not found. ErrorResponse

reverseAuthorizationHold

Code samples

# You can also use wget
curl -X DELETE https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete 'https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}

Reverses an authorization hold.

Parameters

Name Type Description In Required
cardReferenceToken string The token used to externally identify the card. path true
authorizationHoldExternalReferenceId string The ID used to reference the authorization hold. path true

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The authorization hold was successfully reversed. None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Card or authorization hold not found. ErrorResponse

reverseCardTransaction

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "amount": 0,
  "currencyCode": "string",
  "externalReferenceId": "string",
  "transactionChannelId": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease

Reverses a card transaction.

Body parameter

{
  "amount": 0,
  "currencyCode": "string",
  "externalReferenceId": "string",
  "transactionChannelId": "string"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
cardReferenceToken string The token used to externally identify the card. path true
cardTransactionExternalReferenceId string The external reference of a card transaction used to identify the card transaction. path true
body CardTransactionReversal The card transaction to be reversed. body true

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The card reversal was successfully completed None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Card not found. ErrorResponse

createCardTransaction

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "currencyCode": "string",
  "externalAuthorizationReferenceId": "string",
  "externalReferenceId": "string",
  "transactionChannelId": "string",
  "userTransactionTime": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/cards/{cardReferenceToken}/financialtransactions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /cards/{cardReferenceToken}/financialtransactions

Creates a financial transaction corresponding to a given card.

Body parameter

{
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "currencyCode": "string",
  "externalAuthorizationReferenceId": "string",
  "externalReferenceId": "string",
  "transactionChannelId": "string",
  "userTransactionTime": "string"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
cardReferenceToken string The token used to externally identify the card. path true
body CardTransactionInput The financial transaction to be created. body true

Example responses

201 Response

{
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "cardToken": "string",
  "currencyCode": "string",
  "encodedKey": "string",
  "externalAuthorizationReferenceId": "string",
  "externalReferenceId": "string",
  "linkedTransaction": {
    "linkedTransactionKey": "string",
    "linkedTransactionType": "LOAN"
  },
  "transactionChannelId": "string",
  "userTransactionTime": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The financial transaction was successfully created. CardTransactionOutput
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Card not found. ErrorResponse

decreaseAuthorizationHold

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "amount": 0,
  "currencyCode": "string",
  "externalReferenceId": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease

Decreases the amount of an authorization hold. If the amount is greater or equal to the authorization hold amount, then the authorization hold is reversed.

Body parameter

{
  "amount": 0,
  "currencyCode": "string",
  "externalReferenceId": "string"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
cardReferenceToken string The token used to externally identify the card. path true
authorizationHoldExternalReferenceId string The ID used to reference the authorization hold. path true
body AuthorizationHoldAmountAdjustmentRequest The request containing the necessary fields to decrease the amount of an authorization hold. body true

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The authorization hold was successfully decreased. None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Card or authorization hold not found. ErrorResponse

createAuthorizationHold

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "exchangeRate": 0,
  "externalReferenceId": "string",
  "originalAmount": 0,
  "originalCurrency": "string",
  "userTransactionTime": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/cards/{cardReferenceToken}/authorizationholds", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /cards/{cardReferenceToken}/authorizationholds

Creates an authorization hold corresponding to a given card.

Body parameter

{
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "exchangeRate": 0,
  "externalReferenceId": "string",
  "originalAmount": 0,
  "originalCurrency": "string",
  "userTransactionTime": "string"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
cardReferenceToken string The token used to externally identify the card. path true
body AuthorizationHold The authorization hold to be created. body true

Example responses

201 Response

{
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "cardToken": "string",
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "exchangeRate": 0,
  "externalReferenceId": "string",
  "originalAmount": 0,
  "originalCurrency": "string",
  "status": "PENDING",
  "userTransactionTime": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The authorization hold was successfully created. AuthorizationHold
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Card not found. ErrorResponse

Centres

Allows retrieving centres which are being used by an organisation. A Centre is a common meeting area that credit officers and the individual and group clients go to.

getById

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/centres/{centreId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/centres/{centreId} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/centres/{centreId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/centres/{centreId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/centres/{centreId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/centres/{centreId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/centres/{centreId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/centres/{centreId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /centres/{centreId}

Allows retrieval of a single centre via id or encoded key

Parameters

Name Type Description In Required
centreId string The id or encoded key of the centre to be retrieved path true
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "addresses": [
    {
      "buildingNumber": "string",
      "city": "string",
      "countryCode": "st",
      "postalCode": "string",
      "street": "string"
    }
  ],
  "assignedBranchKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "meetingDay": "string",
  "name": "string",
  "notes": "string",
  "state": "ACTIVE"
}

Responses

Status Meaning Description Schema
200 OK Centre retrieved Centre
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Centre not found ErrorResponse

getAll

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/centres \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/centres HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/centres',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/centres',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/centres',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/centres', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/centres");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/centres", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /centres

Allows retrieval of centres using various query parameters

Parameters

Name Type Description In Required
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query false
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query false
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query false
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false
branchId string The branch id the centre belongs to query false
sortBy string The criteria based on which the records will be sorted. Expected format is , eg sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: id,name, creationDate, lastModifiedDate
Default sorting is done by creationDate:DESC
query false

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "addresses": [
      {
        "buildingNumber": "string",
        "city": "string",
        "countryCode": "st",
        "postalCode": "string",
        "street": "string"
      }
    ],
    "assignedBranchKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "meetingDay": "string",
    "name": "string",
    "notes": "string",
    "state": "ACTIVE"
  }
]

Responses

Status Meaning Description Schema
200 OK Centres list retrieved Inline
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Required Restrictions
anonymous [Centre] [A Centre is a common meeting area that credit officers and the individual and group clients go to. Each centre is assigned to a branch (a branch can have multiple centres) and might have a specific meeting day and location.] false none
» addresses [Address] The addresses of this centre false none
»» buildingNumber string none false none
»» city string none false none
»» countryCode string Two characters as defined by ISO 3166. true none
»» postalCode string none false none
»» street string none false none
» assignedBranchKey string Encoded key of the branch this centre is assigned to false none
» creationDate string(date-time) Date the centre was created false none
» encodedKey string The encoded key of the entity, generated, globally unique false read-only
» id string Id of the centre, unique, can be generated and customized false none
» lastModifiedDate string(date-time) The last time the centre was modified false none
» meetingDay string Day of the week when repayments are collected, influences repayments schedule, upon update all repayments are update to this day of the week false none
» name string Name of the centre false none
» notes string Extra notes about this centre false none
» state string The state of the centre false none

Enumerated Values

Property Value
state ACTIVE
state INACTIVE

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Clients

Allows you to retrieve, create, update or delete clients. Clients may have associated information such as their address, identification documents or custom fields.

getById

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/clients/{clientId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/clients/{clientId} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/clients/{clientId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/clients/{clientId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/clients/{clientId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/clients/{clientId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients/{clientId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/clients/{clientId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/{clientId}

Allows retrieval of a single client via id or encoded key

Parameters

Name Type Description In Required
clientId string The id or encoded key of the client to be retrieved path true
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "_Custom_Fields_Clients": {
    "Position_Clients": "string"
  },
  "_Family_Clients": {
    "Family_Members_Clients": "string",
    "Has_children_Clients": "TRUE"
  },
  "_Others_Clients": {
    "Location_Clients": "Catamarca",
    "Studies_Clients": "string"
  },
  "activationDate": "2016-09-06T13:37:50+03:00",
  "addresses": [
    {
      "buildingNumber": "string",
      "city": "string",
      "countryCode": "st",
      "postalCode": "string",
      "street": "string"
    }
  ],
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "groupLoanCycle": 0,
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "creationDate": "2016-09-06T13:37:50+03:00",
          "encodedKey": "string",
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "lastModifiedDate": "2016-09-06T13:37:50+03:00",
          "location": "string",
          "name": "string",
          "notes": "string",
          "ownerKey": "string",
          "ownerType": "CLIENT",
          "type": "string"
        }
      ],
      "clientKey": "string",
      "documentId": "string",
      "documentType": "string",
      "encodedKey": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastName": "string",
  "loanCycle": 0,
  "middleName": "string",
  "migrationEventKey": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "encodedKey": "string",
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "profilePictureKey": "string",
  "profileSignatureKey": "string",
  "state": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
200 OK Client retrieved Client
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found ErrorResponse

update

Code samples

# You can also use wget
curl -X PUT https://localhost:8889/api/clients/{clientId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT https://localhost:8889/api/clients/{clientId} HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/clients/{clientId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "_Custom_Fields_Clients": {
    "Position_Clients": "string"
  },
  "_Family_Clients": {
    "Family_Members_Clients": "string",
    "Has_children_Clients": "TRUE"
  },
  "_Others_Clients": {
    "Location_Clients": "Catamarca",
    "Studies_Clients": "string"
  },
  "addresses": [
    {
      "buildingNumber": "string",
      "city": "string",
      "countryCode": "st",
      "postalCode": "string",
      "street": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "emailAddress": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "location": "string",
          "name": "string",
          "notes": "string",
          "type": "string"
        }
      ],
      "documentId": "string",
      "documentType": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastName": "string",
  "middleName": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "state": "PENDING_APPROVAL"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/clients/{clientId}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put 'https://localhost:8889/api/clients/{clientId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('https://localhost:8889/api/clients/{clientId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients/{clientId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://localhost:8889/api/clients/{clientId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /clients/{clientId}

Update an existing client

Body parameter

{
  "_Custom_Fields_Clients": {
    "Position_Clients": "string"
  },
  "_Family_Clients": {
    "Family_Members_Clients": "string",
    "Has_children_Clients": "TRUE"
  },
  "_Others_Clients": {
    "Location_Clients": "Catamarca",
    "Studies_Clients": "string"
  },
  "addresses": [
    {
      "buildingNumber": "string",
      "city": "string",
      "countryCode": "st",
      "postalCode": "string",
      "street": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "emailAddress": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "location": "string",
          "name": "string",
          "notes": "string",
          "type": "string"
        }
      ],
      "documentId": "string",
      "documentType": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastName": "string",
  "middleName": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "state": "PENDING_APPROVAL"
}

Parameters

Name Type Description In Required
clientId string The id or encoded key of the client to be updated path true
body Client Client to be updated body true

Example responses

200 Response

{
  "_Custom_Fields_Clients": {
    "Position_Clients": "string"
  },
  "_Family_Clients": {
    "Family_Members_Clients": "string",
    "Has_children_Clients": "TRUE"
  },
  "_Others_Clients": {
    "Location_Clients": "Catamarca",
    "Studies_Clients": "string"
  },
  "activationDate": "2016-09-06T13:37:50+03:00",
  "addresses": [
    {
      "buildingNumber": "string",
      "city": "string",
      "countryCode": "st",
      "postalCode": "string",
      "street": "string"
    }
  ],
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "groupLoanCycle": 0,
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "creationDate": "2016-09-06T13:37:50+03:00",
          "encodedKey": "string",
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "lastModifiedDate": "2016-09-06T13:37:50+03:00",
          "location": "string",
          "name": "string",
          "notes": "string",
          "ownerKey": "string",
          "ownerType": "CLIENT",
          "type": "string"
        }
      ],
      "clientKey": "string",
      "documentId": "string",
      "documentType": "string",
      "encodedKey": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastName": "string",
  "loanCycle": 0,
  "middleName": "string",
  "migrationEventKey": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "encodedKey": "string",
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "profilePictureKey": "string",
  "profileSignatureKey": "string",
  "state": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
200 OK Client updated Client
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found ErrorResponse

delete

Code samples

# You can also use wget
curl -X DELETE https://localhost:8889/api/clients/{clientId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE https://localhost:8889/api/clients/{clientId} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/clients/{clientId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/clients/{clientId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete 'https://localhost:8889/api/clients/{clientId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('https://localhost:8889/api/clients/{clientId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients/{clientId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://localhost:8889/api/clients/{clientId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /clients/{clientId}

Delete a client

Parameters

Name Type Description In Required
clientId string The id or encoded key of the client to be deleted path true

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Client deleted None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found ErrorResponse

patch

Code samples

# You can also use wget
curl -X PATCH https://localhost:8889/api/clients/{clientId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH https://localhost:8889/api/clients/{clientId} HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/clients/{clientId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/clients/{clientId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch 'https://localhost:8889/api/clients/{clientId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('https://localhost:8889/api/clients/{clientId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients/{clientId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://localhost:8889/api/clients/{clientId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /clients/{clientId}

Partially update an existing client

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In Required
clientId string The id or encoded key of the client to be updated path true
body PatchOperationArray Patch operations to be applied to a resource body true

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Client updated None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found ErrorResponse

getAll

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/clients \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/clients HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/clients',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/clients',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/clients',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/clients', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/clients", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients

Allows retrieval of clients using various query parameters

Parameters

Name Type Description In Required
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query false
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query false
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query false
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false
firstName string The first name, personal name, given name or forename of the client query false
lastName string The last name, surname or family name of the client query false
idNumber string The id number of the client's identification document query false
branchId string The branch id/key to search for query false
centreId string The centre id/key to search for query false
creditOfficerUsername string The user name of the credit officer query false
state string The state of the client to search for query false
birthDate string(date) The birth date of the client to search for query false
sortBy string The criteria based on which the records will be sorted. Expected format is , eg sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: firstName, lastName, creationDate, lastModifiedDate
Default sorting is done by lastModifiedDate:DESC
query false

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL
state PENDING_APPROVAL
state INACTIVE
state ACTIVE
state EXITED
state BLACKLISTED
state REJECTED

Example responses

200 Response

[
  {
    "_Custom_Fields_Clients": {
      "Position_Clients": "string"
    },
    "_Family_Clients": {
      "Family_Members_Clients": "string",
      "Has_children_Clients": "TRUE"
    },
    "_Others_Clients": {
      "Location_Clients": "Catamarca",
      "Studies_Clients": "string"
    },
    "activationDate": "2016-09-06T13:37:50+03:00",
    "addresses": [
      {
        "buildingNumber": "string",
        "city": "string",
        "countryCode": "st",
        "postalCode": "string",
        "street": "string"
      }
    ],
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "birthDate": "1987-04-26",
    "clientRoleKey": "string",
    "closedDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "emailAddress": "string",
    "encodedKey": "string",
    "firstName": "string",
    "gender": "MALE",
    "groupKeys": [
      "string"
    ],
    "groupLoanCycle": 0,
    "homePhone": "string",
    "id": "string",
    "idDocuments": [
      {
        "attachments": [
          {
            "creationDate": "2016-09-06T13:37:50+03:00",
            "encodedKey": "string",
            "fileName": "string",
            "fileSize": 0,
            "id": 0,
            "lastModifiedDate": "2016-09-06T13:37:50+03:00",
            "location": "string",
            "name": "string",
            "notes": "string",
            "ownerKey": "string",
            "ownerType": "CLIENT",
            "type": "string"
          }
        ],
        "clientKey": "string",
        "documentId": "string",
        "documentType": "string",
        "encodedKey": "string",
        "identificationDocumentTemplateKey": "string",
        "indexInList": 0,
        "issuingAuthority": "string",
        "validUntil": "1987-04-26"
      }
    ],
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "lastName": "string",
    "loanCycle": 0,
    "middleName": "string",
    "migrationEventKey": "string",
    "mobilePhone": "string",
    "mobilePhone2": "string",
    "notes": "string",
    "portalSettings": {
      "encodedKey": "string",
      "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
      "portalState": "ENABLED"
    },
    "preferredLanguage": "ENGLISH",
    "profilePictureKey": "string",
    "profileSignatureKey": "string",
    "state": "PENDING_APPROVAL"
  }
]

Responses

Status Meaning Description Schema
200 OK Clients list retrieved Inline
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Required Restrictions
anonymous [Client] [A person that uses the services of the bank. Clients may have associated information such as their address, custom fields or identification documents] false none
» _Custom_Fields_Clients object none false none
»» Position_Clients string none false none
» _Family_Clients object none false none
»» Family_Members_Clients string(number) none false none
»» Has_children_Clients string none false none
» _Others_Clients object none false none
»» Location_Clients string none false none
»» Studies_Clients string none false none
» activationDate string(date-time) The date when client was set as active for the first time false read-only
» addresses [Address] The addresses associated with this client information like street, city etc. false none
»» buildingNumber string none false none
»» city string none false none
»» countryCode string Two characters as defined by ISO 3166. true none
»» postalCode string none false none
»» street string none false none
» approvedDate string(date-time) date when client was approved false read-only
» assignedBranchKey string Encoded key of the branch this client is assigned to false none
» assignedCentreKey string Encoded key of the centre this client is assigned to false none
» assignedUserKey string Encoded key of the user this client is assigned to false none
» birthDate string(date) The date when this client was born false none
» clientRoleKey string A role which describes the intended use of a client in the system false none
» closedDate string(date-time) date when client was closed false read-only
» creationDate string(date-time) The date this client was created false read-only
» emailAddress string The client's email address false none
» encodedKey string The encoded key of the client, auto generated, unique false read-only
» firstName string The first name, personal name, given name or forename of the client true none
» gender string Gender of the person, male or female false none
» groupKeys [string] The groups to which this client belongs false none
» groupLoanCycle integer(int32) Number of paid and closed (with 'obligations met') accounts for this client's group, when the closing operation is reverted, this is reduced false read-only
» homePhone string The client's home phone number false none
» id string The id of the client, can be generated and customized, unique false none
» idDocuments [IdentificationDocument] The identification documents of this person false none
»» attachments [Document] A list containing information about the attached files for this document false none
»»» creationDate string(date-time) The creation date of the document, stored as UTC false read-only
»»» encodedKey string The document encodedKey false read-only
»»» fileName string The original file name of the document false none
»»» fileSize integer(int64) The file size of the document false none
»»» id integer(int64) The document id true none
»»» lastModifiedDate string(date-time) The last modified date of the document, stored as UTC false read-only
»»» location string Location where the document can be found, eg /myfiles/mypicture.jpeg false none
»»» name string The name of the document true none
»»» notes string Detailed notes about the document false none
»»» ownerKey string Represents the holder of this document. If null, means nobody is the owner of this document false read-only
»»» ownerType string Determines the owner type of the document false read-only
»»» type string The extension of the document true none
»» clientKey string The encoded key of the client that owns this document false read-only
»» documentId string The id of the document true none
»» documentType string The type of the document, Passport, Id card Drivers license, etc. true none
»» encodedKey string The encoded key of the document, generated, unique false read-only
»» identificationDocumentTemplateKey string Encoded key of the template used for this document false none
»» indexInList integer(int32) This document's index in the list of documents false none
»» issuingAuthority string Authority that issued the document, eg. Police false none
»» validUntil string(date) Date when the validity of the document ends false none
» lastModifiedDate string(date-time) The last date this client was modified false read-only
» lastName string The last name, surname or family name of the client true none
» loanCycle integer(int32) Number of paid and closed (with 'obligations met') accounts for this client, when the closing operation is reverted, this is reduced false read-only
» middleName string The middle name of the client, if she/he has one false none
» migrationEventKey string The migration event encoded key associated with this client. false read-only
» mobilePhone string The client's mobile phone number false none
» mobilePhone2 string The client's second mobile phone number false none
» notes string Extra notes about this client false none
» portalSettings PortalSettings Portal settings for an individual client false none
»» encodedKey string The encoded key of the entity, generated, globally unique false read-only
»» lastLoggedInDate string(date-time) The last date the client logged in to the portal false none
»» portalState string State of the client's portal preferences false none
» preferredLanguage string The client's language of use in Mambu false none
» profilePictureKey string Encoded key of this clients profile picture false read-only
» profileSignatureKey string Encoded key of the users profile signature false read-only
» state string The state of a client shows his workflow status, if he is waiting approval or is rejected or blacklisted false none

Enumerated Values

Property Value
Has_children_Clients TRUE
Has_children_Clients FALSE
Location_Clients Catamarca
Location_Clients Chaco
Location_Clients Jujuy
gender MALE
gender FEMALE
ownerType CLIENT
ownerType GROUP
ownerType LOAN_PRODUCT
ownerType SAVINGS_PRODUCT
ownerType CENTRE
ownerType BRANCH
ownerType USER
ownerType LOAN_ACCOUNT
ownerType DEPOSIT_ACCOUNT
ownerType ID_DOCUMENT
ownerType LINE_OF_CREDIT
ownerType GL_JOURNAL_ENTRY
portalState ENABLED
portalState DISABLED
preferredLanguage ENGLISH
preferredLanguage PORTUGESE
preferredLanguage SPANISH
preferredLanguage RUSSIAN
preferredLanguage FRENCH
preferredLanguage GEORGIAN
preferredLanguage CHINESE
preferredLanguage INDONESIAN
preferredLanguage ROMANIAN
preferredLanguage BURMESE
preferredLanguage GERMAN
preferredLanguage PHRASE
state PENDING_APPROVAL
state INACTIVE
state ACTIVE
state EXITED
state BLACKLISTED
state REJECTED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/clients \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/clients HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/clients',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "_Custom_Fields_Clients": {
    "Position_Clients": "string"
  },
  "_Family_Clients": {
    "Family_Members_Clients": "string",
    "Has_children_Clients": "TRUE"
  },
  "_Others_Clients": {
    "Location_Clients": "Catamarca",
    "Studies_Clients": "string"
  },
  "addresses": [
    {
      "buildingNumber": "string",
      "city": "string",
      "countryCode": "st",
      "postalCode": "string",
      "street": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "emailAddress": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "location": "string",
          "name": "string",
          "notes": "string",
          "type": "string"
        }
      ],
      "documentId": "string",
      "documentType": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastName": "string",
  "middleName": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "state": "PENDING_APPROVAL"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/clients',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/clients',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/clients', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/clients", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /clients

Create a new client

Body parameter

{
  "_Custom_Fields_Clients": {
    "Position_Clients": "string"
  },
  "_Family_Clients": {
    "Family_Members_Clients": "string",
    "Has_children_Clients": "TRUE"
  },
  "_Others_Clients": {
    "Location_Clients": "Catamarca",
    "Studies_Clients": "string"
  },
  "addresses": [
    {
      "buildingNumber": "string",
      "city": "string",
      "countryCode": "st",
      "postalCode": "string",
      "street": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "emailAddress": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "location": "string",
          "name": "string",
          "notes": "string",
          "type": "string"
        }
      ],
      "documentId": "string",
      "documentType": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastName": "string",
  "middleName": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "state": "PENDING_APPROVAL"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
body Client Client to be created body true

Example responses

201 Response

{
  "_Custom_Fields_Clients": {
    "Position_Clients": "string"
  },
  "_Family_Clients": {
    "Family_Members_Clients": "string",
    "Has_children_Clients": "TRUE"
  },
  "_Others_Clients": {
    "Location_Clients": "Catamarca",
    "Studies_Clients": "string"
  },
  "activationDate": "2016-09-06T13:37:50+03:00",
  "addresses": [
    {
      "buildingNumber": "string",
      "city": "string",
      "countryCode": "st",
      "postalCode": "string",
      "street": "string"
    }
  ],
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "groupLoanCycle": 0,
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "creationDate": "2016-09-06T13:37:50+03:00",
          "encodedKey": "string",
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "lastModifiedDate": "2016-09-06T13:37:50+03:00",
          "location": "string",
          "name": "string",
          "notes": "string",
          "ownerKey": "string",
          "ownerType": "CLIENT",
          "type": "string"
        }
      ],
      "clientKey": "string",
      "documentId": "string",
      "documentType": "string",
      "encodedKey": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastName": "string",
  "loanCycle": 0,
  "middleName": "string",
  "migrationEventKey": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "encodedKey": "string",
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "profilePictureKey": "string",
  "profileSignatureKey": "string",
  "state": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Client created Client
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/clients:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST https://localhost:8889/api/clients:search HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/clients:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "filterCriteria": [
    {
      "field": "encodedKey",
      "operator": "EQUALS",
      "secondValue": "string",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "encodedKey",
    "order": "ASC"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/clients:search',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post 'https://localhost:8889/api/clients:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('https://localhost:8889/api/clients:search', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/clients:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /clients:search

Allows you to search clients by various criteria

Body parameter

{
  "filterCriteria": [
    {
      "field": "encodedKey",
      "operator": "EQUALS",
      "secondValue": "string",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "encodedKey",
    "order": "ASC"
  }
}

Parameters

Name Type Description In Required
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query false
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query false
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query false
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false
body ClientSearchCriteria Criteria to be used to search the clients body true

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "_Custom_Fields_Clients": {
      "Position_Clients": "string"
    },
    "_Family_Clients": {
      "Family_Members_Clients": "string",
      "Has_children_Clients": "TRUE"
    },
    "_Others_Clients": {
      "Location_Clients": "Catamarca",
      "Studies_Clients": "string"
    },
    "activationDate": "2016-09-06T13:37:50+03:00",
    "addresses": [
      {
        "buildingNumber": "string",
        "city": "string",
        "countryCode": "st",
        "postalCode": "string",
        "street": "string"
      }
    ],
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "birthDate": "1987-04-26",
    "clientRoleKey": "string",
    "closedDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "emailAddress": "string",
    "encodedKey": "string",
    "firstName": "string",
    "gender": "MALE",
    "groupKeys": [
      "string"
    ],
    "groupLoanCycle": 0,
    "homePhone": "string",
    "id": "string",
    "idDocuments": [
      {
        "attachments": [
          {
            "creationDate": "2016-09-06T13:37:50+03:00",
            "encodedKey": "string",
            "fileName": "string",
            "fileSize": 0,
            "id": 0,
            "lastModifiedDate": "2016-09-06T13:37:50+03:00",
            "location": "string",
            "name": "string",
            "notes": "string",
            "ownerKey": "string",
            "ownerType": "CLIENT",
            "type": "string"
          }
        ],
        "clientKey": "string",
        "documentId": "string",
        "documentType": "string",
        "encodedKey": "string",
        "identificationDocumentTemplateKey": "string",
        "indexInList": 0,
        "issuingAuthority": "string",
        "validUntil": "1987-04-26"
      }
    ],
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "lastName": "string",
    "loanCycle": 0,
    "middleName": "string",
    "migrationEventKey": "string",
    "mobilePhone": "string",
    "mobilePhone2": "string",
    "notes": "string",
    "portalSettings": {
      "encodedKey": "string",
      "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
      "portalState": "ENABLED"
    },
    "preferredLanguage": "ENGLISH",
    "profilePictureKey": "string",
    "profileSignatureKey": "string",
    "state": "PENDING_APPROVAL"
  }
]

Responses

Status Meaning Description Schema
200 OK Result of client search Inline
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Required Restrictions
anonymous [Client] [A person that uses the services of the bank. Clients may have associated information such as their address, custom fields or identification documents] false none
» _Custom_Fields_Clients object none false none
»» Position_Clients string none false none
» _Family_Clients object none false none
»» Family_Members_Clients string(number) none false none
»» Has_children_Clients string none false none
» _Others_Clients object none false none
»» Location_Clients string none false none
»» Studies_Clients string none false none
» activationDate string(date-time) The date when client was set as active for the first time false read-only
» addresses [Address] The addresses associated with this client information like street, city etc. false none
»» buildingNumber string none false none
»» city string none false none
»» countryCode string Two characters as defined by ISO 3166. true none
»» postalCode string none false none
»» street string none false none
» approvedDate string(date-time) date when client was approved false read-only
» assignedBranchKey string Encoded key of the branch this client is assigned to false none
» assignedCentreKey string Encoded key of the centre this client is assigned to false none
» assignedUserKey string Encoded key of the user this client is assigned to false none
» birthDate string(date) The date when this client was born false none
» clientRoleKey string A role which describes the intended use of a client in the system false none
» closedDate string(date-time) date when client was closed false read-only
» creationDate string(date-time) The date this client was created false read-only
» emailAddress string The client's email address false none
» encodedKey string The encoded key of the client, auto generated, unique false read-only
» firstName string The first name, personal name, given name or forename of the client true none
» gender string Gender of the person, male or female false none
» groupKeys [string] The groups to which this client belongs false none
» groupLoanCycle integer(int32) Number of paid and closed (with 'obligations met') accounts for this client's group, when the closing operation is reverted, this is reduced false read-only
» homePhone string The client's home phone number false none
» id string The id of the client, can be generated and customized, unique false none
» idDocuments [IdentificationDocument] The identification documents of this person false none
»» attachments [Document] A list containing information about the attached files for this document false none
»»» creationDate string(date-time) The creation date of the document, stored as UTC false read-only
»»» encodedKey string The document encodedKey false read-only
»»» fileName string The original file name of the document false none
»»» fileSize integer(int64) The file size of the document false none
»»» id integer(int64) The document id true none
»»» lastModifiedDate string(date-time) The last modified date of the document, stored as UTC false read-only
»»» location string Location where the document can be found, eg /myfiles/mypicture.jpeg false none
»»» name string The name of the document true none
»»» notes string Detailed notes about the document false none
»»» ownerKey string Represents the holder of this document. If null, means nobody is the owner of this document false read-only
»»» ownerType string Determines the owner type of the document false read-only
»»» type string The extension of the document true none
»» clientKey string The encoded key of the client that owns this document false read-only
»» documentId string The id of the document true none
»» documentType string The type of the document, Passport, Id card Drivers license, etc. true none
»» encodedKey string The encoded key of the document, generated, unique false read-only
»» identificationDocumentTemplateKey string Encoded key of the template used for this document false none
»» indexInList integer(int32) This document's index in the list of documents false none
»» issuingAuthority string Authority that issued the document, eg. Police false none
»» validUntil string(date) Date when the validity of the document ends false none
» lastModifiedDate string(date-time) The last date this client was modified false read-only
» lastName string The last name, surname or family name of the client true none
» loanCycle integer(int32) Number of paid and closed (with 'obligations met') accounts for this client, when the closing operation is reverted, this is reduced false read-only
» middleName string The middle name of the client, if she/he has one false none
» migrationEventKey string The migration event encoded key associated with this client. false read-only
» mobilePhone string The client's mobile phone number false none
» mobilePhone2 string The client's second mobile phone number false none
» notes string Extra notes about this client false none
» portalSettings PortalSettings Portal settings for an individual client false none
»» encodedKey string The encoded key of the entity, generated, globally unique false read-only
»» lastLoggedInDate string(date-time) The last date the client logged in to the portal false none
»» portalState string State of the client's portal preferences false none
» preferredLanguage string The client's language of use in Mambu false none
» profilePictureKey string Encoded key of this clients profile picture false read-only
» profileSignatureKey string Encoded key of the users profile signature false read-only
» state string The state of a client shows his workflow status, if he is waiting approval or is rejected or blacklisted false none

Enumerated Values

Property Value
Has_children_Clients TRUE
Has_children_Clients FALSE
Location_Clients Catamarca
Location_Clients Chaco
Location_Clients Jujuy
gender MALE
gender FEMALE
ownerType CLIENT
ownerType GROUP
ownerType LOAN_PRODUCT
ownerType SAVINGS_PRODUCT
ownerType CENTRE
ownerType BRANCH
ownerType USER
ownerType LOAN_ACCOUNT
ownerType DEPOSIT_ACCOUNT
ownerType ID_DOCUMENT
ownerType LINE_OF_CREDIT
ownerType GL_JOURNAL_ENTRY
portalState ENABLED
portalState DISABLED
preferredLanguage ENGLISH
preferredLanguage PORTUGESE
preferredLanguage SPANISH
preferredLanguage RUSSIAN
preferredLanguage FRENCH
preferredLanguage GEORGIAN
preferredLanguage CHINESE
preferredLanguage INDONESIAN
preferredLanguage ROMANIAN
preferredLanguage BURMESE
preferredLanguage GERMAN
preferredLanguage PHRASE
state PENDING_APPROVAL
state INACTIVE
state ACTIVE
state EXITED
state BLACKLISTED
state REJECTED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

getRoleByClientId

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/clients/{clientId}/role \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/clients/{clientId}/role HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/clients/{clientId}/role',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/clients/{clientId}/role',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/clients/{clientId}/role',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/clients/{clientId}/role', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients/{clientId}/role");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/clients/{clientId}/role", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/{clientId}/role

Allows to retrieve the client role for a client

Parameters

Name Type Description In Required
clientId string The id or encoded key of the client to be retrieved path true

Example responses

200 Response

{
  "canGuarantee": true,
  "canOpenAccounts": true,
  "clientType": "CLIENT",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "description": "string",
  "encodedKey": "string",
  "id": "string",
  "idPattern": "string",
  "name": "string",
  "requireID": true,
  "useDefaultAddress": true
}

Responses

Status Meaning Description Schema
200 OK Client role retrieved ClientRole
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found ErrorResponse

Client Documents

Allows you to retrieve or create client documents.

getDocumentsByClientId

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/clients/{clientId}/documentsMetadata \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/clients/{clientId}/documentsMetadata HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/clients/{clientId}/documentsMetadata',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/clients/{clientId}/documentsMetadata',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/clients/{clientId}/documentsMetadata',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/clients/{clientId}/documentsMetadata', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients/{clientId}/documentsMetadata");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/clients/{clientId}/documentsMetadata", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/{clientId}/documentsMetadata

Retrieve metadata regarding all documents for a specific client

Parameters

Name Type Description In Required
clientId string The id or encoded key of the client to be retrieved path true
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query false
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query false
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query false

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF

Example responses

200 Response

[
  {
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "fileName": "string",
    "fileSize": 0,
    "id": 0,
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "location": "string",
    "name": "string",
    "notes": "string",
    "ownerKey": "string",
    "ownerType": "CLIENT",
    "type": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Successfully retrieved the list of all client documents metadata Inline
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found ErrorResponse

Response Schema

Status Code 200

Name Type Description Required Restrictions
anonymous [Document] [Holds information regarding the documents uploaded as attachments] false none
» creationDate string(date-time) The creation date of the document, stored as UTC false read-only
» encodedKey string The document encodedKey false read-only
» fileName string The original file name of the document false none
» fileSize integer(int64) The file size of the document false none
» id integer(int64) The document id true none
» lastModifiedDate string(date-time) The last modified date of the document, stored as UTC false read-only
» location string Location where the document can be found, eg /myfiles/mypicture.jpeg false none
» name string The name of the document true none
» notes string Detailed notes about the document false none
» ownerKey string Represents the holder of this document. If null, means nobody is the owner of this document false read-only
» ownerType string Determines the owner type of the document false read-only
» type string The extension of the document true none

Enumerated Values

Property Value
ownerType CLIENT
ownerType GROUP
ownerType LOAN_PRODUCT
ownerType SAVINGS_PRODUCT
ownerType CENTRE
ownerType BRANCH
ownerType USER
ownerType LOAN_ACCOUNT
ownerType DEPOSIT_ACCOUNT
ownerType ID_DOCUMENT
ownerType LINE_OF_CREDIT
ownerType GL_JOURNAL_ENTRY

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

getClientDocumentById

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/clients/documents/{documentId}/metadata \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/clients/documents/{documentId}/metadata HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/clients/documents/{documentId}/metadata',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/clients/documents/{documentId}/metadata',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/clients/documents/{documentId}/metadata',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/clients/documents/{documentId}/metadata', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients/documents/{documentId}/metadata");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/clients/documents/{documentId}/metadata", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/documents/{documentId}/metadata

Allows retrieval of a single document metadata via id or encoded key

Parameters

Name Type Description In Required
documentId string The id or encoded key of the client document to be retrieved path true

Example responses

200 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "fileName": "string",
  "fileSize": 0,
  "id": 0,
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "location": "string",
  "name": "string",
  "notes": "string",
  "ownerKey": "string",
  "ownerType": "CLIENT",
  "type": "string"
}

Responses

Status Meaning Description Schema
200 OK Successfully retrieved the metadata of a client document Document
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found ErrorResponse

createDocument

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/clients/{clientId}/documents \
  -H 'Content-Type: multipart/form-data' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/clients/{clientId}/documents HTTP/1.1
Host: localhost:8889
Content-Type: multipart/form-data
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/clients/{clientId}/documents',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "file": "string",
  "name": "string",
  "notes": "string"
}';
const headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/clients/{clientId}/documents',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'multipart/form-data',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/clients/{clientId}/documents',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/clients/{clientId}/documents', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients/{clientId}/documents");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"multipart/form-data"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/clients/{clientId}/documents", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /clients/{clientId}/documents

Create a new client document

Body parameter

file: string
name: string
notes: string

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
clientId string The id or encoded key of the client to be retrieved path true
body object none body false
» file string(binary) The file to be attached for a client body true
» name string The name(title) of the attached file body false
» notes string The description of the attached file body false

Example responses

201 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "fileName": "string",
  "fileSize": 0,
  "id": 0,
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "location": "string",
  "name": "string",
  "notes": "string",
  "ownerKey": "string",
  "ownerType": "CLIENT",
  "type": "string"
}

Responses

Status Meaning Description Schema
201 Created Document created Document
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found ErrorResponse

getClientDocumentFileById

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/clients/documents/{documentId} \
  -H 'Accept: application/vnd.mambu.v2+file'

GET https://localhost:8889/api/clients/documents/{documentId} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+file

var headers = {
  'Accept':'application/vnd.mambu.v2+file'

};

$.ajax({
  url: 'https://localhost:8889/api/clients/documents/{documentId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+file'

};

fetch('https://localhost:8889/api/clients/documents/{documentId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+file'
}

result = RestClient.get 'https://localhost:8889/api/clients/documents/{documentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+file'
}

r = requests.get('https://localhost:8889/api/clients/documents/{documentId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/clients/documents/{documentId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+file"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/clients/documents/{documentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/documents/{documentId}

Download a single client document

Parameters

Name Type Description In Required
documentId string The id or encoded key of the client document to be retrieved path true

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK Client document downloaded string
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found ErrorResponse

Response Headers

Status Header Type Format Description
200 Content-Disposition string "The format is - attachment; filename="{fileName}.extension"";
200 Content-Length integer int32 The size of the file

Communications

Allows retrieval of communication messages, sending messages and resending the ones that failed.

getByEncodedKey

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/communications/messages/{encodedKey} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/communications/messages/{encodedKey} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/communications/messages/{encodedKey}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/communications/messages/{encodedKey}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/communications/messages/{encodedKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/communications/messages/{encodedKey}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/communications/messages/{encodedKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/communications/messages/{encodedKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /communications/messages/{encodedKey}

Allows retrieval of a single communication message via encoded key

Parameters

Name Type Description In Required
encodedKey string The encoded key of the communication message to be retrieved path true
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "body": "string",
  "clientKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "depositAccountKey": "string",
  "destination": "string",
  "encodedKey": "string",
  "event": "MANUAL",
  "failureCause": "string",
  "failureReason": "MESSAGING_EXCEPTION",
  "groupKey": "string",
  "loanAccountKey": "string",
  "numRetries": 0,
  "referenceId": "string",
  "repaymentKey": "string",
  "sendDate": "2016-09-06T13:37:50+03:00",
  "senderKey": "string",
  "state": "SENT",
  "subject": "string",
  "templateKey": "string",
  "type": "EMAIL",
  "userKey": "string"
}

Responses

Status Meaning Description Schema
200 OK Communication message retrieved CommunicationMessage
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Communication message not found ErrorResponse

send

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/communications/messages \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/communications/messages HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/communications/messages',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "body": "string",
  "clientKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "depositAccountKey": "string",
  "destination": "string",
  "encodedKey": "string",
  "event": "MANUAL",
  "failureCause": "string",
  "failureReason": "MESSAGING_EXCEPTION",
  "groupKey": "string",
  "loanAccountKey": "string",
  "numRetries": 0,
  "referenceId": "string",
  "repaymentKey": "string",
  "sendDate": "2016-09-06T13:37:50+03:00",
  "senderKey": "string",
  "state": "SENT",
  "subject": "string",
  "templateKey": "string",
  "type": "EMAIL",
  "userKey": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/communications/messages',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/communications/messages',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/communications/messages', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/communications/messages");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/communications/messages", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /communications/messages

Allows sending a new communication message. The message can be either SMS or Email.

Body parameter

{
  "body": "string",
  "clientKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "depositAccountKey": "string",
  "destination": "string",
  "encodedKey": "string",
  "event": "MANUAL",
  "failureCause": "string",
  "failureReason": "MESSAGING_EXCEPTION",
  "groupKey": "string",
  "loanAccountKey": "string",
  "numRetries": 0,
  "referenceId": "string",
  "repaymentKey": "string",
  "sendDate": "2016-09-06T13:37:50+03:00",
  "senderKey": "string",
  "state": "SENT",
  "subject": "string",
  "templateKey": "string",
  "type": "EMAIL",
  "userKey": "string"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
body CommunicationMessage Communication message to be created body true

Example responses

201 Response

{
  "body": "string",
  "clientKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "depositAccountKey": "string",
  "destination": "string",
  "encodedKey": "string",
  "event": "MANUAL",
  "failureCause": "string",
  "failureReason": "MESSAGING_EXCEPTION",
  "groupKey": "string",
  "loanAccountKey": "string",
  "numRetries": 0,
  "referenceId": "string",
  "repaymentKey": "string",
  "sendDate": "2016-09-06T13:37:50+03:00",
  "senderKey": "string",
  "state": "SENT",
  "subject": "string",
  "templateKey": "string",
  "type": "EMAIL",
  "userKey": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Communication message sent CommunicationMessage
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/communications/messages:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST https://localhost:8889/api/communications/messages:search HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/communications/messages:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[
  {
    "field": "encodedKey",
    "operator": "EQUALS",
    "secondValue": "string",
    "value": "string",
    "values": [
      "string"
    ]
  }
]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/communications/messages:search',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post 'https://localhost:8889/api/communications/messages:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('https://localhost:8889/api/communications/messages:search', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/communications/messages:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/communications/messages:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /communications/messages:search

Client Directed Query. Allows searching communication messages by various criteria

Body parameter

[
  {
    "field": "encodedKey",
    "operator": "EQUALS",
    "secondValue": "string",
    "value": "string",
    "values": [
      "string"
    ]
  }
]

Parameters

Name Type Description In Required
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query false
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query false
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query false
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false
body array[object] Criteria to be used to search the communication messages body true

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "body": "string",
    "clientKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "depositAccountKey": "string",
    "destination": "string",
    "encodedKey": "string",
    "event": "MANUAL",
    "failureCause": "string",
    "failureReason": "MESSAGING_EXCEPTION",
    "groupKey": "string",
    "loanAccountKey": "string",
    "numRetries": 0,
    "referenceId": "string",
    "repaymentKey": "string",
    "sendDate": "2016-09-06T13:37:50+03:00",
    "senderKey": "string",
    "state": "SENT",
    "subject": "string",
    "templateKey": "string",
    "type": "EMAIL",
    "userKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Result of communication message search Inline
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Required Restrictions
anonymous [CommunicationMessage] [The communication message being sent, of type email or SMS, containing information such as the state of the message, to whom it was sent] false none
» body string The actual contents (body) of the message false none
» clientKey string The client the message was sent to false none
» creationDate string(date-time) The date the communication message was created (as UTC) false none
» depositAccountKey string The deposit account about which the message was sent false none
» destination string The destination (phone number or email address) this communication message was sent to false none
» encodedKey string The encoded key of the communication message, auto generated, unique false none
» event string The event this message was sent for false none
» failureCause string The failure code if the message failed to send false none
» failureReason string The reason for the communication message failure false none
» groupKey string The group the message was sent to false none
» loanAccountKey string The loan account about which the message was sent false none
» numRetries integer(int32) The number of retries to send the message false none
» referenceId string The reference id of the communication message, generated by the SMS Dispatcher false none
» repaymentKey string The repayment about which the message was sent false none
» sendDate string(date-time) The date the communication message was actually sent (as UTC) false none
» senderKey string The encoded key of the sender. If specified, it should be the encoded key of the current user false none
» state string The state of the message false none
» subject string The subject of the message false none
» templateKey string The communication message template key false none
» type string The type of communication message false none
» userKey string The user the message was sent to false none

Enumerated Values

Property Value
event MANUAL
event DO_NOTHING
event CLIENT_CREATED
event CLIENT_APPROVED
event GROUP_ACTIVITY
event GROUP_CREATED
event LOAN_CREATED
event INTEREST_RATE_CHANGED
event CLIENT_REJECTED
event CLIENT_ACTIVITY
event LOAN_REPAYMENT
event LOAN_REPAYMENT_REVERSAL
event LOAN_APPROVAL
event LOAN_ACCOUNT_CLOSURE
event LOAN_ACCOUNT_WRITE_OFF
event LOAN_ACCOUNT_REJECTION
event LOAN_ACCOUNT_RESCHEDULED
event LOAN_ACCOUNT_REFINANCED
event REPAYMENT_REMINDER
event ACCOUNT_IN_ARREARS
event LOAN_DISBURSEMENT
event LOAN_DISBURSEMENT_REVERSAL
event LOAN_ACCOUNT_ACTIVITY
event LOAN_ANTICIPATED_DISBURSEMENT
event SAVINGS_CREATED
event SAVINGS_DEPOSIT
event SAVINGS_DEPOSIT_REVERSAL
event SAVINGS_APPROVAL
event SAVINGS_ACCOUNT_ACTIVATED
event SAVINGS_ACCOUNT_CLOSURE
event SAVINGS_ACCOUNT_REJECTION
event SAVINGS_WITHDRAWAL
event SAVINGS_WITHDRAWAL_REVERSAL
event SAVINGS_ACCOUNT_ACTIVITY
event CARDS_AUTHORISATION_HOLD_CREATED
event CARDS_AUTHORISATION_HOLD_SETTLED
event CARDS_AUTHORISATION_HOLD_AMOUNT_DECREASED
event CARDS_AUTHORISATION_HOLD_AMOUNT_INCREASED
event CARDS_AUTHORISATION_HOLD_EXPIRED
event PORTAL_ACTIVATED
event PORTAL_PASSWORD_RESET
event END_OF_DAY_PROCESSING_COMPLETED
event DATA_ACCESS_STATE_CHANGED
event CREDIT_ARRANGEMENT_CREATED
event CREDIT_ARRANGEMENT_CLOSED
event CREDIT_ARRANGEMENT_APPROVED
event CREDIT_ARRANGEMENT_REJECTED
event CREDIT_ARRANGEMENT_WITHDRAWN
event CREDIT_ARRANGEMENT_DELETED
event CREDIT_ARRANGEMENT_ACCOUNT_ADDED
event CREDIT_ARRANGEMENT_ACCOUNT_REMOVED
event PAYMENT_ORDER_ACTIVITY
event COLLECTION_ORDER_ACTIVITY
event JOURNAL_ENTRY_ADDED
event JOURNAL_ENTRY_ADJUSTED
failureReason MESSAGING_EXCEPTION
failureReason UNSUPPORTED_ENCODING_EXCEPTION
failureReason SMS_TOO_LONG
failureReason SMS_SERVICE_NOT_ENABLED
failureReason SMS_NOT_SENT
failureReason SMS_SERVICE_ERROR
failureReason SMS_CONNECTION_EXCEPTION
failureReason WEBHOOK_NOTIFICATIONS_DISABLED
failureReason INVALID_HTTP_RESPONSE
failureReason HTTP_ERROR_WHILE_SENDING
failureReason INVALID_JSON_BODY_SYNTAX
failureReason UNDEFINED_DESTINATION
failureReason OTHER
state SENT
state QUEUED
state QUEUED_FOR_STREAM
state WAITING
state SENDING_ASYNC
state FAILED
type EMAIL
type SMS
type WEB_HOOK
type EVENT_STREAM
type TASK

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

resend

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/communications/messages:resend \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/communications/messages:resend HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/communications/messages:resend',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "messages": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/communications/messages:resend',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/communications/messages:resend',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/communications/messages:resend', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/communications/messages:resend");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/communications/messages:resend", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /communications/messages:resend

Allows resending of one or multiple failed communication messages. The messages can be either SMS, Email or Webhook

Body parameter

{
  "messages": [
    "string"
  ]
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
body CommunicationMessageAction Allows specifying a list of failed communication messages to resend body true

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
202 Accepted The operation was accepted. You can check the status of each notification later via GET or SEARCH api None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Communication message not found ErrorResponse

Credit Arrangements

Allows you to retrieve, create, update and delete credit arrangements.

getById

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/creditarrangements/{creditArrangementId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/creditarrangements/{creditArrangementId} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/creditarrangements/{creditArrangementId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/creditarrangements/{creditArrangementId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/creditarrangements/{creditArrangementId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/creditarrangements/{creditArrangementId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/creditarrangements/{creditArrangementId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/creditarrangements/{creditArrangementId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /creditarrangements/{creditArrangementId}

Allows retrieval of a single credit arrangement via id or encoded key

Parameters

Name Type Description In Required
creditArrangementId string The id or encoded key of the credit arrangement to be retrieved path true
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "amount": 0,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "availableCreditAmount": 0,
  "closedDate": "2016-09-06T13:37:50+03:00",
  "consumedCreditAmount": 0,
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00",
  "state": "PENDING_APPROVAL",
  "subState": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
200 OK Credit arrangement retrieved CreditArrangement
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found ErrorResponse

update

Code samples

# You can also use wget
curl -X PUT https://localhost:8889/api/creditarrangements/{creditArrangementId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT https://localhost:8889/api/creditarrangements/{creditArrangementId} HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/creditarrangements/{creditArrangementId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "amount": 0,
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/creditarrangements/{creditArrangementId}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put 'https://localhost:8889/api/creditarrangements/{creditArrangementId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('https://localhost:8889/api/creditarrangements/{creditArrangementId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/creditarrangements/{creditArrangementId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://localhost:8889/api/creditarrangements/{creditArrangementId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /creditarrangements/{creditArrangementId}

Update an existing credit arrangement

Body parameter

{
  "amount": 0,
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In Required
creditArrangementId string The id or encoded key of the credit arrangement to be updated path true
body CreditArrangement Credit arrangement to be updated body true

Example responses

200 Response

{
  "amount": 0,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "availableCreditAmount": 0,
  "closedDate": "2016-09-06T13:37:50+03:00",
  "consumedCreditAmount": 0,
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00",
  "state": "PENDING_APPROVAL",
  "subState": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
200 OK Credit arrangement updated CreditArrangement
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found ErrorResponse

delete

Code samples

# You can also use wget
curl -X DELETE https://localhost:8889/api/creditarrangements/{creditArrangementId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE https://localhost:8889/api/creditarrangements/{creditArrangementId} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/creditarrangements/{creditArrangementId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/creditarrangements/{creditArrangementId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete 'https://localhost:8889/api/creditarrangements/{creditArrangementId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('https://localhost:8889/api/creditarrangements/{creditArrangementId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/creditarrangements/{creditArrangementId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://localhost:8889/api/creditarrangements/{creditArrangementId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /creditarrangements/{creditArrangementId}

Delete a credit arrangement

Parameters

Name Type Description In Required
creditArrangementId string The id or encoded key of the credit arrangement to be deleted path true

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Credit arrangement deleted None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found ErrorResponse

patch

Code samples

# You can also use wget
curl -X PATCH https://localhost:8889/api/creditarrangements/{creditArrangementId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH https://localhost:8889/api/creditarrangements/{creditArrangementId} HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/creditarrangements/{creditArrangementId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/creditarrangements/{creditArrangementId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch 'https://localhost:8889/api/creditarrangements/{creditArrangementId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('https://localhost:8889/api/creditarrangements/{creditArrangementId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/creditarrangements/{creditArrangementId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://localhost:8889/api/creditarrangements/{creditArrangementId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /creditarrangements/{creditArrangementId}

Partially update an existing credit arrangement

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In Required
creditArrangementId string The id or encoded key of the credit arrangement to be updated path true
body PatchOperationArray Patch operations to be applied to a resource body true

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Credit arrangement updated None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found ErrorResponse

getAll

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/creditarrangements \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/creditarrangements HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/creditarrangements',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/creditarrangements',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/creditarrangements',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/creditarrangements', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/creditarrangements");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/creditarrangements", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /creditarrangements

Allows retrieval of credit arrangements using various query parameters

Parameters

Name Type Description In Required
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query false
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query false
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query false
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false
sortBy string The criteria based on which the records will be sorted. Expected format is , eg sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: creationDate, startDate, expireDate, amount
Default sorting is done by startDate:DESC
query false

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "amount": 0,
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "availableCreditAmount": 0,
    "closedDate": "2016-09-06T13:37:50+03:00",
    "consumedCreditAmount": 0,
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "expireDate": "2016-09-06T13:37:50+03:00",
    "exposureLimitType": "APPROVED_AMOUNT",
    "holderKey": "string",
    "holderType": "CLIENT",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "notes": "string",
    "startDate": "2016-09-06T13:37:50+03:00",
    "state": "PENDING_APPROVAL",
    "subState": "PENDING_APPROVAL"
  }
]

Responses

Status Meaning Description Schema
200 OK Credit arrangements list retrieved Inline
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Required Restrictions
anonymous [CreditArrangement] [A maximum amount a client (individual, group or company) can take in loans and overdrafts.] false none
» amount number The maximum credit amount the client can be exposed to true none
» approvedDate string(date-time) The date when credit arrangement was approved false read-only
» availableCreditAmount number The available amount of the credit arrangement false read-only
» closedDate string(date-time) The date when credit arrangement was closed false read-only
» consumedCreditAmount number The consumed amount of the credit arrangement (calculated as the difference between the amount and available amount false read-only
» creationDate string(date-time) The date when credit arrangement was created false read-only
» encodedKey string The encoded key of credit arrangement, auto generated, unique false read-only
» expireDate string(date-time) The date when credit arrangement expires true none
» exposureLimitType string The type of exposure limit calculation method used false none
» holderKey string The encodedKey of the client or group (a.k.a holder) false none
» holderType string The type of the credit arrangement holder (client or group) true none
» id string The id of credit arrangement, can be generated and customized, unique false none
» lastModifiedDate string(date-time) The last date when credit arrangement was modified false read-only
» notes string The notes/description of credit arrangement false none
» startDate string(date-time) The start date from which the credit arrangement becomes active true none
» state string The state of credit arrangement can be Pending Approval, Approved, Active or Closed false read-only
» subState string The substate of credit arrangement can be Withdrawn or Rejected when state is Closed false read-only

Enumerated Values

Property Value
exposureLimitType APPROVED_AMOUNT
exposureLimitType OUTSTANDING_AMOUNT
holderType CLIENT
holderType GROUP
state PENDING_APPROVAL
state APPROVED
state ACTIVE
state CLOSED
state WITHDRAWN
state REJECTED
subState PENDING_APPROVAL
subState APPROVED
subState ACTIVE
subState CLOSED
subState WITHDRAWN
subState REJECTED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/creditarrangements \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/creditarrangements HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/creditarrangements',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "amount": 0,
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/creditarrangements',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/creditarrangements',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/creditarrangements', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/creditarrangements");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/creditarrangements", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /creditarrangements

Create a new credit arrangement

Body parameter

{
  "amount": 0,
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
body CreditArrangement Credit arrangement to be created body true

Example responses

201 Response

{
  "amount": 0,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "availableCreditAmount": 0,
  "closedDate": "2016-09-06T13:37:50+03:00",
  "consumedCreditAmount": 0,
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00",
  "state": "PENDING_APPROVAL",
  "subState": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Credit arrangement created CreditArrangement
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

changeState

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/creditarrangements/{creditArrangementId}:changeState \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/creditarrangements/{creditArrangementId}:changeState HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/creditarrangements/{creditArrangementId}:changeState',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "action": "APPROVE",
  "notes": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/creditarrangements/{creditArrangementId}:changeState',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/creditarrangements/{creditArrangementId}:changeState',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/creditarrangements/{creditArrangementId}:changeState', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/creditarrangements/{creditArrangementId}:changeState");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/creditarrangements/{creditArrangementId}:changeState", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /creditarrangements/{creditArrangementId}:changeState

Allows posting an action such as change credit arrangement state

Body parameter

{
  "action": "APPROVE",
  "notes": "string"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
creditArrangementId string The id or encoded key of the credit arrangement to be updated path true
body CreditArrangementAction Allows specifying the action details for a credit arrangement body true

Example responses

200 Response

{
  "amount": 0,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "availableCreditAmount": 0,
  "closedDate": "2016-09-06T13:37:50+03:00",
  "consumedCreditAmount": 0,
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00",
  "state": "PENDING_APPROVAL",
  "subState": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Credit arrangement action posted CreditArrangement
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found ErrorResponse

getAllAccounts

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/creditarrangements/{creditArrangementId}/accounts \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/creditarrangements/{creditArrangementId}/accounts HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/creditarrangements/{creditArrangementId}/accounts',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/creditarrangements/{creditArrangementId}/accounts',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/creditarrangements/{creditArrangementId}/accounts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/creditarrangements/{creditArrangementId}/accounts', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/creditarrangements/{creditArrangementId}/accounts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/creditarrangements/{creditArrangementId}/accounts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /creditarrangements/{creditArrangementId}/accounts

Allows retrieval of all the loan and deposit accounts linked to the credit arrangement

Parameters

Name Type Description In Required
creditArrangementId string The id or encoded key of the credit arrangement to be retrieved path true

Example responses

200 Response

{
  "depositAccounts": [
    {
      "accountHolderKey": "string",
      "accountHolderType": "CLIENT",
      "accountState": "PENDING_APPROVAL",
      "accountType": "CURRENT_ACCOUNT",
      "accruedAmounts": {
        "interestAccrued": 0,
        "overdraftInterestAccrued": 0,
        "technicalOverdraftInterestAccrued": 0
      },
      "activationDate": "2016-09-06T13:37:50+03:00",
      "approvedDate": "2016-09-06T13:37:50+03:00",
      "assignedBranchKey": "string",
      "assignedCentreKey": "string",
      "assignedUserKey": "string",
      "balances": {
        "availableBalance": 0,
        "blockedBalance": 0,
        "feesDue": 0,
        "forwardAvailableBalance": 0,
        "holdBalance": 0,
        "lockedBalance": 0,
        "overdraftAmount": 0,
        "overdraftInterestDue": 0,
        "technicalOverdraftAmount": 0,
        "technicalOverdraftInterestDue": 0,
        "totalBalance": 0
      },
      "closedDate": "2016-09-06T13:37:50+03:00",
      "creationDate": "2016-09-06T13:37:50+03:00",
      "creditArrangementKey": "string",
      "currencyCode": "string",
      "encodedKey": "string",
      "id": "string",
      "interestSettings": {
        "interestPaymentSettings": {
          "interestPaymentDates": [
            {
              "day": 0,
              "month": 0
            }
          ],
          "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
        },
        "interestRateSettings": {
          "encodedKey": "string",
          "interestChargeFrequency": "ANNUALIZED",
          "interestChargeFrequencyCount": 0,
          "interestRate": 0,
          "interestRateTerms": "FIXED",
          "interestRateTiers": [
            {
              "encodedKey": "string",
              "endingBalance": 0,
              "endingDay": 0,
              "interestRate": 0
            }
          ]
        }
      },
      "internalControls": {
        "maxWithdrawalAmount": 0,
        "recommendedDepositAmount": 0,
        "targetAmount": 0
      },
      "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
      "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
      "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
      "linkedSettlementAccountKeys": [
        "string"
      ],
      "lockedDate": "2016-09-06T13:37:50+03:00",
      "maturityDate": "2016-09-06T13:37:50+03:00",
      "migrationEventKey": "string",
      "name": "string",
      "notes": "string",
      "overdraftInterestSettings": {
        "interestRateSettings": {
          "encodedKey": "string",
          "interestChargeFrequency": "ANNUALIZED",
          "interestChargeFrequencyCount": 0,
          "interestRate": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestRateTerms": "FIXED",
          "interestRateTiers": [
            {
              "encodedKey": "string",
              "endingBalance": 0,
              "endingDay": 0,
              "interestRate": 0
            }
          ],
          "interestSpread": 0
        }
      },
      "overdraftSettings": {
        "allowOverdraft": true,
        "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
        "overdraftLimit": 0
      },
      "productTypeKey": "string",
      "withholdingTaxSourceKey": "string"
    }
  ],
  "loanAccounts": [
    {
      "accountArrearsSettings": {
        "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
        "encodedKey": "string",
        "monthlyToleranceDay": 0,
        "nonWorkingDaysMethod": "INCLUDED",
        "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
        "toleranceFloorAmount": 0,
        "tolerancePercentageOfOutstandingPrincipal": 0,
        "tolerancePeriod": 0
      },
      "accountHolderKey": "string",
      "accountHolderType": "CLIENT",
      "accountState": "PARTIAL_APPLICATION",
      "accountSubState": "PARTIALLY_DISBURSED",
      "accruedInterest": 0,
      "accruedPenalty": 0,
      "activationTransactionKey": "string",
      "allowOffset": true,
      "approvedDate": "2016-09-06T13:37:50+03:00",
      "arrearsTolerancePeriod": 0,
      "assets": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT"
        }
      ],
      "assignedBranchKey": "string",
      "assignedCentreKey": "string",
      "assignedUserKey": "string",
      "balances": {
        "feesBalance": 0,
        "feesDue": 0,
        "feesPaid": 0,
        "holdBalance": 0,
        "interestBalance": 0,
        "interestDue": 0,
        "interestFromArrearsBalance": 0,
        "interestFromArrearsDue": 0,
        "interestFromArrearsPaid": 0,
        "interestPaid": 0,
        "penaltyBalance": 0,
        "penaltyDue": 0,
        "penaltyPaid": 0,
        "principalBalance": 0,
        "principalDue": 0,
        "principalPaid": 0,
        "redrawBalance": 0
      },
      "closedDate": "2016-09-06T13:37:50+03:00",
      "creationDate": "2016-09-06T13:37:50+03:00",
      "creditArrangementKey": "string",
      "daysInArrears": 0,
      "daysLate": 0,
      "disbursementDetails": {
        "disbursementDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
        "fees": [
          {
            "amount": 0,
            "encodedKey": "string",
            "predefinedFeeEncodedKey": "string"
          }
        ],
        "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
        "transactionDetails": {
          "encodedKey": "string",
          "internalTransfer": true,
          "targetDepositAccountKey": "string",
          "transactionChannelId": "string",
          "transactionChannelKey": "string"
        }
      },
      "encodedKey": "string",
      "fundingSources": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT",
          "id": "string",
          "interestCommission": 0,
          "sharePercentage": 0
        }
      ],
      "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
      "guarantors": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT"
        }
      ],
      "id": "string",
      "interestCommission": 0,
      "interestFromArrearsAccrued": 0,
      "interestSettings": {
        "accrueInterestAfterMaturity": true,
        "accrueLateInterest": true,
        "interestApplicationMethod": "AFTER_DISBURSEMENT",
        "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
        "interestCalculationMethod": "FLAT",
        "interestChargeFrequency": "ANNUALIZED",
        "interestRate": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "interestType": "SIMPLE_INTEREST"
      },
      "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
      "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
      "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastLockedDate": "2016-09-06T13:37:50+03:00",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
      "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
      "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
      "loanAmount": 0,
      "loanName": "string",
      "lockedOperations": [
        "APPLY_INTEREST"
      ],
      "migrationEventKey": "string",
      "notes": "string",
      "originalAccountKey": "string",
      "paymentHolidaysAccruedInterest": 0,
      "paymentMethod": "HORIZONTAL",
      "penaltySettings": {
        "loanPenaltyCalculationMethod": "NONE",
        "penaltyRate": 0
      },
      "prepaymentSettings": {
        "applyInterestOnPrepaymentMethod": "AUTOMATIC",
        "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
        "prepaymentRecalculationMethod": "NO_RECALCULATION",
        "principalPaidInstallmentStatus": "PARTIALLY_PAID"
      },
      "principalPaymentSettings": {
        "amount": 0,
        "encodedKey": "string",
        "includeFeesInFloorAmount": true,
        "includeInterestInFloorAmount": true,
        "percentage": 0,
        "principalCeilingValue": 0,
        "principalFloorValue": 0,
        "principalPaymentMethod": "FLAT",
        "totalDueAmountFloor": 0,
        "totalDuePayment": "FLAT"
      },
      "productTypeKey": "string",
      "redrawSettings": {
        "restrictNextDueWithdrawal": true
      },
      "rescheduledAccountKey": "string",
      "scheduleSettings": {
        "defaultFirstRepaymentDueDateOffset": 0,
        "fixedDaysOfMonth": [
          0
        ],
        "gracePeriod": 0,
        "gracePeriodType": "NONE",
        "hasCustomSchedule": true,
        "paymentPlan": [
          {
            "amount": 0,
            "encodedKey": "string",
            "toInstallment": 0
          }
        ],
        "periodicPayment": 0,
        "principalRepaymentInterval": 0,
        "repaymentInstallments": 0,
        "repaymentPeriodCount": 0,
        "repaymentPeriodUnit": "DAYS",
        "repaymentScheduleMethod": "NONE",
        "scheduleDueDatesMethod": "INTERVAL",
        "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
      },
      "settlementAccountKey": "string",
      "taxRate": 0,
      "tranches": [
        {
          "amount": 0,
          "disbursementDetails": {
            "disbursementTransactionKey": "string",
            "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
          },
          "encodedKey": "string",
          "trancheNumber": 0
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Credit arrangement accounts retrieved CreditArrangementAccounts
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found ErrorResponse

Crons

Allows you to trigger the hourly and end of day processing.

runHourlyAndEndOfDayCrons

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/crons/eod:run \
  -H 'Accept: application/vnd.mambu.v2+json'

POST https://localhost:8889/api/crons/eod:run HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/crons/eod:run',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/crons/eod:run',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post 'https://localhost:8889/api/crons/eod:run',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('https://localhost:8889/api/crons/eod:run', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/crons/eod:run");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/crons/eod:run", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /crons/eod:run

Trigger hourly and end of day Processing

Example responses

202 Response

{
  "state": "QUEUED"
}

Responses

Status Meaning Description Schema
202 Accepted Hourly and end of day processing triggered TriggerHourlyAndEndOfDayProcessingResponse
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
500 Internal Server Error Internal Error ErrorResponse

Custom Fields

Allows retrieval of custom fields.

getById

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/customfields/{customfieldId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/customfields/{customfieldId} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/customfields/{customfieldId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/customfields/{customfieldId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/customfields/{customfieldId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/customfields/{customfieldId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/customfields/{customfieldId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/customfields/{customfieldId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /customfields/{customfieldId}

Allows retrieval of a single custom field via id or encoded key

Parameters

Name Type Description In Required
customfieldId string The id or encoded key of the custom field to be retrieved path true
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "availableFor": "CLIENT",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "dependentFieldKey": "string",
  "displaySettings": {
    "builtInId": "FIRST_NAME",
    "description": "string",
    "displayName": "string",
    "fieldSize": "SHORT",
    "position": 0
  },
  "editRights": {
    "allUsers": true,
    "roles": [
      "string"
    ]
  },
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "selectionOptions": [
    {
      "availableOptions": [
        {
          "score": 0,
          "selectionKey": "string",
          "value": "string"
        }
      ],
      "forSelectionKey": "string",
      "forValue": "string"
    }
  ],
  "state": "ACTIVE",
  "type": "FREE_TEXT",
  "usage": [
    {
      "default": true,
      "objectKey": "string",
      "required": true
    }
  ],
  "valueValidationSettings": {
    "unique": true,
    "validationPattern": "string"
  },
  "viewRights": {
    "allUsers": true,
    "roles": [
      "string"
    ]
  }
}

Responses

Status Meaning Description Schema
200 OK Custom field retrieved CustomFieldMeta
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Custom field not found ErrorResponse

Custom Field Sets

Allows retrieval of custom field sets.

getAllBySetId

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/customfieldsets/{customFieldSetId}/customfields \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/customfieldsets/{customFieldSetId}/customfields HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/customfieldsets/{customFieldSetId}/customfields',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/customfieldsets/{customFieldSetId}/customfields',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/customfieldsets/{customFieldSetId}/customfields',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/customfieldsets/{customFieldSetId}/customfields', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/customfieldsets/{customFieldSetId}/customfields");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/customfieldsets/{customFieldSetId}/customfields", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /customfieldsets/{customFieldSetId}/customfields

Allows retrieval of custom fields by custom field set key or id

Parameters

Name Type Description In Required
customFieldSetId string The encoded key or id of the custom field set used to retrieve all the custom fields of that set path true
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query false
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query false
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query false
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "availableFor": "CLIENT",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "dependentFieldKey": "string",
    "displaySettings": {
      "builtInId": "FIRST_NAME",
      "description": "string",
      "displayName": "string",
      "fieldSize": "SHORT",
      "position": 0
    },
    "editRights": {
      "allUsers": true,
      "roles": [
        "string"
      ]
    },
    "encodedKey": "string",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "selectionOptions": [
      {
        "availableOptions": [
          {
            "score": 0,
            "selectionKey": "string",
            "value": "string"
          }
        ],
        "forSelectionKey": "string",
        "forValue": "string"
      }
    ],
    "state": "ACTIVE",
    "type": "FREE_TEXT",
    "usage": [
      {
        "default": true,
        "objectKey": "string",
        "required": true
      }
    ],
    "valueValidationSettings": {
      "unique": true,
      "validationPattern": "string"
    },
    "viewRights": {
      "allUsers": true,
      "roles": [
        "string"
      ]
    }
  }
]

Responses

Status Meaning Description Schema
200 OK Custom field list retrieved Inline
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Required Restrictions
anonymous [CustomFieldMeta] [Custom Field Date Transfer Object] false none
» availableFor string Indicates with what object the custom field is associated false none
» creationDate string(date-time) Date at which the custom field was created false none
» dependentFieldKey string Indicates the master field on which the dependency is based upon. false none
» displaySettings CustomFieldDisplaySettings Groups all fields related to a custom field's display settings false none
»» builtInId string Shows the original id of the built in custom field false none
»» description string Free-text description of the field. false none
»» displayName string User-defined name, displayed in the UI. false none
»» fieldSize string Field display size in the UI. false none
»» position integer(int32) Custom field position in the custom field set. false none
» editRights CustomFieldEditRights Settings that indicate the defined editing rights by role for the custom field false none
»» allUsers boolean Indicates whether the field can be edited by all users or by roles false none
»» roles [string] Lists the IDs of the roles that have edit rights for this field when it's not accessible by all users false none
» encodedKey string The encoded key of the entity, generated, globally unique false read-only
» id string User-defined ID, globally unique. false none
» lastModifiedDate string(date-time) Date at which the latest update was performed for this field false none
» selectionOptions [CustomFieldSelectionOption] Indicates that the field has predefined selections and only those can be used to populate it false none
»» availableOptions [CustomFieldAvailableOption] List of values that can be used in the slave field based on current master selection. false none
»»» score number Selection score false none
»»» selectionKey string System-generated ID of the predefined value false none
»»» value string Predefined value name false none
»» forSelectionKey string Indicates the key for the value on the master field. false none
»» forValue string Indicates the value of the master field. false none
» state string Indicates whether the field is active or inactive false none
» type string Supported input type false none
» usage [CustomFieldUsage] Information on what record types the custom field is available for. false none
»» default boolean Indicates whether the field is displayed by default on create/edit page for this record type. false none
»» objectKey string Indicates the key of the record type (eg client type) false none
»» required boolean Indicates whether the field is mandatory or not for this record type. false none
» valueValidationSettings CustomFieldValueValidationSettings Settings for field input validation. false none
»» unique boolean Indicates whether this field allows duplicate values or not false none
»» validationPattern string Indicates if a validation is set in terms of expected character type/format false none
» viewRights CustomFieldViewRights Settings that indicate the defined view rights by role for the custom field false none
»» allUsers boolean Indicates whether the field can be viewed by all users or by roles false none
»» roles [string] Lists the IDs of the roles that have view rights for this field when it's not accessible by all users false none

Enumerated Values

Property Value
availableFor CLIENT
availableFor GROUP
availableFor CREDIT_ARRANGEMENT
availableFor LOAN_ACCOUNT
availableFor GUARANTOR
availableFor ASSET
availableFor DEPOSIT_ACCOUNT
availableFor TRANSACTION_CHANNEL
availableFor BRANCH
availableFor CENTRE
availableFor USER
builtInId FIRST_NAME
builtInId MIDDLE_NAME
builtInId LAST_NAME
builtInId BIRTHDATE
builtInId GENDER
builtInId MOBILE_PHONE
builtInId MOBILE_PHONE_2
builtInId HOME_PHONE
builtInId EMAIL_ADDRESS
fieldSize SHORT
fieldSize LONG
state ACTIVE
state INACTIVE
type FREE_TEXT
type SELECTION
type NUMBER
type CHECKBOX
type DATE
type CLIENT_LINK
type GROUP_LINK
type USER_LINK

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

getAll

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/customfieldsets \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://localhost:8889/api/customfieldsets HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://localhost:8889/api/customfieldsets',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

fetch('https://localhost:8889/api/customfieldsets',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get 'https://localhost:8889/api/customfieldsets',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('https://localhost:8889/api/customfieldsets', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/customfieldsets");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/customfieldsets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /customfieldsets

Allows retrieval of custom field sets using various query parameters

Parameters

Name Type Description In Required
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query false
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query false
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query false
detailsLevel string The level of details to retrieve, FULL means the full details of the object will be retrieved (custom fields, address, contact info or any other related object), BASIC will return only the first level elements of the object query false
availableFor array[string] The entity that the custom field set is associated with query false
displaySettings.builtIn boolean Indicates if it is a built in custom field set or not query false

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL
availableFor CLIENT
availableFor GROUP
availableFor CREDIT_ARRANGEMENT
availableFor LOAN_ACCOUNT
availableFor GUARANTOR
availableFor ASSET
availableFor DEPOSIT_ACCOUNT
availableFor TRANSACTION_CHANNEL
availableFor BRANCH
availableFor CENTRE
availableFor USER

Example responses

200 Response

[
  {
    "availableFor": "CLIENT",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "customFields": [
      {
        "encodedKey": "string",
        "id": "string"
      }
    ],
    "description": "string",
    "displaySettings": {
      "builtIn": true,
      "displayName": "string",
      "position": 0
    },
    "encodedKey": "string",
    "fieldSetType": "STANDARD",
    "id": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Custom field sets list retrieved Inline
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Required Restrictions
anonymous [CustomFieldSetMeta] [Model representation of a Custom Field Set] false none
» availableFor string Indicates the entity that the custom field set is associated with (eg. clients or any entity that allows CF definition) false none
» creationDate string(date-time) Date at which the custom field set was created false read-only
» customFields [CustomFieldIdentity] This section lists all the custom fields associated with this set false none
»» encodedKey string The encoded key of the entity, generated, globally unique false read-only
»» id string User-provided ID of the custom field false none
» description string Free text field to store eventual notes with regard to custom field group purpose/details false none
» displaySettings CustomFieldSetDisplaySettings Wrapper holds the display properties of a Custom Field Set false none
»» builtIn boolean This is used only for builtIn custom field sets and can have two possible values: True - when this is a "mambu" field set, False - when this is a tenant-defined field set false none
»» displayName string User-provided name of the custom field set false none
»» position integer(int32) Represents the order of the custom field set (starts from 0) false none
» encodedKey string The encoded key of the entity, generated, globally unique false read-only
» fieldSetType string The usage decides how the custom field set will be used in the UI and how the custom field values will be stored. For STANDARD set type the custom field set can be used only once (i.e Personal Information). For GROUPED set type the custom field set can be used multiple times (i.e Addresses). For further details please see here false none
» id string User-defined ID, gobally unique false none

Enumerated Values

Property Value
availableFor CLIENT
availableFor GROUP
availableFor CREDIT_ARRANGEMENT
availableFor LOAN_ACCOUNT
availableFor GUARANTOR
availableFor ASSET
availableFor DEPOSIT_ACCOUNT
availableFor TRANSACTION_CHANNEL
availableFor BRANCH
availableFor CENTRE
availableFor USER
fieldSetType STANDARD
fieldSetType GROUPED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Custom Fields Configuration

Allows the retrieval and update of the custom fields configuration using yaml-formatted config files.

Read our support article on the topic for more information on supported fields and how to format your yaml configuration files.

getTemplate

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/configuration/customfields/template.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET https://localhost:8889/api/configuration/customfields/template.yaml HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: 'https://localhost:8889/api/configuration/customfields/template.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

fetch('https://localhost:8889/api/configuration/customfields/template.yaml',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get 'https://localhost:8889/api/configuration/customfields/template.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('https://localhost:8889/api/configuration/customfields/template.yaml', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/configuration/customfields/template.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/configuration/customfields/template.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/customfields/template.yaml

Allows retrieval of the custom fields configuration template.

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK Custom fields configuration template retrieved. CustomFieldsConfiguration
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

get

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/configuration/customfields.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET https://localhost:8889/api/configuration/customfields.yaml HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: 'https://localhost:8889/api/configuration/customfields.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

fetch('https://localhost:8889/api/configuration/customfields.yaml',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get 'https://localhost:8889/api/configuration/customfields.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('https://localhost:8889/api/configuration/customfields.yaml', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/configuration/customfields.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/configuration/customfields.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/customfields.yaml

Allows retrieval of the custom fields configuration.

Parameters

Name Type Description In Required
availableFor array[string] The entity type of the custom field sets to be retrieved. Used multiple times it will retrieved all the custom field sets of all the specified entity types.If parameter is absent, all the custom field sets will be retrieved query false

Enumerated Values

Parameter Value
availableFor CLIENT
availableFor GROUP
availableFor CREDIT_ARRANGEMENT
availableFor LOAN_ACCOUNT
availableFor GUARANTOR
availableFor ASSET
availableFor DEPOSIT_ACCOUNT
availableFor TRANSACTION_CHANNEL
availableFor BRANCH
availableFor CENTRE
availableFor USER

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK Custom fields configuration retrieved. CustomFieldsConfiguration
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

update

Code samples

# You can also use wget
curl -X PUT https://localhost:8889/api/configuration/customfields.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT https://localhost:8889/api/configuration/customfields.yaml HTTP/1.1
Host: localhost:8889
Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: 'https://localhost:8889/api/configuration/customfields.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "customFieldSets": [
    {
      "availableFor": "CLIENT",
      "customFields": [
        {
          "default": true,
          "dependentFieldId": "string",
          "displaySettings": {
            "description": "string",
            "displayName": "string",
            "fieldSize": "SHORT"
          },
          "editRights": {
            "allUsers": true,
            "roles": [
              "string"
            ]
          },
          "id": "string",
          "required": true,
          "selectionOptions": [
            {
              "availableOptions": [
                {
                  "score": 0,
                  "selectionId": "string",
                  "value": "string"
                }
              ],
              "forSelectionId": "string"
            }
          ],
          "state": "ACTIVE",
          "type": "FREE_TEXT",
          "usage": [
            {
              "default": true,
              "id": "string",
              "required": true
            }
          ],
          "validationRules": {
            "unique": true,
            "validationPattern": "string"
          },
          "viewRights": {
            "allUsers": true,
            "roles": [
              "string"
            ]
          }
        }
      ],
      "description": "string",
      "id": "string",
      "name": "string",
      "type": "SINGLE"
    }
  ]
}';
const headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

fetch('https://localhost:8889/api/configuration/customfields.yaml',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put 'https://localhost:8889/api/configuration/customfields.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('https://localhost:8889/api/configuration/customfields.yaml', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/configuration/customfields.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://localhost:8889/api/configuration/customfields.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/customfields.yaml

Allows updating the current custom fields configuration.

Body parameter

Parameters

Name Type Description In Required
body CustomFieldsConfiguration Model representation of the custom fields configuration body false

Example responses

400 Response

Responses

Status Meaning Description Schema
200 OK Custom fields configuration updated. None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Custom fields configuration not found ErrorResponse

Database Backup

Allows you to trigger database backups and download them once they are ready.

triggerBackup

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/database/backup \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/database/backup HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/database/backup',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "callback": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/database/backup',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/database/backup',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/database/backup', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/database/backup");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/database/backup", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /database/backup

Trigger database backup

Body parameter

{
  "callback": "string"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
body TriggerDatabaseBackupRequest Database backup request body false

Example responses

202 Response

{
  "state": "QUEUED"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
202 Accepted Database backup triggered TriggerDatabaseBackupResponse
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

downloadBackup

Code samples

# You can also use wget
curl -X GET https://localhost:8889/api/database/backup/{databaseBackupVersion} \
  -H 'Accept: application/vnd.mambu.v2+zip'

GET https://localhost:8889/api/database/backup/{databaseBackupVersion} HTTP/1.1
Host: localhost:8889
Accept: application/vnd.mambu.v2+zip

var headers = {
  'Accept':'application/vnd.mambu.v2+zip'

};

$.ajax({
  url: 'https://localhost:8889/api/database/backup/{databaseBackupVersion}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/vnd.mambu.v2+zip'

};

fetch('https://localhost:8889/api/database/backup/{databaseBackupVersion}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+zip'
}

result = RestClient.get 'https://localhost:8889/api/database/backup/{databaseBackupVersion}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+zip'
}

r = requests.get('https://localhost:8889/api/database/backup/{databaseBackupVersion}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/database/backup/{databaseBackupVersion}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+zip"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://localhost:8889/api/database/backup/{databaseBackupVersion}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /database/backup/{databaseBackupVersion}

Download database backup

Parameters

Name Type Description In Required
databaseBackupVersion string Version of the database backup path true

Enumerated Values

Parameter Value
databaseBackupVersion LATEST

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK Database backup downloaded string
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Headers

Status Header Type Format Description
200 Content-Disposition string The format is - attachment; filename="{static_backup_file_name}.zip"
200 Content-Length integer int32 The length of the request body
200 Last-Modified string date-time Start date from last completed backup process

Deposit Products

batchUpdate

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/depositproducts/{depositProductId}:batchUpdate \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/depositproducts/{depositProductId}:batchUpdate HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/depositproducts/{depositProductId}:batchUpdate',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "action": "UPDATE_INTEREST_SETTINGS"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/depositproducts/{depositProductId}:batchUpdate',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/depositproducts/{depositProductId}:batchUpdate',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/depositproducts/{depositProductId}:batchUpdate', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/depositproducts/{depositProductId}:batchUpdate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/depositproducts/{depositProductId}:batchUpdate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /depositproducts/{depositProductId}:batchUpdate

Perform batch update action for the specified deposit product

Body parameter

{
  "action": "UPDATE_INTEREST_SETTINGS"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
depositProductId string The id or encoded key of the deposit product to perform batch update action path true
body DepositProductAction Allows specifying the batch update action details for a deposit product body true

Example responses

202 Response

{
  "state": "QUEUED"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
202 Accepted Batch update action accepted for the specified deposit product DepositProductActionResponse
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Deposit product not found ErrorResponse

create

Code samples

# You can also use wget
curl -X POST https://localhost:8889/api/depositproducts \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST https://localhost:8889/api/depositproducts HTTP/1.1
Host: localhost:8889
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: 'https://localhost:8889/api/depositproducts',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string"
      }
    ],
    "interestAccruedAccountingMethod": "NONE"
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currencySettings": {
    "currencies": [
      {
        "code": "AED"
      }
    ]
  },
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string"
          }
        ],
        "amount": 0,
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "feeApplication": "REQUIRED",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "state": "ACTIVE",
        "trigger": "MANUAL"
      }
    ]
  },
  "id": "string",
  "interestSettings": {
    "collectInterestWhenLocked": true,
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestPaidIntoAccount": true,
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "accrueInterestAfterMaturity": true,
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ]
    },
    "maximumBalance": 0
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "maxWithdrawalAmount": 0,
    "openingBalance": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "recommendedDepositAmount": 0
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "maturitySettings": {
    "maturityPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "maturityPeriodUnit": "DAYS"
  },
  "name": "string",
  "newAccountSettings": {
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "overdraftInterestSettings": {
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestRateSettings": {
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "allowTechnicalOverdraft": true,
    "maxOverdraftLimit": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "withholdingTaxEnabled": true
  },
  "templates": [
    {
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "CURRENT_ACCOUNT"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

fetch('https://localhost:8889/api/depositproducts',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://localhost:8889/api/depositproducts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('https://localhost:8889/api/depositproducts', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://localhost:8889/api/depositproducts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://localhost:8889/api/depositproducts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /depositproducts

Create a new deposit product

Body parameter

{
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string"
      }
    ],
    "interestAccruedAccountingMethod": "NONE"
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currencySettings": {
    "currencies": [
      {
        "code": "AED"
      }
    ]
  },
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string"
          }
        ],
        "amount": 0,
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "feeApplication": "REQUIRED",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "state": "ACTIVE",
        "trigger": "MANUAL"
      }
    ]
  },
  "id": "string",
  "interestSettings": {
    "collectInterestWhenLocked": true,
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestPaidIntoAccount": true,
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "accrueInterestAfterMaturity": true,
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ]
    },
    "maximumBalance": 0
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "maxWithdrawalAmount": 0,
    "openingBalance": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "recommendedDepositAmount": 0
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "maturitySettings": {
    "maturityPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "maturityPeriodUnit": "DAYS"
  },
  "name": "string",
  "newAccountSettings": {
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "overdraftInterestSettings": {
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestRateSettings": {
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "allowTechnicalOverdraft": true,
    "maxOverdraftLimit": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "withholdingTaxEnabled": true
  },
  "templates": [
    {
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "CURRENT_ACCOUNT"
}

Parameters

Name Type Description In Required
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header false
body DepositProduct Deposit product to be created body true

Example responses

201 Response

{
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "encodedKey": "string",
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string"
      }
    ],
    "interestAccruedAccountingMethod": "NONE"
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currencySettings": {
    "currencies": [
      {
        "code": "AED"
      }
    ]
  },
  "encodedKey": "string",
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "encodedKey": "string",
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string"
          }
        ],
        "amount": 0,
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "feeApplication": "REQUIRED",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "state": "ACTIVE",
        "trigger": "MANUAL"
      }
    ]
  },
  "id": "string",
  "interestSettings": {
    "collectInterestWhenLocked": true,
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestPaidIntoAccount": true,
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "accrueInterestAfterMaturity": true,
      "encodedKey": "string",
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ]
    },
    "maximumBalance": 0
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "maxWithdrawalAmount": 0,
    "openingBalance": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "recommendedDepositAmount": 0
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "maturitySettings": {
    "maturityPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "maturityPeriodUnit": "DAYS"
  },
  "name": "string",
  "newAccountSettings": {
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "overdraftInterestSettings": {
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestRateSettings": {
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "allowTechnicalOverdraft": true,
    "maxOverdraftLimit": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "withholdingTaxEnabled": true
  },
  "templates": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "CURRENT_ACCOUNT"
}