{"openapi":"3.0.3","info":{"description":"REST API for the Lokta lending platform.\nEvery request must carry a tenant identifier and HTTP basic credentials.","title":"Lokta Lending Platform API","version":"2026.11.0"},"servers":[{"url":"/lokta-lms/api"}],"security":[{"TenantIdentifier":[],"basicAuth":[]}],"tags":[{"name":"Authentication","description":"How a session begins: HTTP Basic authentication against the tenant."},{"name":"User Management","description":"Application user accounts: creation, updates and passwords."},{"name":"Roles & Permissions","description":"What a user may do: roles and the permission catalogue."},{"name":"Staff","description":"Branch staff and loan officers."},{"name":"Codes & Code Values","description":"System and custom lookup lists that dropdowns are built from."},{"name":"Customers","description":"The people and businesses who borrow: onboarding, identifiers, addresses, family members, charges and search."},{"name":"Loan Accounts","description":"A loan from application through closure: create, approve, disburse, and manage the account lifecycle."},{"name":"Loan Transactions","description":"Money movements on a loan: repayments, adjustments, waivers, write-offs and their undo commands."},{"name":"Loan Products","description":"The lending catalogue: product definitions, terms, charges and accounting mappings."},{"name":"Charges","description":"Fee and penalty definitions that products and accounts draw from."},{"name":"Tax on Charges","description":"Tax components and tax groups applied through charges."},{"name":"Documents","description":"Files attached to platform entities: upload, list, download."},{"name":"Payment Types","description":"The payment instrument catalogue: cash, transfer, cheque and friends."},{"name":"Reports","description":"The reporting engine: catalogue, parameters, and execution."}],"paths":{"/v1/authentication":{"post":{"description":"Authenticates the credentials provided and returns the set roles and permissions allowed.","operationId":"authenticate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostAuthenticationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostAuthenticationResponse"}}},"description":"OK"},"400":{"description":"Unauthenticated. Please login"},"403":{"description":"Password reset required"}},"summary":"Verify authentication","tags":["Authentication"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/authentication' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"password\": \"password\",\n  \"username\": \"admin\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/authentication\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"password\": \"password\",\n      \"username\": \"admin\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/authentication\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"password\": \"password\",\n    \"username\": \"admin\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/authentication\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"password\": \"password\",\n          \"username\": \"admin\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"password\": \"password\",\n  \"username\": \"admin\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/authentication\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/charges":{"get":{"description":"Returns the list of defined charges.\n\nExample Requests:\n\ncharges","operationId":"retrieveAllCharges","responses":{"default":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChargeData"}}}},"description":"default response"}},"summary":"Retrieve Charges","tags":["Charges"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/charges' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/charges\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/charges\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/charges\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/charges\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Define a new charge that can later be associated with loans and savings through their respective product definitions or directly on each account instance.","operationId":"createCharge","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostChargesResponse"}}},"description":"OK"}},"summary":"Create/Define a Charge","tags":["Charges"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/charges' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"active\": true,\n  \"amount\": 0,\n  \"capitalizable\": true,\n  \"capitalizeByDefault\": true,\n  \"chargeAppliesTo\": 1,\n  \"chargeCalculationType\": 1,\n  \"chargePaymentMode\": 1,\n  \"chargeTimeType\": 1,\n  \"code\": \"string\",\n  \"currencyCode\": \"string\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/charges\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"active\": True,\n      \"amount\": 0,\n      \"capitalizable\": True,\n      \"capitalizeByDefault\": True,\n      \"chargeAppliesTo\": 1,\n      \"chargeCalculationType\": 1,\n      \"chargePaymentMode\": 1,\n      \"chargeTimeType\": 1,\n      \"code\": \"string\",\n      \"currencyCode\": \"string\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/charges\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"active\": true,\n    \"amount\": 0,\n    \"capitalizable\": true,\n    \"capitalizeByDefault\": true,\n    \"chargeAppliesTo\": 1,\n    \"chargeCalculationType\": 1,\n    \"chargePaymentMode\": 1,\n    \"chargeTimeType\": 1,\n    \"code\": \"string\",\n    \"currencyCode\": \"string\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/charges\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"active\": true,\n          \"amount\": 0,\n          \"capitalizable\": true,\n          \"capitalizeByDefault\": true,\n          \"chargeAppliesTo\": 1,\n          \"chargeCalculationType\": 1,\n          \"chargePaymentMode\": 1,\n          \"chargeTimeType\": 1,\n          \"code\": \"string\",\n          \"currencyCode\": \"string\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"active\": true,\n  \"amount\": 0,\n  \"capitalizable\": true,\n  \"capitalizeByDefault\": true,\n  \"chargeAppliesTo\": 1,\n  \"chargeCalculationType\": 1,\n  \"chargePaymentMode\": 1,\n  \"chargeTimeType\": 1,\n  \"code\": \"string\",\n  \"currencyCode\": \"string\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/charges\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/charges/template":{"get":{"description":"This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:\n\nField Defaults\nAllowed description Lists\nExample Request:\n\ncharges/template\n","operationId":"retrieveTemplateCharge","parameters":[{"in":"query","name":"chargeAppliesTo","schema":{"type":"integer","format":"int64"}},{"in":"query","name":"chargeTimeType","schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargeData"}}},"description":"default response"}},"summary":"Retrieve Charge Template","tags":["Charges"],"x-alternative-operation-id":"retrieveNewChargeDetails","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/charges/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/charges/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/charges/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/charges/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/charges/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/charges/{chargeId}":{"delete":{"description":"Deletes a Charge.","operationId":"deleteCharge","parameters":[{"description":"chargeId","in":"path","name":"chargeId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteChargesChargeIdResponse"}}},"description":"OK"}},"summary":"Delete a Charge","tags":["Charges"],"x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"description":"Returns the details of a defined Charge.\n\nExample Requests:\n\ncharges/1","operationId":"retrieveOneCharge","parameters":[{"description":"chargeId","in":"path","name":"chargeId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetChargesResponse"}}},"description":"OK"}},"summary":"Retrieve a Charge","tags":["Charges"],"x-alternative-operation-id":"retrieveCharge","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Updates the details of a Charge.","operationId":"updateCharge","parameters":[{"description":"chargeId","in":"path","name":"chargeId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutChargesChargeIdResponse"}}},"description":"OK"}},"summary":"Update a Charge","tags":["Charges"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"active\": true,\n  \"amount\": 0,\n  \"capitalizable\": true,\n  \"capitalizeByDefault\": true,\n  \"chargeAppliesTo\": 1,\n  \"chargeCalculationType\": 1,\n  \"chargePaymentMode\": 1,\n  \"chargeTimeType\": 1,\n  \"code\": \"string\",\n  \"currencyCode\": \"string\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"active\": True,\n      \"amount\": 0,\n      \"capitalizable\": True,\n      \"capitalizeByDefault\": True,\n      \"chargeAppliesTo\": 1,\n      \"chargeCalculationType\": 1,\n      \"chargePaymentMode\": 1,\n      \"chargeTimeType\": 1,\n      \"code\": \"string\",\n      \"currencyCode\": \"string\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"active\": true,\n    \"amount\": 0,\n    \"capitalizable\": true,\n    \"capitalizeByDefault\": true,\n    \"chargeAppliesTo\": 1,\n    \"chargeCalculationType\": 1,\n    \"chargePaymentMode\": 1,\n    \"chargeTimeType\": 1,\n    \"code\": \"string\",\n    \"currencyCode\": \"string\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"active\": true,\n          \"amount\": 0,\n          \"capitalizable\": true,\n          \"capitalizeByDefault\": true,\n          \"chargeAppliesTo\": 1,\n          \"chargeCalculationType\": 1,\n          \"chargePaymentMode\": 1,\n          \"chargeTimeType\": 1,\n          \"code\": \"string\",\n          \"currencyCode\": \"string\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"active\": true,\n  \"amount\": 0,\n  \"capitalizable\": true,\n  \"capitalizeByDefault\": true,\n  \"chargeAppliesTo\": 1,\n  \"chargeCalculationType\": 1,\n  \"chargePaymentMode\": 1,\n  \"chargeTimeType\": 1,\n  \"code\": \"string\",\n  \"currencyCode\": \"string\"\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/charges/{chargeId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/client/addresses/template":{"get":{"operationId":"retrieveTemplateClientAddress","responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressData"}}},"description":"default response"}},"summary":"Retrieve client address template","tags":["Customers"],"x-alternative-operation-id":"getAddressesTemplate","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/client/addresses/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/client/addresses/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/client/addresses/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/client/addresses/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/client/addresses/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/client/{clientid}/addresses":{"get":{"description":"Example Requests:\n\nclient/1/addresses\n\n\nclients/1/addresses?status=false,true&&type=1,2,3","operationId":"retrieveAllClientAddresses","parameters":[{"description":"status","in":"query","name":"status","schema":{"type":"string"}},{"description":"type","in":"query","name":"type","schema":{"type":"integer","format":"int64"}},{"description":"clientId","in":"path","name":"clientid","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressData"}}}},"description":"default response"}},"summary":"List all addresses for a Client","tags":["Customers"],"x-alternative-operation-id":"getAddresses_1","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Mandatory Fields : \ntype and clientId","operationId":"createClientAddress","parameters":[{"description":"type","in":"query","name":"type","schema":{"type":"integer","format":"int64"}},{"description":"clientId","in":"path","name":"clientid","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientAddressRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostClientClientIdAddressesResponse"}}},"description":"OK"}},"summary":"Create an address for a Client","tags":["Customers"],"x-alternative-operation-id":"addClientAddress","x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"addressId\": 1,\n  \"addressLine1\": \"string\",\n  \"addressLine2\": \"string\",\n  \"addressLine3\": \"string\",\n  \"addressTypeId\": 1,\n  \"city\": \"string\",\n  \"countryId\": 1,\n  \"countyDistrict\": \"string\",\n  \"createdBy\": \"string\",\n  \"createdOn\": \"string\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"addressId\": 1,\n      \"addressLine1\": \"string\",\n      \"addressLine2\": \"string\",\n      \"addressLine3\": \"string\",\n      \"addressTypeId\": 1,\n      \"city\": \"string\",\n      \"countryId\": 1,\n      \"countyDistrict\": \"string\",\n      \"createdBy\": \"string\",\n      \"createdOn\": \"string\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"addressId\": 1,\n    \"addressLine1\": \"string\",\n    \"addressLine2\": \"string\",\n    \"addressLine3\": \"string\",\n    \"addressTypeId\": 1,\n    \"city\": \"string\",\n    \"countryId\": 1,\n    \"countyDistrict\": \"string\",\n    \"createdBy\": \"string\",\n    \"createdOn\": \"string\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"addressId\": 1,\n          \"addressLine1\": \"string\",\n          \"addressLine2\": \"string\",\n          \"addressLine3\": \"string\",\n          \"addressTypeId\": 1,\n          \"city\": \"string\",\n          \"countryId\": 1,\n          \"countyDistrict\": \"string\",\n          \"createdBy\": \"string\",\n          \"createdOn\": \"string\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"addressId\": 1,\n  \"addressLine1\": \"string\",\n  \"addressLine2\": \"string\",\n  \"addressLine3\": \"string\",\n  \"addressTypeId\": 1,\n  \"city\": \"string\",\n  \"countryId\": 1,\n  \"countyDistrict\": \"string\",\n  \"createdBy\": \"string\",\n  \"createdOn\": \"string\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"All the address fields can be updated by using update client address API\n\nMandatory Fields\ntype and addressId","operationId":"updateClientAddress","parameters":[{"description":"clientId","in":"path","name":"clientid","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientAddressRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutClientClientIdAddressesResponse"}}},"description":"OK"}},"summary":"Update an address for a Client","tags":["Customers"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"addressId\": 1,\n  \"addressLine1\": \"string\",\n  \"addressLine2\": \"string\",\n  \"addressLine3\": \"string\",\n  \"addressTypeId\": 1,\n  \"city\": \"string\",\n  \"countryId\": 1,\n  \"countyDistrict\": \"string\",\n  \"createdBy\": \"string\",\n  \"createdOn\": \"string\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"addressId\": 1,\n      \"addressLine1\": \"string\",\n      \"addressLine2\": \"string\",\n      \"addressLine3\": \"string\",\n      \"addressTypeId\": 1,\n      \"city\": \"string\",\n      \"countryId\": 1,\n      \"countyDistrict\": \"string\",\n      \"createdBy\": \"string\",\n      \"createdOn\": \"string\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"addressId\": 1,\n    \"addressLine1\": \"string\",\n    \"addressLine2\": \"string\",\n    \"addressLine3\": \"string\",\n    \"addressTypeId\": 1,\n    \"city\": \"string\",\n    \"countryId\": 1,\n    \"countyDistrict\": \"string\",\n    \"createdBy\": \"string\",\n    \"createdOn\": \"string\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"addressId\": 1,\n          \"addressLine1\": \"string\",\n          \"addressLine2\": \"string\",\n          \"addressLine3\": \"string\",\n          \"addressTypeId\": 1,\n          \"city\": \"string\",\n          \"countryId\": 1,\n          \"countyDistrict\": \"string\",\n          \"createdBy\": \"string\",\n          \"createdOn\": \"string\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"addressId\": 1,\n  \"addressLine1\": \"string\",\n  \"addressLine2\": \"string\",\n  \"addressLine3\": \"string\",\n  \"addressTypeId\": 1,\n  \"city\": \"string\",\n  \"countryId\": 1,\n  \"countyDistrict\": \"string\",\n  \"createdBy\": \"string\",\n  \"createdOn\": \"string\"\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/client/{clientid}/addresses\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/clients":{"get":{"description":"The list capability of clients can support pagination and sorting.\n\nExample Requests:\n\nclients\n\nclients?fields=displayName,officeName,timeline\n\nclients?offset=10&limit=50\n\nclients?orderBy=displayName&sortOrder=DESC","operationId":"retrieveAllClients","parameters":[{"description":"officeId","in":"query","name":"officeId","schema":{"type":"integer","format":"int64"}},{"description":"externalId","in":"query","name":"externalId","schema":{"type":"string"}},{"description":"displayName","in":"query","name":"displayName","schema":{"type":"string"}},{"description":"firstName","in":"query","name":"firstName","schema":{"type":"string"}},{"description":"lastName","in":"query","name":"lastName","schema":{"type":"string"}},{"description":"status","in":"query","name":"status","schema":{"type":"string"}},{"description":"underHierarchy","in":"query","name":"underHierarchy","schema":{"type":"string"}},{"description":"offset","in":"query","name":"offset","schema":{"type":"integer","format":"int32"}},{"description":"limit","in":"query","name":"limit","schema":{"type":"integer","format":"int32"}},{"description":"orderBy","in":"query","name":"orderBy","schema":{"type":"string"}},{"description":"sortOrder","in":"query","name":"sortOrder","schema":{"type":"string"}},{"description":"orphansOnly","in":"query","name":"orphansOnly","schema":{"type":"boolean"}},{"in":"query","name":"legalForm","schema":{"type":"integer","format":"int32"}},{"description":"staffId","in":"query","name":"staffId","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetClientsResponse"}}},"description":"OK"}},"summary":"List Clients","tags":["Customers"],"x-alternative-operation-id":"retrieveAll_21","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/clients' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/clients\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/clients\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Note:\n\n1. You can enter either:firstname/middlename/lastname - for a person (middlename is optional) OR fullname - for a business or organisation (or person known by one name).\n\n2.If address is enable(enable-address=true), then additional field called address has to be passed.\n\nMandatory Fields: firstname and lastname OR fullname, officeId, active=true and activationDate OR active=false, if(address enabled) address\n\nOptional Fields: groupId, externalId, accountNo, staffId, mobileNo, savingsProductId, genderId, clientTypeId, clientClassificationId","operationId":"createClient","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostClientsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostClientsResponse"}}},"description":"OK"}},"summary":"Create a Client","tags":["Customers"],"x-alternative-operation-id":"create_6","x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/clients' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"activationDate\": \"04 March 2009\",\n  \"active\": true,\n  \"address\": [\n    {\n      \"addressId\": 1,\n      \"addressLine1\": \"string\",\n      \"addressLine2\": \"string\",\n      \"addressLine3\": \"string\"\n    }\n  ],\n  \"datatables\": [\n    {\n      \"data\": \"data\",\n      \"registeredTableName\": \"Client Beneficiary information\"\n    }\n  ],\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"dateOfBirth\": \"19 August 2026\",\n  \"emailAddress\": \"test@test.com\",\n  \"externalId\": \"123\",\n  \"firstname\": \"Client_FirstName\",\n  \"fullname\": \"Client of group\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/clients\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"activationDate\": \"04 March 2009\",\n      \"active\": True,\n      \"address\": [\n        {\n          \"addressId\": 1,\n          \"addressLine1\": \"string\",\n          \"addressLine2\": \"string\",\n          \"addressLine3\": \"string\"\n        }\n      ],\n      \"datatables\": [\n        {\n          \"data\": \"data\",\n          \"registeredTableName\": \"Client Beneficiary information\"\n        }\n      ],\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"dateOfBirth\": \"19 August 2026\",\n      \"emailAddress\": \"test@test.com\",\n      \"externalId\": \"123\",\n      \"firstname\": \"Client_FirstName\",\n      \"fullname\": \"Client of group\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"activationDate\": \"04 March 2009\",\n    \"active\": true,\n    \"address\": [\n      {\n        \"addressId\": 1,\n        \"addressLine1\": \"string\",\n        \"addressLine2\": \"string\",\n        \"addressLine3\": \"string\"\n      }\n    ],\n    \"datatables\": [\n      {\n        \"data\": \"data\",\n        \"registeredTableName\": \"Client Beneficiary information\"\n      }\n    ],\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"dateOfBirth\": \"19 August 2026\",\n    \"emailAddress\": \"test@test.com\",\n    \"externalId\": \"123\",\n    \"firstname\": \"Client_FirstName\",\n    \"fullname\": \"Client of group\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"activationDate\": \"04 March 2009\",\n          \"active\": true,\n          \"address\": [\n            {\n              \"addressId\": 1,\n              \"addressLine1\": \"string\",\n              \"addressLine2\": \"string\",\n              \"addressLine3\": \"string\"\n            }\n          ],\n          \"datatables\": [\n            {\n              \"data\": \"data\",\n              \"registeredTableName\": \"Client Beneficiary information\"\n            }\n          ],\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"dateOfBirth\": \"19 August 2026\",\n          \"emailAddress\": \"test@test.com\",\n          \"externalId\": \"123\",\n          \"firstname\": \"Client_FirstName\",\n          \"fullname\": \"Client of group\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"activationDate\": \"04 March 2009\",\n  \"active\": true,\n  \"address\": [\n    {\n      \"addressId\": 1,\n      \"addressLine1\": \"string\",\n      \"addressLine2\": \"string\",\n      \"addressLine3\": \"string\"\n    }\n  ],\n  \"datatables\": [\n    {\n      \"data\": \"data\",\n      \"registeredTableName\": \"Client Beneficiary information\"\n    }\n  ],\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"dateOfBirth\": \"19 August 2026\",\n  \"emailAddress\": \"test@test.com\",\n  \"externalId\": \"123\",\n  \"firstname\": \"Client_FirstName\",\n  \"fullname\": \"Client of group\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/clients\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/clients/template":{"get":{"description":"This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:\n\nField Defaults\nAllowed Value Lists\n\nExample Request:\n\nclients/template","operationId":"retrieveTemplateClient","parameters":[{"description":"officeId","in":"query","name":"officeId","schema":{"type":"integer","format":"int64"}},{"description":"commandParam","in":"query","name":"commandParam","schema":{"type":"string"}},{"description":"staffInSelectedOfficeOnly","in":"query","name":"staffInSelectedOfficeOnly","schema":{"type":"boolean","default":false}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetClientsTemplateResponse"}}},"description":"OK"}},"summary":"Retrieve Client Details Template","tags":["Customers"],"x-alternative-operation-id":"retrieveTemplate_5","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/clients/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/clients/{clientId}":{"delete":{"description":"If a client is in Pending state, you are allowed to Delete it. The delete is a 'hard delete' and cannot be recovered from. Once clients become active or have loans or savings associated with them, you cannot delete the client but you may Close the client if they have left the program.","operationId":"deleteClient","parameters":[{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteClientsClientIdResponse"}}},"description":"OK"}},"summary":"Delete a Client","tags":["Customers"],"x-alternative-operation-id":"delete_8","x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"description":"Example Requests:\n\nclients/1\n\n\nclients/1?template=true\n\n\nclients/1?fields=id,displayName,officeName","operationId":"retrieveOneClient","parameters":[{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"staffInSelectedOfficeOnly","in":"query","name":"staffInSelectedOfficeOnly","schema":{"type":"boolean","default":false}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetClientsClientIdResponse"}}},"description":"OK"}},"summary":"Retrieve a Client","tags":["Customers"],"x-alternative-operation-id":"retrieveOne_11","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Note: You can update any of the basic attributes of a client (but not its associations) using this API.\n\nChanging the relationship between a client and its office is not supported through this API. An API specific to handling transfers of clients between offices is available for the same.\n\nThe relationship between a client and a group must be removed through the Groups API.","operationId":"updateClient","parameters":[{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutClientsClientIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutClientsClientIdResponse"}}},"description":"OK"}},"summary":"Update a Client","tags":["Customers"],"x-alternative-operation-id":"update_10","x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"externalId\": \"786444UUUYYH7\",\n  \"firstname\": \"Client_FirstName\",\n  \"lastname\": \"Client_LastName\",\n  \"resourceExternalId\": \"123-456\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"externalId\": \"786444UUUYYH7\",\n      \"firstname\": \"Client_FirstName\",\n      \"lastname\": \"Client_LastName\",\n      \"resourceExternalId\": \"123-456\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"externalId\": \"786444UUUYYH7\",\n    \"firstname\": \"Client_FirstName\",\n    \"lastname\": \"Client_LastName\",\n    \"resourceExternalId\": \"123-456\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"externalId\": \"786444UUUYYH7\",\n          \"firstname\": \"Client_FirstName\",\n          \"lastname\": \"Client_LastName\",\n          \"resourceExternalId\": \"123-456\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"externalId\": \"786444UUUYYH7\",\n  \"firstname\": \"Client_FirstName\",\n  \"lastname\": \"Client_LastName\",\n  \"resourceExternalId\": \"123-456\"\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/clients/{clientId}/accounts":{"get":{"description":"An example of how a loan portfolio summary can be provided. This is requested in a specific use case of the community application.\nIt is quite reasonable to add resources like this to simplify User Interface development.\n\nExample Requests:\n \nclients/1/accounts\n\nclients/1/accounts?fields=loanAccounts,savingsAccounts","operationId":"retrieveAllClientAccounts","parameters":[{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetClientsClientIdAccountsResponse"}}},"description":"OK"},"400":{"description":"Bad Request"}},"summary":"Retrieve client accounts overview","tags":["Customers"],"x-alternative-operation-id":"retrieveAssociatedAccounts","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/accounts' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/accounts\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/accounts\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/accounts\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/accounts\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/clients/{clientId}/familymembers":{"get":{"operationId":"retrieveAllClientFamilyMembers","parameters":[{"in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClientFamilyMembersData"}}}},"description":"default response"}},"summary":"List all client family members","tags":["Customers"],"x-alternative-operation-id":"getFamilyMembers","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"operationId":"createClientFamilyMember","parameters":[{"in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientFamilyMemberRequest"}}}},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandProcessingResult"}}},"description":"default response"}},"summary":"Add a client family member","tags":["Customers"],"x-alternative-operation-id":"addClientFamilyMembers","x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"age\": 1,\n  \"clientId\": 1,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"dateOfBirth\": \"19 August 2026\",\n  \"familyMembers\": \"string\",\n  \"firstName\": \"string\",\n  \"genderId\": 1,\n  \"id\": 1,\n  \"isDependent\": true,\n  \"lastName\": \"string\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"age\": 1,\n      \"clientId\": 1,\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"dateOfBirth\": \"19 August 2026\",\n      \"familyMembers\": \"string\",\n      \"firstName\": \"string\",\n      \"genderId\": 1,\n      \"id\": 1,\n      \"isDependent\": True,\n      \"lastName\": \"string\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"age\": 1,\n    \"clientId\": 1,\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"dateOfBirth\": \"19 August 2026\",\n    \"familyMembers\": \"string\",\n    \"firstName\": \"string\",\n    \"genderId\": 1,\n    \"id\": 1,\n    \"isDependent\": true,\n    \"lastName\": \"string\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"age\": 1,\n          \"clientId\": 1,\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"dateOfBirth\": \"19 August 2026\",\n          \"familyMembers\": \"string\",\n          \"firstName\": \"string\",\n          \"genderId\": 1,\n          \"id\": 1,\n          \"isDependent\": true,\n          \"lastName\": \"string\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"age\": 1,\n  \"clientId\": 1,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"dateOfBirth\": \"19 August 2026\",\n  \"familyMembers\": \"string\",\n  \"firstName\": \"string\",\n  \"genderId\": 1,\n  \"id\": 1,\n  \"isDependent\": true,\n  \"lastName\": \"string\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/clients/{clientId}/familymembers/template":{"get":{"operationId":"retrieveTemplateClientFamilyMember","parameters":[{"in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientFamilyMembersData"}}},"description":"default response"}},"summary":"Retrieve client family member template","tags":["Customers"],"x-alternative-operation-id":"getTemplate_2","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/clients/{clientId}/familymembers/{familyMemberId}":{"delete":{"operationId":"deleteClientFamilyMember","parameters":[{"in":"path","name":"familyMemberId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandProcessingResult"}}},"description":"default response"}},"summary":"Delete a client family member","tags":["Customers"],"x-alternative-operation-id":"deleteClientFamilyMembers","x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"operationId":"retrieveOneClientFamilyMember","parameters":[{"in":"path","name":"familyMemberId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientFamilyMembersData"}}},"description":"default response"}},"summary":"Retrieve a client family member","tags":["Customers"],"x-alternative-operation-id":"getFamilyMember","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"operationId":"updateClientFamilyMember","parameters":[{"in":"path","name":"familyMemberId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientFamilyMemberRequest"}}}},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandProcessingResult"}}},"description":"default response"}},"summary":"Update a client family member","tags":["Customers"],"x-alternative-operation-id":"updateClientFamilyMembers","x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"age\": 1,\n  \"clientId\": 1,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"dateOfBirth\": \"19 August 2026\",\n  \"familyMembers\": \"string\",\n  \"firstName\": \"string\",\n  \"genderId\": 1,\n  \"id\": 1,\n  \"isDependent\": true,\n  \"lastName\": \"string\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"age\": 1,\n      \"clientId\": 1,\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"dateOfBirth\": \"19 August 2026\",\n      \"familyMembers\": \"string\",\n      \"firstName\": \"string\",\n      \"genderId\": 1,\n      \"id\": 1,\n      \"isDependent\": True,\n      \"lastName\": \"string\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"age\": 1,\n    \"clientId\": 1,\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"dateOfBirth\": \"19 August 2026\",\n    \"familyMembers\": \"string\",\n    \"firstName\": \"string\",\n    \"genderId\": 1,\n    \"id\": 1,\n    \"isDependent\": true,\n    \"lastName\": \"string\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"age\": 1,\n          \"clientId\": 1,\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"dateOfBirth\": \"19 August 2026\",\n          \"familyMembers\": \"string\",\n          \"firstName\": \"string\",\n          \"genderId\": 1,\n          \"id\": 1,\n          \"isDependent\": true,\n          \"lastName\": \"string\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"age\": 1,\n  \"clientId\": 1,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"dateOfBirth\": \"19 August 2026\",\n  \"familyMembers\": \"string\",\n  \"firstName\": \"string\",\n  \"genderId\": 1,\n  \"id\": 1,\n  \"isDependent\": true,\n  \"lastName\": \"string\"\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/familymembers/{familyMemberId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/clients/{clientId}/identifiers":{"get":{"description":"Example Requests:\nclients/1/identifiers\n\n\nclients/1/identifiers?fields=documentKey,documentType,description","operationId":"retrieveAllClientIdentifiers","parameters":[{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClientIdentifierData"}}}},"description":"default response"}},"summary":"List all Identifiers for a Client","tags":["Customers"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Mandatory Fields\ndocumentKey, documentTypeId ","operationId":"createClientIdentifier","parameters":[{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostClientsClientIdIdentifiersRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostClientsClientIdIdentifiersResponse"}}},"description":"OK"}},"summary":"Create an Identifier for a Client","tags":["Customers"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"description\": \"Document has been verified\",\n  \"documentKey\": \"KA-54677\",\n  \"documentTypeId\": 1,\n  \"status\": \"Active\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"description\": \"Document has been verified\",\n      \"documentKey\": \"KA-54677\",\n      \"documentTypeId\": 1,\n      \"status\": \"Active\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"description\": \"Document has been verified\",\n    \"documentKey\": \"KA-54677\",\n    \"documentTypeId\": 1,\n    \"status\": \"Active\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"description\": \"Document has been verified\",\n          \"documentKey\": \"KA-54677\",\n          \"documentTypeId\": 1,\n          \"status\": \"Active\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"description\": \"Document has been verified\",\n  \"documentKey\": \"KA-54677\",\n  \"documentTypeId\": 1,\n  \"status\": \"Active\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/clients/{clientId}/identifiers/template":{"get":{"description":"This is a convenience resource useful for building maintenance user interface screens for client applications. The template data returned consists of any or all of:\n\n Field Defaults\n Allowed description Lists\n\n\nExample Request:\nclients/1/identifiers/template","operationId":"retrieveTemplateClientIdentifier","parameters":[{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientIdentifierData"}}},"description":"default response"}},"summary":"Retrieve Client Identifier Details Template","tags":["Customers"],"x-alternative-operation-id":"newClientIdentifierDetails","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/clients/{clientId}/identifiers/{identifierId}":{"delete":{"description":"Deletes a Client Identifier","operationId":"deleteClientIdentifier","parameters":[{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"identifierId","in":"path","name":"identifierId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteClientsClientIdIdentifiersIdentifierIdResponse"}}},"description":"OK"}},"summary":"Delete a Client Identifier","tags":["Customers"],"x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"description":"Example Requests:\nclients/1/identifier/2\n\n\nclients/1/identifier/2?template=true\n\nclients/1/identifiers/2?fields=documentKey,documentType,description","operationId":"retrieveOneClientIdentifier","parameters":[{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"identifierId","in":"path","name":"identifierId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetClientsClientIdIdentifiersResponse"}}},"description":"OK"}},"summary":"Retrieve a Client Identifier","tags":["Customers"],"x-alternative-operation-id":"retrieveClientIdentifiers","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Updates a Client Identifier","operationId":"updateClientIdentifier","parameters":[{"description":"clientId","in":"path","name":"clientId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"identifierId","in":"path","name":"identifierId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientIdentifierRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutClientsClientIdIdentifiersIdentifierIdResponse"}}},"description":"OK"}},"summary":"Update a Client Identifier","tags":["Customers"],"x-alternative-operation-id":"updateClientIdentifer","x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"description\": \"Document has been verified\",\n  \"documentKey\": \"KA-54677\",\n  \"documentTypeId\": 1,\n  \"status\": \"Active\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"description\": \"Document has been verified\",\n      \"documentKey\": \"KA-54677\",\n      \"documentTypeId\": 1,\n      \"status\": \"Active\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"description\": \"Document has been verified\",\n    \"documentKey\": \"KA-54677\",\n    \"documentTypeId\": 1,\n    \"status\": \"Active\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"description\": \"Document has been verified\",\n          \"documentKey\": \"KA-54677\",\n          \"documentTypeId\": 1,\n          \"status\": \"Active\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"description\": \"Document has been verified\",\n  \"documentKey\": \"KA-54677\",\n  \"documentTypeId\": 1,\n  \"status\": \"Active\"\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/clients/{clientId}/identifiers/{identifierId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/codes":{"get":{"description":"Returns the list of codes.\n\nExample Requests:\n\ncodes","operationId":"retrieveAllCodes","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetCodesResponse"}}}},"description":"OK"}},"summary":"Retrieve Codes","tags":["Codes & Code Values"],"x-alternative-operation-id":"retrieveCodes","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/codes' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/codes\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/codes\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/codes\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/codes\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Creates a code. Codes created through api are always 'user defined' and so system defined is marked as false.","operationId":"createCode","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostCodesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostCodesResponse"}}},"description":"OK"}},"summary":"Create a Code","tags":["Codes & Code Values"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/codes' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"name\": \"MyNewCode\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/codes\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"name\": \"MyNewCode\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/codes\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"name\": \"MyNewCode\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/codes\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"name\": \"MyNewCode\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"name\": \"MyNewCode\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/codes\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/codes/name/{codeName}":{"get":{"description":"Returns the details of a Code.\n\nExample Requests:\n\ncodes/1","operationId":"retrieveOneCodeByName","parameters":[{"description":"codeName","in":"path","name":"codeName","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCodesResponse"}}},"description":"OK"}},"summary":"Retrieve a Code","tags":["Codes & Code Values"],"x-alternative-operation-id":"retrieveCodeByName","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/codes/name/{codeName}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/codes/name/{codeName}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/codes/name/{codeName}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/codes/name/{codeName}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/codes/name/{codeName}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/codes/name/{codeName}/codevalues":{"get":{"description":"Returns the list of Code Values for a given Code\n\nExample Requests:\n\ncodes/1/codevalues","operationId":"retrieveAllCodeValuesByCodeName","parameters":[{"description":"codeName","in":"path","name":"codeName","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetCodeValuesDataResponse"}}}},"description":"A List of code values for a given code"}},"summary":"List Code Values","tags":["Codes & Code Values"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/codes/name/{codeName}/codevalues' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/codes/name/{codeName}/codevalues\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/codes/name/{codeName}/codevalues\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/codes/name/{codeName}/codevalues\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/codes/name/{codeName}/codevalues\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/codes/{codeId}":{"delete":{"description":"Deletes a code if it is not system defined.","operationId":"deleteCode","parameters":[{"description":"codeId","in":"path","name":"codeId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCodesResponse"}}},"description":"OK"}},"summary":"Delete a Code","tags":["Codes & Code Values"],"x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/codes/{codeId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"description":"Returns the details of a Code.\n\nExample Requests:\n\ncodes/1","operationId":"retrieveOneCode","parameters":[{"description":"codeId","in":"path","name":"codeId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCodesResponse"}}},"description":"OK"}},"summary":"Retrieve a Code","tags":["Codes & Code Values"],"x-alternative-operation-id":"retrieveCode","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/codes/{codeId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Updates the details of a code if it is not system defined.","operationId":"updateCode","parameters":[{"description":"codeId","in":"path","name":"codeId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutCodesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutCodesResponse"}}},"description":"OK"}},"summary":"Update a Code","tags":["Codes & Code Values"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/codes/{codeId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"name\": \"MyNewCode(changed)\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"name\": \"MyNewCode(changed)\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"name\": \"MyNewCode(changed)\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"name\": \"MyNewCode(changed)\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"name\": \"MyNewCode(changed)\"\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/codes/{codeId}/codevalues":{"get":{"description":"Returns the list of Code Values for a given Code\n\nExample Requests:\n\ncodes/1/codevalues","operationId":"retrieveAllCodeValues","parameters":[{"description":"codeId","in":"path","name":"codeId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetCodeValuesDataResponse"}}}},"description":"A List of code values for a given code"}},"summary":"List Code Values","tags":["Codes & Code Values"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/codes/{codeId}/codevalues' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}/codevalues\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}/codevalues\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}/codevalues\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/codes/{codeId}/codevalues\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loanproducts":{"get":{"description":"Lists Loan Products\n\nExample Requests:\n\nloanproducts\n\n\nloanproducts?fields=name,description,interestRateFrequencyType,amortizationType","operationId":"retrieveAllLoanProducts","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsResponse"}}}},"description":"OK"}},"summary":"List Loan Products","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loanproducts' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loanproducts\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loanproducts\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loanproducts\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loanproducts\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Depending of the Accounting Rule (accountingRule) selected, additional fields with details of the appropriate Ledger Account identifiers would need to be passed in.\n\nRefer the accounting specification for more details regarding the significance of the selected accounting rule\n\nMandatory Fields: name, shortName, currencyCode, digitsAfterDecimal, inMultiplesOf, principal, numberOfRepayments, repaymentEvery, repaymentFrequencyType, interestRatePerPeriod, interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType, transactionProcessingStrategyCode, accountingRule, isInterestRecalculationEnabled, daysInYearType, daysInMonthType\n\nOptional Fields: inArrearsTolerance, graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, graceOnArrearsAgeing, charges, paymentChannelToFundSourceMappings, feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, chargeOffReasonToExpenseAccountMappings, includeInBorrowerCycle, useBorrowerCycle,principalVariationsForBorrowerCycle, numberOfRepaymentVariationsForBorrowerCycle, interestRateVariationsForBorrowerCycle, multiDisburseLoan,maxTrancheCount, outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, principalThresholdForLastInstalment, accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, installmentAmountInMultiplesOf, allowAttributeOverrides, allowPartialPeriodInterestCalculation,dueDaysForRepaymentEvent,overDueDaysForRepaymentEvent,enableDownPayment,disbursedAmountPercentageDownPayment,enableAutoRepaymentForDownPayment,repaymentStartDateType,enableBuyDownFee\n\nAdditional Mandatory Fields for Cash(2) based accounting: fundSourceAccountId, loanPortfolioAccountId, interestOnLoanAccountId, incomeFromFeeAccountId, incomeFromPenaltyAccountId, writeOffAccountId, transfersInSuspenseAccountId, overpaymentLiabilityAccountId\n\nAdditional Mandatory Fields for periodic (3) and upfront (4)accrual accounting: fundSourceAccountId, loanPortfolioAccountId, interestOnLoanAccountId, incomeFromFeeAccountId, incomeFromPenaltyAccountId, writeOffAccountId, receivableInterestAccountId, receivableFeeAccountId, receivablePenaltyAccountId, transfersInSuspenseAccountId, overpaymentLiabilityAccountId\n\nAdditional Mandatory Fields if interest recalculation is enabled(true): interestRecalculationCompoundingMethod, rescheduleStrategyMethod, recalculationRestFrequencyType\n\nAdditional Optional Fields if interest recalculation is enabled(true): isArrearsBasedOnOriginalSchedule, preClosureInterestCalculationStrategy\n\nAdditional Optional Fields if interest recalculation is enabled(true) and recalculationRestFrequencyType is not same as repayment period: recalculationRestFrequencyInterval, recalculationRestFrequencyDate\n\nAdditional Optional Fields if interest recalculation is enabled(true) and interestRecalculationCompoundingMethod is enabled: recalculationCompoundingFrequencyType\n\nAdditional Optional Fields if interest recalculation is enabled(true) and interestRecalculationCompoundingMethod is enabled and recalculationCompoundingFrequencyType is not same as repayment period: recalculationCompoundingFrequencyInterval, recalculationCompoundingFrequencyDate\n\nAdditional Mandatory Fields if Hold Guarantee funds is enabled(true): mandatoryGuarantee\n\nAdditional Optional Fields if Hold Guarantee funds is enabled(true): minimumGuaranteeFromOwnFunds,minimumGuaranteeFromGuarantor","operationId":"createLoanProduct","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoanProductsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoanProductsResponse"}}},"description":"OK"}},"summary":"Create a Loan Product","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/loanproducts' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n  \"accountingRule\": 3,\n  \"allowApprovedDisbursedAmountsOverApplied\": true,\n  \"allowAttributeOverrides\": {\n    \"amortizationType\": true,\n    \"graceOnArrearsAgeing\": true,\n    \"graceOnPrincipalAndInterestPayment\": true,\n    \"inArrearsTolerance\": true\n  },\n  \"allowCompoundingOnEod\": false,\n  \"allowFullTermForTranche\": false,\n  \"allowPartialPeriodInterestCalculation\": true,\n  \"allowVariableInstallments\": false,\n  \"amortizationType\": 1,\n  \"buyDownExpenseAccountId\": 27\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/loanproducts\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": False,\n      \"accountingRule\": 3,\n      \"allowApprovedDisbursedAmountsOverApplied\": True,\n      \"allowAttributeOverrides\": {\n        \"amortizationType\": True,\n        \"graceOnArrearsAgeing\": True,\n        \"graceOnPrincipalAndInterestPayment\": True,\n        \"inArrearsTolerance\": True\n      },\n      \"allowCompoundingOnEod\": False,\n      \"allowFullTermForTranche\": False,\n      \"allowPartialPeriodInterestCalculation\": True,\n      \"allowVariableInstallments\": False,\n      \"amortizationType\": 1,\n      \"buyDownExpenseAccountId\": 27\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loanproducts\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n    \"accountingRule\": 3,\n    \"allowApprovedDisbursedAmountsOverApplied\": true,\n    \"allowAttributeOverrides\": {\n      \"amortizationType\": true,\n      \"graceOnArrearsAgeing\": true,\n      \"graceOnPrincipalAndInterestPayment\": true,\n      \"inArrearsTolerance\": true\n    },\n    \"allowCompoundingOnEod\": false,\n    \"allowFullTermForTranche\": false,\n    \"allowPartialPeriodInterestCalculation\": true,\n    \"allowVariableInstallments\": false,\n    \"amortizationType\": 1,\n    \"buyDownExpenseAccountId\": 27\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loanproducts\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n          \"accountingRule\": 3,\n          \"allowApprovedDisbursedAmountsOverApplied\": true,\n          \"allowAttributeOverrides\": {\n            \"amortizationType\": true,\n            \"graceOnArrearsAgeing\": true,\n            \"graceOnPrincipalAndInterestPayment\": true,\n            \"inArrearsTolerance\": true\n          },\n          \"allowCompoundingOnEod\": false,\n          \"allowFullTermForTranche\": false,\n          \"allowPartialPeriodInterestCalculation\": true,\n          \"allowVariableInstallments\": false,\n          \"amortizationType\": 1,\n          \"buyDownExpenseAccountId\": 27\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n  \"accountingRule\": 3,\n  \"allowApprovedDisbursedAmountsOverApplied\": true,\n  \"allowAttributeOverrides\": {\n    \"amortizationType\": true,\n    \"graceOnArrearsAgeing\": true,\n    \"graceOnPrincipalAndInterestPayment\": true,\n    \"inArrearsTolerance\": true\n  },\n  \"allowCompoundingOnEod\": false,\n  \"allowFullTermForTranche\": false,\n  \"allowPartialPeriodInterestCalculation\": true,\n  \"allowVariableInstallments\": false,\n  \"amortizationType\": 1,\n  \"buyDownExpenseAccountId\": 27\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/loanproducts\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loanproducts/basic-details":{"get":{"description":"Lists Loan Products with basic details to be listed","operationId":"retrieveAllLoanProductsDetails","responses":{"default":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductBasicDetailsData"}}}},"description":"default response"}},"summary":"List Loan Products with basic details","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loanproducts/basic-details' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loanproducts/basic-details\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loanproducts/basic-details\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loanproducts/basic-details\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loanproducts/basic-details\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loanproducts/template":{"get":{"description":"This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:\n\nField Defaults\nAllowed description Lists\nExample Request:\n\nloanproducts/template","operationId":"retrieveTemplateLoanProduct","parameters":[{"description":"isProductMixTemplate","in":"query","name":"isProductMixTemplate","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoanProductsTemplateResponse"}}},"description":"OK"}},"summary":"Retrieve Loan Product Details Template","tags":["Loan Products"],"x-alternative-operation-id":"retrieveTemplate_11","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loanproducts/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loanproducts/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loanproducts/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loanproducts/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loanproducts/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loanproducts/{productId}":{"get":{"description":"Retrieves a Loan Product\n\nExample Requests:\n\nloanproducts/1\n\n\nloanproducts/1?template=true\n\n\nloanproducts/1?fields=name,description,numberOfRepayments","operationId":"retrieveOneLoanProduct","parameters":[{"description":"productId","in":"path","name":"productId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoanProductsProductIdResponse"}}},"description":"OK"}},"summary":"Retrieve a Loan Product","tags":["Loan Products"],"x-alternative-operation-id":"retrieveLoanProductDetails","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Updates a Loan Product","operationId":"updateLoanProduct","parameters":[{"description":"productId","in":"path","name":"productId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutLoanProductsProductIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutLoanProductsProductIdResponse"}}},"description":"OK"}},"summary":"Update a Loan Product","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n  \"accountingRule\": 3,\n  \"allowApprovedDisbursedAmountsOverApplied\": true,\n  \"allowAttributeOverrides\": {\n    \"amortizationType\": true,\n    \"graceOnArrearsAgeing\": true,\n    \"graceOnPrincipalAndInterestPayment\": true,\n    \"inArrearsTolerance\": true\n  },\n  \"allowCompoundingOnEod\": false,\n  \"allowFullTermForTranche\": false,\n  \"allowPartialPeriodInterestCalculation\": true,\n  \"allowVariableInstallments\": false,\n  \"amortizationType\": 1,\n  \"buyDownExpenseAccountId\": 27\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": False,\n      \"accountingRule\": 3,\n      \"allowApprovedDisbursedAmountsOverApplied\": True,\n      \"allowAttributeOverrides\": {\n        \"amortizationType\": True,\n        \"graceOnArrearsAgeing\": True,\n        \"graceOnPrincipalAndInterestPayment\": True,\n        \"inArrearsTolerance\": True\n      },\n      \"allowCompoundingOnEod\": False,\n      \"allowFullTermForTranche\": False,\n      \"allowPartialPeriodInterestCalculation\": True,\n      \"allowVariableInstallments\": False,\n      \"amortizationType\": 1,\n      \"buyDownExpenseAccountId\": 27\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n    \"accountingRule\": 3,\n    \"allowApprovedDisbursedAmountsOverApplied\": true,\n    \"allowAttributeOverrides\": {\n      \"amortizationType\": true,\n      \"graceOnArrearsAgeing\": true,\n      \"graceOnPrincipalAndInterestPayment\": true,\n      \"inArrearsTolerance\": true\n    },\n    \"allowCompoundingOnEod\": false,\n    \"allowFullTermForTranche\": false,\n    \"allowPartialPeriodInterestCalculation\": true,\n    \"allowVariableInstallments\": false,\n    \"amortizationType\": 1,\n    \"buyDownExpenseAccountId\": 27\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n          \"accountingRule\": 3,\n          \"allowApprovedDisbursedAmountsOverApplied\": true,\n          \"allowAttributeOverrides\": {\n            \"amortizationType\": true,\n            \"graceOnArrearsAgeing\": true,\n            \"graceOnPrincipalAndInterestPayment\": true,\n            \"inArrearsTolerance\": true\n          },\n          \"allowCompoundingOnEod\": false,\n          \"allowFullTermForTranche\": false,\n          \"allowPartialPeriodInterestCalculation\": true,\n          \"allowVariableInstallments\": false,\n          \"amortizationType\": 1,\n          \"buyDownExpenseAccountId\": 27\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n  \"accountingRule\": 3,\n  \"allowApprovedDisbursedAmountsOverApplied\": true,\n  \"allowAttributeOverrides\": {\n    \"amortizationType\": true,\n    \"graceOnArrearsAgeing\": true,\n    \"graceOnPrincipalAndInterestPayment\": true,\n    \"inArrearsTolerance\": true\n  },\n  \"allowCompoundingOnEod\": false,\n  \"allowFullTermForTranche\": false,\n  \"allowPartialPeriodInterestCalculation\": true,\n  \"allowVariableInstallments\": false,\n  \"amortizationType\": 1,\n  \"buyDownExpenseAccountId\": 27\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loans":{"get":{"description":"The list capability of loans can support pagination and sorting.\nExample Requests:\n\nloans\n\nloans?fields=accountNo\n\nloans?offset=10&limit=50\n\nloans?orderBy=accountNo&sortOrder=DESC","operationId":"retrieveAllLoans","parameters":[{"description":"externalId","in":"query","name":"externalId","schema":{"type":"string"}},{"description":"offset","in":"query","name":"offset","schema":{"type":"integer","format":"int32"}},{"description":"limit","in":"query","name":"limit","schema":{"type":"integer","format":"int32"}},{"description":"orderBy","in":"query","name":"orderBy","schema":{"type":"string"}},{"description":"sortOrder","in":"query","name":"sortOrder","schema":{"type":"string"}},{"description":"accountNo","in":"query","name":"accountNo","schema":{"type":"string"}},{"description":"associations","in":"query","name":"associations","schema":{"type":"string"}},{"description":"clientId","in":"query","name":"clientId","schema":{"type":"integer","format":"int64"}},{"description":"status","in":"query","name":"status","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoansResponse"}}},"description":"OK"}},"summary":"List Loans","tags":["Loan Accounts"],"x-alternative-operation-id":"retrieveAll_27","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loans' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loans\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loans\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"It calculates the loan repayment Schedule\nSubmits a new loan application\nMandatory Fields: clientId, productId, principal, loanTermFrequency, loanTermFrequencyType, loanType, numberOfRepayments, repaymentEvery, repaymentFrequencyType, interestRatePerPeriod, amortizationType, interestType, interestCalculationPeriodType, transactionProcessingStrategyCode, expectedDisbursementDate, submittedOnDate, loanType\nOptional Fields: graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, linkAccountId, allowPartialPeriodInterestCalculation, fixedEmiAmount, maxOutstandingLoanBalance, disbursementData, graceOnArrearsAgeing, createStandingInstructionAtDisbursement (requires linkedAccountId if set to true)\nAdditional Mandatory Fields if interest recalculation is enabled for product and Rest frequency not same as repayment period: recalculationRestFrequencyDate\nAdditional Mandatory Fields if interest recalculation with interest/fee compounding is enabled for product and compounding frequency not same as repayment period: recalculationCompoundingFrequencyDate\nAdditional Mandatory Field if Entity-Datatable Check is enabled for the entity of type loan: datatables","operationId":"calculateOrSubmitLoanApplication","parameters":[{"description":"command","in":"query","name":"command","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoansRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoansResponse"}}},"description":"OK"}},"summary":"Calculate loan repayment schedule | Submit a new Loan Application","tags":["Loan Accounts"],"x-alternative-operation-id":"calculateLoanScheduleOrSubmitLoanApplication","x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/loans' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"allowFullTermForTranche\": false,\n  \"amortizationType\": 1,\n  \"buyDownFeeCalculationType\": \"FLAT\",\n  \"buyDownFeeIncomeType\": \"FEE\",\n  \"buyDownFeeStrategy\": \"EQUAL_AMORTIZATION\",\n  \"capitalizedIncomeCalculationType\": \"FLAT\",\n  \"capitalizedIncomeStrategy\": \"EQUAL_AMORTIZATION\",\n  \"capitalizedIncomeType\": {\n    \"code\": \"string\",\n    \"id\": \"string\",\n    \"value\": \"string\"\n  },\n  \"charges\": [\n    {\n      \"amount\": 1,\n      \"chargeId\": 1\n    }\n  ],\n  \"clientId\": 1\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/loans\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"allowFullTermForTranche\": False,\n      \"amortizationType\": 1,\n      \"buyDownFeeCalculationType\": \"FLAT\",\n      \"buyDownFeeIncomeType\": \"FEE\",\n      \"buyDownFeeStrategy\": \"EQUAL_AMORTIZATION\",\n      \"capitalizedIncomeCalculationType\": \"FLAT\",\n      \"capitalizedIncomeStrategy\": \"EQUAL_AMORTIZATION\",\n      \"capitalizedIncomeType\": {\n        \"code\": \"string\",\n        \"id\": \"string\",\n        \"value\": \"string\"\n      },\n      \"charges\": [\n        {\n          \"amount\": 1,\n          \"chargeId\": 1\n        }\n      ],\n      \"clientId\": 1\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"allowFullTermForTranche\": false,\n    \"amortizationType\": 1,\n    \"buyDownFeeCalculationType\": \"FLAT\",\n    \"buyDownFeeIncomeType\": \"FEE\",\n    \"buyDownFeeStrategy\": \"EQUAL_AMORTIZATION\",\n    \"capitalizedIncomeCalculationType\": \"FLAT\",\n    \"capitalizedIncomeStrategy\": \"EQUAL_AMORTIZATION\",\n    \"capitalizedIncomeType\": {\n      \"code\": \"string\",\n      \"id\": \"string\",\n      \"value\": \"string\"\n    },\n    \"charges\": [\n      {\n        \"amount\": 1,\n        \"chargeId\": 1\n      }\n    ],\n    \"clientId\": 1\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"allowFullTermForTranche\": false,\n          \"amortizationType\": 1,\n          \"buyDownFeeCalculationType\": \"FLAT\",\n          \"buyDownFeeIncomeType\": \"FEE\",\n          \"buyDownFeeStrategy\": \"EQUAL_AMORTIZATION\",\n          \"capitalizedIncomeCalculationType\": \"FLAT\",\n          \"capitalizedIncomeStrategy\": \"EQUAL_AMORTIZATION\",\n          \"capitalizedIncomeType\": {\n            \"code\": \"string\",\n            \"id\": \"string\",\n            \"value\": \"string\"\n          },\n          \"charges\": [\n            {\n              \"amount\": 1,\n              \"chargeId\": 1\n            }\n          ],\n          \"clientId\": 1\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"allowFullTermForTranche\": false,\n  \"amortizationType\": 1,\n  \"buyDownFeeCalculationType\": \"FLAT\",\n  \"buyDownFeeIncomeType\": \"FEE\",\n  \"buyDownFeeStrategy\": \"EQUAL_AMORTIZATION\",\n  \"capitalizedIncomeCalculationType\": \"FLAT\",\n  \"capitalizedIncomeStrategy\": \"EQUAL_AMORTIZATION\",\n  \"capitalizedIncomeType\": {\n    \"code\": \"string\",\n    \"id\": \"string\",\n    \"value\": \"string\"\n  },\n  \"charges\": [\n    {\n      \"amount\": 1,\n      \"chargeId\": 1\n    }\n  ],\n  \"clientId\": 1\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/loans\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loans/template":{"get":{"description":"This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:\n\nField Defaults\nAllowed description Lists\nExample Requests:\n\nloans/template?templateType=individual&clientId=1\n\n\nloans/template?templateType=individual&clientId=1&productId=1","operationId":"retrieveTemplateLoan","parameters":[{"description":"clientId","in":"query","name":"clientId","schema":{"type":"integer","format":"int64"}},{"description":"groupId","in":"query","name":"groupId","schema":{"type":"integer","format":"int64"}},{"description":"productId","in":"query","name":"productId","schema":{"type":"integer","format":"int64"}},{"description":"templateType","in":"query","name":"templateType","schema":{"type":"string"}},{"description":"staffInSelectedOfficeOnly","in":"query","name":"staffInSelectedOfficeOnly","schema":{"type":"boolean","default":false}},{"description":"activeOnly","in":"query","name":"activeOnly","schema":{"type":"boolean","default":false}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoansTemplateResponse"}}},"description":"OK"}},"summary":"Retrieve Loan Details Template","tags":["Loan Accounts"],"x-alternative-operation-id":"template_10","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loans/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loans/{loanId}":{"delete":{"description":"Note: Only loans in \"Submitted and awaiting approval\" status can be deleted.","operationId":"deleteLoanApplication","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteLoansLoanIdResponse"}}},"description":"OK"}},"summary":"Delete a Loan Application","tags":["Loan Accounts"],"x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"description":"Note: template=true parameter doesn't apply to this resource.Example Requests:\n\nloans/1\n\n\nloans/1?fields=id,principal,annualInterestRate\n\n\nloans/1?associations=all\n\nloans/1?associations=all&exclude=guarantors\n\n\nloans/1?fields=id,principal,annualInterestRate&associations=repaymentSchedule,transactions","operationId":"retrieveOneLoan","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"staffInSelectedOfficeOnly","in":"query","name":"staffInSelectedOfficeOnly","schema":{"type":"boolean","default":false}},{"description":"Loan object relations to be included in the response","in":"query","name":"associations","schema":{"type":"string","default":"all"}},{"description":"Optional Loan object relation list to be filtered in the response","example":"guarantors,futureSchedule","in":"query","name":"exclude","schema":{"type":"string"}},{"description":"Optional Loan attribute list to be in the response","example":"id,principal,annualInterestRate","in":"query","name":"fields","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoansLoanIdResponse"}}},"description":"OK"}},"summary":"Retrieve a Loan","tags":["Loan Accounts"],"x-alternative-operation-id":"retrieveLoan","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Approve Loan Application:\nMandatory Fields: approvedOnDate\nOptional Fields: approvedLoanAmount and expectedDisbursementDate\nApproves the loan application\n\nRecover Loan Guarantee:\nRecovers the loan guarantee\n\nUndo Loan Application Approval:\nUndoes the Loan Application Approval\n\nAssign a Loan Officer:\nAllows you to assign Loan Officer for existing Loan.\n\nUnassign a Loan Officer:\nAllows you to unassign the Loan Officer.\n\nReject Loan Application:\nMandatory Fields: rejectedOnDate\nAllows you to reject the loan application\n\nApplicant Withdraws from Loan Application:\nMandatory Fields: withdrawnOnDate\nAllows the applicant to withdraw the loan application\n\nDisburse Loan:\nMandatory Fields: actualDisbursementDate\nOptional Fields: transactionAmount and fixedEmiAmount\nDisburses the Loan\n\nDisburse Loan To Savings Account:\nMandatory Fields: actualDisbursementDate\nOptional Fields: transactionAmount and fixedEmiAmount\nDisburses the loan to Saving Account\n\nUndo Loan Disbursal:\nUndoes the Loan Disbursal\nShowing request and response for Assign a Loan Officer","operationId":"handleCommandsLoan","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"command","in":"query","name":"command","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoansLoanIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoansLoanIdResponse"}}},"description":"OK"}},"summary":"Approve Loan Application | Recover Loan Guarantee | Undo Loan Application Approval | Assign a Loan Officer | Unassign a Loan Officer | Reject Loan Application | Applicant Withdraws from Loan Application | Disburse Loan Disburse Loan To Savings Account | Undo Loan Disbursal","tags":["Loan Accounts"],"x-alternative-operation-id":"stateTransitions","x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"actualDisbursementDate\": \"28 June 2022\",\n  \"adjustRepaymentDate\": \"28 July 2022\",\n  \"approvedLoanAmount\": 1000,\n  \"approvedOnDate\": \"28 June 2022\",\n  \"assignmentDate\": \"02 September 2014\",\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"disbursementData\": [\n    {\n      \"expectedDisbursementDate\": \"19 August 2026\",\n      \"principal\": 22000\n    }\n  ],\n  \"expectedDisbursementDate\": \"28 June 2022\",\n  \"externalId\": \"3e7791ce-aa10-11ec-b909-0242ac120002\",\n  \"fixedEmiAmount\": 500\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"actualDisbursementDate\": \"28 June 2022\",\n      \"adjustRepaymentDate\": \"28 July 2022\",\n      \"approvedLoanAmount\": 1000,\n      \"approvedOnDate\": \"28 June 2022\",\n      \"assignmentDate\": \"02 September 2014\",\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"disbursementData\": [\n        {\n          \"expectedDisbursementDate\": \"19 August 2026\",\n          \"principal\": 22000\n        }\n      ],\n      \"expectedDisbursementDate\": \"28 June 2022\",\n      \"externalId\": \"3e7791ce-aa10-11ec-b909-0242ac120002\",\n      \"fixedEmiAmount\": 500\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"actualDisbursementDate\": \"28 June 2022\",\n    \"adjustRepaymentDate\": \"28 July 2022\",\n    \"approvedLoanAmount\": 1000,\n    \"approvedOnDate\": \"28 June 2022\",\n    \"assignmentDate\": \"02 September 2014\",\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"disbursementData\": [\n      {\n        \"expectedDisbursementDate\": \"19 August 2026\",\n        \"principal\": 22000\n      }\n    ],\n    \"expectedDisbursementDate\": \"28 June 2022\",\n    \"externalId\": \"3e7791ce-aa10-11ec-b909-0242ac120002\",\n    \"fixedEmiAmount\": 500\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"actualDisbursementDate\": \"28 June 2022\",\n          \"adjustRepaymentDate\": \"28 July 2022\",\n          \"approvedLoanAmount\": 1000,\n          \"approvedOnDate\": \"28 June 2022\",\n          \"assignmentDate\": \"02 September 2014\",\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"disbursementData\": [\n            {\n              \"expectedDisbursementDate\": \"19 August 2026\",\n              \"principal\": 22000\n            }\n          ],\n          \"expectedDisbursementDate\": \"28 June 2022\",\n          \"externalId\": \"3e7791ce-aa10-11ec-b909-0242ac120002\",\n          \"fixedEmiAmount\": 500\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"actualDisbursementDate\": \"28 June 2022\",\n  \"adjustRepaymentDate\": \"28 July 2022\",\n  \"approvedLoanAmount\": 1000,\n  \"approvedOnDate\": \"28 June 2022\",\n  \"assignmentDate\": \"02 September 2014\",\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"disbursementData\": [\n    {\n      \"expectedDisbursementDate\": \"19 August 2026\",\n      \"principal\": 22000\n    }\n  ],\n  \"expectedDisbursementDate\": \"28 June 2022\",\n  \"externalId\": \"3e7791ce-aa10-11ec-b909-0242ac120002\",\n  \"fixedEmiAmount\": 500\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Loan application can only be modified when in 'Submitted and pending approval' state. Once the application is approved, the details cannot be changed using this method.","operationId":"updateLoanApplication","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"command","in":"query","name":"command","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutLoansLoanIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutLoansLoanIdResponse"}}},"description":"OK"}},"summary":"Modify a loan application","tags":["Loan Accounts"],"x-alternative-operation-id":"modifyLoanApplication","x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"allowFullTermForTranche\": false,\n  \"amortizationType\": 1,\n  \"charges\": [\n    {\n      \"amount\": 1,\n      \"chargeCalculationType\": 1,\n      \"chargeId\": 1,\n      \"chargePaymentMode\": 1\n    }\n  ],\n  \"clientId\": 1,\n  \"collateral\": [\n    {\n      \"clientCollateralId\": 1,\n      \"quantity\": 1\n    }\n  ],\n  \"createStandingInstructionAtDisbursement\": true,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"disbursedAmountPercentageForDownPayment\": 0,\n  \"disbursementData\": [\n    {\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"expectedDisbursementDate\": \"19 August 2026\",\n      \"interestType\": 1,\n      \"isEqualAmortization\": true\n    }\n  ],\n  \"enableAutoRepaymentForDownPayment\": false\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"allowFullTermForTranche\": False,\n      \"amortizationType\": 1,\n      \"charges\": [\n        {\n          \"amount\": 1,\n          \"chargeCalculationType\": 1,\n          \"chargeId\": 1,\n          \"chargePaymentMode\": 1\n        }\n      ],\n      \"clientId\": 1,\n      \"collateral\": [\n        {\n          \"clientCollateralId\": 1,\n          \"quantity\": 1\n        }\n      ],\n      \"createStandingInstructionAtDisbursement\": True,\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"disbursedAmountPercentageForDownPayment\": 0,\n      \"disbursementData\": [\n        {\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"expectedDisbursementDate\": \"19 August 2026\",\n          \"interestType\": 1,\n          \"isEqualAmortization\": True\n        }\n      ],\n      \"enableAutoRepaymentForDownPayment\": False\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"allowFullTermForTranche\": false,\n    \"amortizationType\": 1,\n    \"charges\": [\n      {\n        \"amount\": 1,\n        \"chargeCalculationType\": 1,\n        \"chargeId\": 1,\n        \"chargePaymentMode\": 1\n      }\n    ],\n    \"clientId\": 1,\n    \"collateral\": [\n      {\n        \"clientCollateralId\": 1,\n        \"quantity\": 1\n      }\n    ],\n    \"createStandingInstructionAtDisbursement\": true,\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"disbursedAmountPercentageForDownPayment\": 0,\n    \"disbursementData\": [\n      {\n        \"dateFormat\": \"dd MMMM yyyy\",\n        \"expectedDisbursementDate\": \"19 August 2026\",\n        \"interestType\": 1,\n        \"isEqualAmortization\": true\n      }\n    ],\n    \"enableAutoRepaymentForDownPayment\": false\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"allowFullTermForTranche\": false,\n          \"amortizationType\": 1,\n          \"charges\": [\n            {\n              \"amount\": 1,\n              \"chargeCalculationType\": 1,\n              \"chargeId\": 1,\n              \"chargePaymentMode\": 1\n            }\n          ],\n          \"clientId\": 1,\n          \"collateral\": [\n            {\n              \"clientCollateralId\": 1,\n              \"quantity\": 1\n            }\n          ],\n          \"createStandingInstructionAtDisbursement\": true,\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"disbursedAmountPercentageForDownPayment\": 0,\n          \"disbursementData\": [\n            {\n              \"dateFormat\": \"dd MMMM yyyy\",\n              \"expectedDisbursementDate\": \"19 August 2026\",\n              \"interestType\": 1,\n              \"isEqualAmortization\": true\n            }\n          ],\n          \"enableAutoRepaymentForDownPayment\": false\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"allowFullTermForTranche\": false,\n  \"amortizationType\": 1,\n  \"charges\": [\n    {\n      \"amount\": 1,\n      \"chargeCalculationType\": 1,\n      \"chargeId\": 1,\n      \"chargePaymentMode\": 1\n    }\n  ],\n  \"clientId\": 1,\n  \"collateral\": [\n    {\n      \"clientCollateralId\": 1,\n      \"quantity\": 1\n    }\n  ],\n  \"createStandingInstructionAtDisbursement\": true,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"disbursedAmountPercentageForDownPayment\": 0,\n  \"disbursementData\": [\n    {\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"expectedDisbursementDate\": \"19 August 2026\",\n      \"interestType\": 1,\n      \"isEqualAmortization\": true\n    }\n  ],\n  \"enableAutoRepaymentForDownPayment\": false\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loans/{loanId}/template":{"get":{"operationId":"retrieveApprovalTemplate","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"templateType","in":"query","name":"templateType","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoansApprovalTemplateResponse"}}},"description":"OK"}},"summary":"Retrieve Loan Approval Template","tags":["Loan Accounts"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loans/{loanId}/transactions":{"get":{"description":"Retrieves transactions of a loan","operationId":"retrieveAllLoanTransactions","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"excludedTypes","in":"query","name":"excludedTypes","schema":{"type":"array","items":{"$ref":"#/components/schemas/TransactionType"}}},{"description":"page","in":"query","name":"page","schema":{"type":"integer","format":"int32"}},{"description":"size","in":"query","name":"size","schema":{"type":"integer","format":"int32"}},{"description":"sort","in":"query","name":"sort","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoansLoanIdTransactionsResponse"}}},"description":"OK"}},"summary":"Retrieve Transactions","tags":["Loan Transactions"],"x-alternative-operation-id":"retrieveTransactionsByLoanId","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"This API covers the major loan transaction functionality\n\nExample Requests:\n\nloans/1/transactions?command=repayment | Make a Repayment | \nloans/1/transactions?command=merchantIssuedRefund | Merchant Issued Refund | \nloans/1/transactions?command=payoutRefund | Payout Refund | \nloans/1/transactions?command=goodwillCredit | Goodwil Credit | \nloans/1/transactions?command=chargeRefund | Charge Refund | \nloans/1/transactions?command=waiveinterest | Waive Interest | \nloans/1/transactions?command=writeoff | Write-off Loan | \nloans/1/transactions?command=close-rescheduled | Close Rescheduled Loan | \nloans/1/transactions?command=close | Close Loan | \nloans/1/transactions?command=undowriteoff | Undo Loan Write-off | \nloans/1/transactions?command=recoverypayment | Make Recovery Payment | \nloans/1/transactions?command=refundByCash | Make a Refund of an Active Loan by Cash | \nloans/1/transactions?command=foreclosure | Foreclosure of an Active Loan | \nloans/1/transactions?command=creditBalanceRefund | Credit Balance Refund |  \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=charge-off | Charge-off Loan |  \nloans/1/transactions?command=downPayment | Down Payment |  \n","operationId":"handleCommandsLoanTransaction","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"command","in":"query","name":"command","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoansLoanIdTransactionsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoansLoanIdTransactionsResponse"}}},"description":"OK"}},"summary":"Significant Loan Transactions","tags":["Loan Transactions"],"x-alternative-operation-id":"executeLoanTransaction","x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"accountNumber\": \"acc123\",\n  \"bankNumber\": \"ban123\",\n  \"chargeOffReasonId\": 1,\n  \"checkNumber\": \"che123\",\n  \"classificationId\": 1,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"dueDate\": \"28 June 2022\",\n  \"externalId\": \"3e7791ce-aa10-11ec-b909-0242ac120002\",\n  \"frequencyNumber\": 1,\n  \"frequencyType\": \"frequencyType\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"accountNumber\": \"acc123\",\n      \"bankNumber\": \"ban123\",\n      \"chargeOffReasonId\": 1,\n      \"checkNumber\": \"che123\",\n      \"classificationId\": 1,\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"dueDate\": \"28 June 2022\",\n      \"externalId\": \"3e7791ce-aa10-11ec-b909-0242ac120002\",\n      \"frequencyNumber\": 1,\n      \"frequencyType\": \"frequencyType\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"accountNumber\": \"acc123\",\n    \"bankNumber\": \"ban123\",\n    \"chargeOffReasonId\": 1,\n    \"checkNumber\": \"che123\",\n    \"classificationId\": 1,\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"dueDate\": \"28 June 2022\",\n    \"externalId\": \"3e7791ce-aa10-11ec-b909-0242ac120002\",\n    \"frequencyNumber\": 1,\n    \"frequencyType\": \"frequencyType\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"accountNumber\": \"acc123\",\n          \"bankNumber\": \"ban123\",\n          \"chargeOffReasonId\": 1,\n          \"checkNumber\": \"che123\",\n          \"classificationId\": 1,\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"dueDate\": \"28 June 2022\",\n          \"externalId\": \"3e7791ce-aa10-11ec-b909-0242ac120002\",\n          \"frequencyNumber\": 1,\n          \"frequencyType\": \"frequencyType\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"accountNumber\": \"acc123\",\n  \"bankNumber\": \"ban123\",\n  \"chargeOffReasonId\": 1,\n  \"checkNumber\": \"che123\",\n  \"classificationId\": 1,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"dueDate\": \"28 June 2022\",\n  \"externalId\": \"3e7791ce-aa10-11ec-b909-0242ac120002\",\n  \"frequencyNumber\": 1,\n  \"frequencyType\": \"frequencyType\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loans/{loanId}/transactions/reage-preview":{"get":{"description":"Generates a preview of the re-aged loan schedule based on the provided parameters without creating any transactions or modifying the loan.","operationId":"previewReAgeLoanSchedule","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"The frequency number for the re-aging schedule","in":"query","name":"frequencyNumber","required":true,"schema":{"type":"integer","format":"int32","minimum":1}},{"description":"The frequency type (DAYS, WEEKS, MONTHS, YEARS)","in":"query","name":"frequencyType","required":true,"schema":{"type":"string","minLength":1}},{"description":"The start date for the re-aging schedule","in":"query","name":"startDate","required":true,"schema":{"type":"string","minLength":1}},{"description":"The number of installments for the re-aged loan","in":"query","name":"numberOfInstallments","required":true,"schema":{"type":"integer","format":"int32","minimum":1}},{"description":"The date format used for the startDate parameter","in":"query","name":"dateFormat","required":true,"schema":{"type":"string","minLength":1}},{"description":"The locale to use for formatting","in":"query","name":"locale","required":true,"schema":{"type":"string","minLength":1}},{"description":"The interest handling type. Applied only for progressive interest-bearing loans. DEFAULT if not provided.","in":"query","name":"reAgeInterestHandling","schema":{"type":"string"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoanScheduleData"}}},"description":"default response"}},"summary":"Preview Re-Age Schedule","tags":["Loan Transactions"],"x-alternative-operation-id":"previewReAgeSchedule","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/reage-preview?frequencyNumber={frequencyNumber}&frequencyType={frequencyType}&startDate={startDate}&numberOfInstallments={numberOfInstallments}&dateFormat={dateFormat}&locale={locale}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/reage-preview?frequencyNumber={frequencyNumber}&frequencyType={frequencyType}&startDate={startDate}&numberOfInstallments={numberOfInstallments}&dateFormat={dateFormat}&locale={locale}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/reage-preview?frequencyNumber={frequencyNumber}&frequencyType={frequencyType}&startDate={startDate}&numberOfInstallments={numberOfInstallments}&dateFormat={dateFormat}&locale={locale}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/reage-preview?frequencyNumber={frequencyNumber}&frequencyType={frequencyType}&startDate={startDate}&numberOfInstallments={numberOfInstallments}&dateFormat={dateFormat}&locale={locale}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/reage-preview?frequencyNumber={frequencyNumber}&frequencyType={frequencyType}&startDate={startDate}&numberOfInstallments={numberOfInstallments}&dateFormat={dateFormat}&locale={locale}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loans/{loanId}/transactions/reamortization-preview":{"get":{"description":"Generates a preview of the re-amortized loan schedule based on the provided parameters without creating any transactions or modifying the loan.","operationId":"previewReAmortizeLoanSchedule","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"The interest handling type (DEFAULT, WAIVE_INTEREST, EQUAL_AMORTIZATION_INTEREST_SPLIT)","in":"query","name":"reAmortizationInterestHandling","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoanScheduleData"}}},"description":"default response"}},"summary":"Preview Re-Amortized Schedule","tags":["Loan Transactions"],"x-alternative-operation-id":"previewReAmortizationSchedule","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/reamortization-preview?reAmortizationInterestHandling={reAmortizationInterestHandling}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/reamortization-preview?reAmortizationInterestHandling={reAmortizationInterestHandling}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/reamortization-preview?reAmortizationInterestHandling={reAmortizationInterestHandling}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/reamortization-preview?reAmortizationInterestHandling={reAmortizationInterestHandling}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/reamortization-preview?reAmortizationInterestHandling={reAmortizationInterestHandling}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loans/{loanId}/transactions/template":{"get":{"description":"This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:\n\nField Defaults\nAllowed Value Lists\n\nExample Requests:\n\nloans/1/transactions/template?command=repaymentloans/1/transactions/template?command=merchantIssuedRefundloans/1/transactions/template?command=payoutRefundloans/1/transactions/template?command=goodwillCredit\nloans/1/transactions/template?command=waiveinterest\nloans/1/transactions/template?command=writeoff\nloans/1/transactions/template?command=close-rescheduled\nloans/1/transactions/template?command=close\nloans/1/transactions/template?command=disburse\nloans/1/transactions/template?command=disburseToSavings\nloans/1/transactions/template?command=recoverypayment\nloans/1/transactions/template?command=prepayLoan\nloans/1/transactions/template?command=refundbycash\nloans/1/transactions/template?command=refundbytransfer\nloans/1/transactions/template?command=foreclosure\nloans/1/transactions/template?command=interestPaymentWaiver\nloans/1/transactions/template?command=creditBalanceRefund (returned 'amount' field will have the overpaid value)\nloans/1/transactions/template?command=charge-off\nloans/1/transactions/template?command=downPayment\nloans/1/transactions/template?command=interest-refund","operationId":"retrieveTemplateLoanTransaction","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"command","in":"query","name":"command","schema":{"type":"string"}},{"description":"dateFormat","in":"query","name":"dateFormat","schema":{"type":"string"}},{"description":"transactionDate","in":"query","name":"transactionDate","schema":{"$ref":"#/components/schemas/DateParam"}},{"description":"locale","in":"query","name":"locale","schema":{"type":"string"}},{"description":"transactionId","in":"query","name":"transactionId","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoansLoanIdTransactionsTemplateResponse"}}},"description":"OK"}},"summary":"Retrieve Loan Transaction Template","tags":["Loan Transactions"],"x-alternative-operation-id":"retrieveTransactionTemplate","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/loans/{loanId}/transactions/{transactionId}":{"get":{"description":"Retrieves a Transaction Details\n\nExample Request:\n\nloans/5/transactions/3","operationId":"retrieveOneLoanTransaction","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"transactionId","in":"path","name":"transactionId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"Optional Loan Transaction attribute list to be in the response","example":"id,date,amount","in":"query","name":"fields","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoansLoanIdTransactionsTransactionIdResponse"}}},"description":"OK"}},"summary":"Retrieve a Transaction Details","tags":["Loan Transactions"],"x-alternative-operation-id":"retrieveTransaction","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Note: there is no need to specify command={transactionType} parameter.\n\nMandatory Fields: transactionDate, transactionAmount","operationId":"adjustLoanTransaction","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"transactionId","in":"path","name":"transactionId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"command","in":"query","name":"command","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoansLoanIdTransactionsTransactionIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoansLoanIdTransactionsResponse"}}},"description":"OK"}},"summary":"Adjust a Transaction","tags":["Loan Transactions"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"externalId\": \"4ff9b1cb988b7\",\n  \"locale\": \"en_GB\",\n  \"note\": \"An optional note about why your adjusting or changing the transaction.\",\n  \"paymentTypeId\": 1,\n  \"reversalExternalId\": \"95174ff9-1a75-4d72-a413-6f9b1cb988b7\",\n  \"transactionAmount\": 0,\n  \"transactionDate\": \"28 June 2022\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"externalId\": \"4ff9b1cb988b7\",\n      \"locale\": \"en_GB\",\n      \"note\": \"An optional note about why your adjusting or changing the transaction.\",\n      \"paymentTypeId\": 1,\n      \"reversalExternalId\": \"95174ff9-1a75-4d72-a413-6f9b1cb988b7\",\n      \"transactionAmount\": 0,\n      \"transactionDate\": \"28 June 2022\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"externalId\": \"4ff9b1cb988b7\",\n    \"locale\": \"en_GB\",\n    \"note\": \"An optional note about why your adjusting or changing the transaction.\",\n    \"paymentTypeId\": 1,\n    \"reversalExternalId\": \"95174ff9-1a75-4d72-a413-6f9b1cb988b7\",\n    \"transactionAmount\": 0,\n    \"transactionDate\": \"28 June 2022\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"externalId\": \"4ff9b1cb988b7\",\n          \"locale\": \"en_GB\",\n          \"note\": \"An optional note about why your adjusting or changing the transaction.\",\n          \"paymentTypeId\": 1,\n          \"reversalExternalId\": \"95174ff9-1a75-4d72-a413-6f9b1cb988b7\",\n          \"transactionAmount\": 0,\n          \"transactionDate\": \"28 June 2022\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"externalId\": \"4ff9b1cb988b7\",\n  \"locale\": \"en_GB\",\n  \"note\": \"An optional note about why your adjusting or changing the transaction.\",\n  \"paymentTypeId\": 1,\n  \"reversalExternalId\": \"95174ff9-1a75-4d72-a413-6f9b1cb988b7\",\n  \"transactionAmount\": 0,\n  \"transactionDate\": \"28 June 2022\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Undo a Waive Charge Transaction","operationId":"undoWaiveChargeLoanTransaction","parameters":[{"description":"loanId","in":"path","name":"loanId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"transactionId","in":"path","name":"transactionId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutChargeTransactionChangesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutChargeTransactionChangesResponse"}}},"description":"OK"}},"summary":"Undo a Waive Charge Transaction","tags":["Loan Transactions"],"x-alternative-operation-id":"undoWaiveCharge","x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"id\": 1,\n  \"loanId\": 2\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"id\": 1,\n      \"loanId\": 2\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"id\": 1,\n    \"loanId\": 2\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"id\": 1,\n          \"loanId\": 2\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"id\": 1,\n  \"loanId\": 2\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/loans/{loanId}/transactions/{transactionId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/paymenttypes":{"get":{"description":"Retrieve list of payment types","operationId":"getAllPaymentTypes","parameters":[{"in":"query","name":"onlyWithCode","schema":{"type":"boolean"}}],"responses":{"default":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PaymentTypeData"}}}},"description":"default response"}},"summary":"Retrieve all Payment Types","tags":["Payment Types"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/paymenttypes' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/paymenttypes\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/paymenttypes\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/paymenttypes\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/paymenttypes\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Creates a new Payment type","operationId":"createPaymentType","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentTypeCreateRequest"}}}},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentTypeCreateResponse"}}},"description":"default response"}},"summary":"Create a Payment Type","tags":["Payment Types"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/paymenttypes' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"isSystemDefined\": true,\n  \"name\": \"string\",\n  \"codeName\": \"string\",\n  \"description\": \"string\",\n  \"isCashPayment\": true,\n  \"position\": 1\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/paymenttypes\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"isSystemDefined\": True,\n      \"name\": \"string\",\n      \"codeName\": \"string\",\n      \"description\": \"string\",\n      \"isCashPayment\": True,\n      \"position\": 1\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/paymenttypes\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"isSystemDefined\": true,\n    \"name\": \"string\",\n    \"codeName\": \"string\",\n    \"description\": \"string\",\n    \"isCashPayment\": true,\n    \"position\": 1\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/paymenttypes\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"isSystemDefined\": true,\n          \"name\": \"string\",\n          \"codeName\": \"string\",\n          \"description\": \"string\",\n          \"isCashPayment\": true,\n          \"position\": 1\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"isSystemDefined\": true,\n  \"name\": \"string\",\n  \"codeName\": \"string\",\n  \"description\": \"string\",\n  \"isCashPayment\": true,\n  \"position\": 1\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/paymenttypes\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/paymenttypes/{paymentTypeId}":{"delete":{"description":"Deletes payment type","operationId":"deleteCodePaymentType","parameters":[{"in":"path","name":"paymentTypeId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentTypeDeleteResponse"}}},"description":"default response"}},"summary":"Delete a Payment Type","tags":["Payment Types"],"x-alternative-operation-id":"deleteCode_1","x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"description":"Retrieves a payment type","operationId":"retrieveOnePaymentType","parameters":[{"in":"path","name":"paymentTypeId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentTypeData"}}},"description":"default response"}},"summary":"Retrieve a Payment Type","tags":["Payment Types"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Updates a Payment Type","operationId":"updatePaymentType","parameters":[{"in":"path","name":"paymentTypeId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentTypeUpdateRequest"}}}},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentTypeUpdateResponse"}}},"description":"default response"}},"summary":"Update a Payment Type","tags":["Payment Types"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"isSystemDefined\": true,\n  \"name\": \"string\",\n  \"codeName\": \"string\",\n  \"description\": \"string\",\n  \"isCashPayment\": true,\n  \"position\": 1\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"isSystemDefined\": True,\n      \"name\": \"string\",\n      \"codeName\": \"string\",\n      \"description\": \"string\",\n      \"isCashPayment\": True,\n      \"position\": 1\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"isSystemDefined\": true,\n    \"name\": \"string\",\n    \"codeName\": \"string\",\n    \"description\": \"string\",\n    \"isCashPayment\": true,\n    \"position\": 1\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"isSystemDefined\": true,\n          \"name\": \"string\",\n          \"codeName\": \"string\",\n          \"description\": \"string\",\n          \"isCashPayment\": true,\n          \"position\": 1\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"isSystemDefined\": true,\n  \"name\": \"string\",\n  \"codeName\": \"string\",\n  \"description\": \"string\",\n  \"isCashPayment\": true,\n  \"position\": 1\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/paymenttypes/{paymentTypeId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/permissions":{"get":{"description":"ARGUMENTS\nmakerCheckerableoptional, Values are true, false. Default is false.\nIf makerCheckerable=false or not supplied then a list of application permissions is returned. The \"selected\" attribute is always true in this case.\n\nIf makerCheckerable=true then the \"selected\" attribute shows whether the permission is enabled for Maker Check functionality.\n\nNote: Each Lokta transaction is associated with a permission.\n\nExample Requests:\n\npermissions\n\n\npermissions?makerCheckerable=true\n\n\npermissions?fields=grouping,code","operationId":"retrieveAllPermissions","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetPermissionsResponse"}}}},"description":"OK"}},"summary":"List Application Permissions","tags":["Roles & Permissions"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/permissions' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/permissions\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/permissions\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/permissions\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/permissions\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/reports":{"get":{"description":"Lists all reports and their parameters.\n\nExample Request:\n\nreports","operationId":"retrieveAllReports","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetReportsResponse"}}}},"description":"OK"}},"summary":"List Reports","tags":["Reports"],"x-alternative-operation-id":"retrieveReportList","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/reports' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/reports\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/reports\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/reports\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/reports\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"operationId":"createReport","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostRepostRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostReportsResponse"}}},"description":"OK"}},"summary":"Create a Report","tags":["Reports"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/reports' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"description\": \"Just An Example\",\n  \"reportCategory\": \"Loan\",\n  \"reportName\": \"Completely New Report\",\n  \"reportParameters\": [\n    {}\n  ],\n  \"reportSql\": \"select '\\''very good sql'\\'' as AComment\",\n  \"reportSubType\": \"string\",\n  \"reportType\": \"Table\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/reports\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"description\": \"Just An Example\",\n      \"reportCategory\": \"Loan\",\n      \"reportName\": \"Completely New Report\",\n      \"reportParameters\": [\n        {}\n      ],\n      \"reportSql\": \"select 'very good sql' as AComment\",\n      \"reportSubType\": \"string\",\n      \"reportType\": \"Table\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/reports\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"description\": \"Just An Example\",\n    \"reportCategory\": \"Loan\",\n    \"reportName\": \"Completely New Report\",\n    \"reportParameters\": [\n      {}\n    ],\n    \"reportSql\": \"select 'very good sql' as AComment\",\n    \"reportSubType\": \"string\",\n    \"reportType\": \"Table\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/reports\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"description\": \"Just An Example\",\n          \"reportCategory\": \"Loan\",\n          \"reportName\": \"Completely New Report\",\n          \"reportParameters\": [\n            {}\n          ],\n          \"reportSql\": \"select 'very good sql' as AComment\",\n          \"reportSubType\": \"string\",\n          \"reportType\": \"Table\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"description\": \"Just An Example\",\n  \"reportCategory\": \"Loan\",\n  \"reportName\": \"Completely New Report\",\n  \"reportParameters\": [\n    {}\n  ],\n  \"reportSql\": \"select 'very good sql' as AComment\",\n  \"reportSubType\": \"string\",\n  \"reportType\": \"Table\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/reports\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/reports/template":{"get":{"description":"This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:\n\nField Defaults\nAllowed description Lists\n\nExample Request : \n\nreports/template","operationId":"retrieveTemplateReport","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetReportsTemplateResponse"}}},"description":"OK"}},"summary":"Retrieve Report Template","tags":["Reports"],"x-alternative-operation-id":"retrieveOfficeTemplate","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/reports/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/reports/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/reports/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/reports/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/reports/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/reports/{id}":{"delete":{"description":"Only non-core reports can be deleted.","operationId":"deleteReport","parameters":[{"description":"id","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteReportsResponse"}}},"description":"OK"}},"summary":"Delete a Report","tags":["Reports"],"x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/reports/{id}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/reports/{id}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/reports/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/reports/{id}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/reports/{id}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"description":"Example Requests:\n\nreports/1\n\n\nreports/1?template=true","operationId":"retrieveOneReport","parameters":[{"description":"id","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetReportsResponse"}}},"description":"OK"}},"summary":"Retrieve a Report\n","tags":["Reports"],"x-alternative-operation-id":"retrieveReport","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/reports/{id}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/reports/{id}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/reports/{id}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/reports/{id}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/reports/{id}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Only the useReport description can be updated for core reports.","operationId":"updateReport","parameters":[{"description":"id","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutReportRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutReportResponse"}}},"description":"OK"}},"summary":"Update a Report","tags":["Reports"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/reports/{id}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"reportName\": \"Completely New Report\",\n  \"reportParameters\": [\n    {}\n  ]\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/reports/{id}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"reportName\": \"Completely New Report\",\n      \"reportParameters\": [\n        {}\n      ]\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/reports/{id}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"reportName\": \"Completely New Report\",\n    \"reportParameters\": [\n      {}\n    ]\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/reports/{id}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"reportName\": \"Completely New Report\",\n          \"reportParameters\": [\n            {}\n          ]\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"reportName\": \"Completely New Report\",\n  \"reportParameters\": [\n    {}\n  ]\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/reports/{id}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/roles":{"get":{"description":"Example Requests:\n\nroles\n\n\nroles?fields=name","operationId":"retrieveAllRoles","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetRolesResponse"}}}},"description":"OK"}},"summary":"List Roles","tags":["Roles & Permissions"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/roles' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/roles\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/roles\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/roles\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/roles\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Mandatory Fields\nname, description","operationId":"createRole","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostRolesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostRolesResponse"}}},"description":"OK"}},"summary":"Create a New Role","tags":["Roles & Permissions"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/roles' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"description\": \"A description outlining the purpose of this role in relation to the application.\",\n  \"name\": \"Another Role Name\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/roles\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"description\": \"A description outlining the purpose of this role in relation to the application.\",\n      \"name\": \"Another Role Name\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/roles\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"description\": \"A description outlining the purpose of this role in relation to the application.\",\n    \"name\": \"Another Role Name\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/roles\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"description\": \"A description outlining the purpose of this role in relation to the application.\",\n          \"name\": \"Another Role Name\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"description\": \"A description outlining the purpose of this role in relation to the application.\",\n  \"name\": \"Another Role Name\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/roles\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/roles/{roleId}":{"delete":{"description":"Description : Delete the role in case role is not associated with any users.","operationId":"deleteRole","parameters":[{"description":"roleId","in":"path","name":"roleId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRolesRoleIdResponse"}}},"description":"OK"}},"summary":"Delete a Role","tags":["Roles & Permissions"],"x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/roles/{roleId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"description":"Example Requests:\n\nroles/1\n\n\nroles/1?fields=name","operationId":"retrieveOneRole","parameters":[{"description":"roleId","in":"path","name":"roleId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRolesRoleIdResponse"}}},"description":"OK"}},"summary":"Retrieve a Role","tags":["Roles & Permissions"],"x-alternative-operation-id":"retrieveRole","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/roles/{roleId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"operationId":"updateRole","parameters":[{"description":"roleId","in":"path","name":"roleId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutRolesRoleIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutRolesRoleIdResponse"}}},"description":"OK"}},"summary":"Update a Role","tags":["Roles & Permissions"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/roles/{roleId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"description\": \"some description(changed)\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"description\": \"some description(changed)\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"description\": \"some description(changed)\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"description\": \"some description(changed)\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"description\": \"some description(changed)\"\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/roles/{roleId}/permissions":{"get":{"description":"Example Requests:\n\nroles/1/permissions","operationId":"retrieveRolePermissions","parameters":[{"description":"roleId","in":"path","name":"roleId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRolesRoleIdPermissionsResponse"}}},"description":"OK"}},"summary":"Retrieve a Role's Permissions","tags":["Roles & Permissions"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/roles/{roleId}/permissions' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}/permissions\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}/permissions\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}/permissions\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}/permissions\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"operationId":"updateRolePermissions","parameters":[{"description":"roleId","in":"path","name":"roleId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutRolesRoleIdPermissionsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutRolesRoleIdPermissionsResponse"}}},"description":"OK"}},"summary":"Update a Role's Permissions","tags":["Roles & Permissions"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/roles/{roleId}/permissions' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"permissions\": \"\\\"CREATE_GUARANTOR\\\":true,\\n    \\\"CREATE_CLIENT\\\":true\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}/permissions\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"permissions\": \"\\\"CREATE_GUARANTOR\\\":True,\\n    \\\"CREATE_CLIENT\\\":True\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}/permissions\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"permissions\": \"\\\"CREATE_GUARANTOR\\\":true,\\n    \\\"CREATE_CLIENT\\\":true\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}/permissions\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"permissions\": \"\\\"CREATE_GUARANTOR\\\":true,\\n    \\\"CREATE_CLIENT\\\":true\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"permissions\": \"\\\"CREATE_GUARANTOR\\\":true,\\n    \\\"CREATE_CLIENT\\\":true\"\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/roles/{roleId}/permissions\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/runreports/{reportName}":{"get":{"description":"This resource allows you to run and receive output from pre-defined Lokta reports.\n\nReports can also be used to provide data for searching and workflow functionality.\n\nThe default output is a JSON formatted \"Generic Resultset\". The Generic Resultset contains Column Heading as well as Data information. However, you can export to CSV format by simply adding \"&exportCSV=true\" to the end of your URL.\n\nIf Pentaho reports have been pre-defined, they can also be run through this resource. Pentaho reports can return HTML, PDF or CSV formats.\n\nThe Lokta reference application uses a JQuery plugin called stretchy reporting which, itself, uses this reports resource to provide a pretty flexible reporting User Interface (UI).\n\n\n\nExample Requests:\n\nrunreports/Client%20Listing?R_officeId=1\n\n\nrunreports/Client%20Listing?R_officeId=1&exportCSV=true\n\n\nrunreports/OfficeIdSelectOne?R_officeId=1&parameterType=true\n\n\nrunreports/OfficeIdSelectOne?R_officeId=1&parameterType=true&exportCSV=true\n\n\nrunreports/Expected%20Payments%20By%20Date%20-%20Formatted?R_endDate=2013-04-30&R_loanOfficerId=-1&R_officeId=1&R_startDate=2013-04-16&output-type=HTML&R_officeId=1\n\n\nrunreports/Expected%20Payments%20By%20Date%20-%20Formatted?R_endDate=2013-04-30&R_loanOfficerId=-1&R_officeId=1&R_startDate=2013-04-16&output-type=XLS&R_officeId=1\n\n\nrunreports/Expected%20Payments%20By%20Date%20-%20Formatted?R_endDate=2013-04-30&R_loanOfficerId=-1&R_officeId=1&R_startDate=2013-04-16&output-type=CSV&R_officeId=1\n\n\nrunreports/Expected%20Payments%20By%20Date%20-%20Formatted?R_endDate=2013-04-30&R_loanOfficerId=-1&R_officeId=1&R_startDate=2013-04-16&output-type=PDF&R_officeId=1\n\n**Available Parameters (All Optional):**\n\n**Common Control Parameters:**\n- `exportCSV`: Set to true to export results as CSV (default: false)\n- `parameterType`: Indicates if this is a parameter type request (default: false)\n- `output-type`: Output format type (HTML, XLS, CSV, PDF)\n- `enable-business-date`: Enable business date filtering\n- `obligDateType`: Obligation date type\n- `decimalChoice`: Decimal formatting choice\n- `Portfolio at Risk by Branch`: Portfolio risk parameter\n\n**Common Report Parameters (R_ prefixed):**\n- `R_officeId`: Office ID filter\n- `R_loanOfficerId`: Loan officer ID filter\n- `R_currencyId`: Currency ID filter\n- `R_fromDate`, `R_toDate`: Date range filters (yyyy-MM-dd)\n- `R_accountNo`: Account number filter\n- `R_transactionId`: Transaction ID filter\n- `R_centerId`: Center ID filter\n- `R_branch`: Branch filter\n- `R_ondate`: Specific date filter\n- `R_cycleX`, `R_cycleY`: Cycle filters\n- `R_fromX`, `R_toY`: Range filters\n- `R_overdueX`, `R_overdueY`: Overdue filters\n- `R_endDate`: End date filter\n\n**Other Common Parameters:**\n- `OfficeId`: Office ID filter (alternative)\n- `loanOfficerId`: Loan officer ID filter (alternative)\n- `currencyId`: Currency ID filter (alternative)\n- `fundId`: Fund ID filter\n- `loanProductId`: Loan product ID filter\n- `loanPurposeId`: Loan purpose ID filter\n- `parType`: Portfolio at risk type\n- `SelectGLAccountNO`: GL account number selection\n- `SavingsAccountSubStatus`: Savings account status\n- `SelectLoanType`: Loan type selection\n\n**Note:** All parameters are optional and report-specific. \nThe exact parameters required depend on the specific report being executed.\nSome reports may accept additional parameters not listed here.","operationId":"runReport","parameters":[{"description":"The name of the report to execute (e.g., 'Client Listing', 'Expected Payments By Date')","example":"Client Listing","in":"path","name":"reportName","required":true,"schema":{"type":"string"}},{"description":"Set to true to export results as CSV","example":false,"in":"query","name":"exportCSV","schema":{"type":"boolean","default":false}},{"description":"Indicates if this is a parameter type request","example":false,"in":"query","name":"parameterType","schema":{"type":"boolean","default":false}},{"description":"Output format type (HTML, XLS, CSV, PDF)","example":"HTML","in":"query","name":"output-type","schema":{"type":"string"}},{"description":"Office ID filter","example":1,"in":"query","name":"R_officeId","schema":{"type":"string"}},{"description":"Loan officer ID filter","example":5,"in":"query","name":"R_loanOfficerId","schema":{"type":"string"}},{"description":"Start date filter (yyyy-MM-dd)","example":"2023-01-01","in":"query","name":"R_fromDate","schema":{"type":"string"}},{"description":"End date filter (yyyy-MM-dd)","example":"2023-12-31","in":"query","name":"R_toDate","schema":{"type":"string"}},{"description":"Currency ID filter","example":"USD","in":"query","name":"R_currencyId","schema":{"type":"string"}},{"description":"Account number filter","example":"00010001","in":"query","name":"R_accountNo","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunReportsResponse"}},"application/pdf":{"schema":{"$ref":"#/components/schemas/RunReportsResponse"}},"application/vnd.ms-excel":{"schema":{"$ref":"#/components/schemas/RunReportsResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/RunReportsResponse"}},"text/html":{"schema":{"$ref":"#/components/schemas/RunReportsResponse"}}},"description":"OK - Report executed successfully"},"400":{"description":"Bad Request - Missing or invalid parameters"},"401":{"description":"Unauthorized - Not authorized to run this report"},"500":{"description":"Internal Server Error"}},"summary":"Run a predefined report","tags":["Reports"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/runreports/{reportName}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/runreports/{reportName}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/runreports/{reportName}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/runreports/{reportName}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/runreports/{reportName}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/staff":{"get":{"description":"Returns the list of staff members.\n\nExample Requests:\n\n- /staff\n- /staff?status=ACTIVE\n- /staff?status=INACTIVE\n- /staff?status=ALL\n\nBy default it Returns all the ACTIVE Staff. Otherwise a status can be provided like e.g. status=INACTIVE,\nthen it returns all INACTIVE staff or status=ALL returns both ACTIVE and INACTIVE staff.\n","operationId":"retrieveAllStaff","parameters":[{"description":"officeId","in":"query","name":"officeId","schema":{"type":"integer","format":"int64"}},{"description":"staffInOfficeHierarchy","in":"query","name":"staffInOfficeHierarchy","schema":{"type":"boolean","default":false}},{"description":"loanOfficersOnly","in":"query","name":"loanOfficersOnly","schema":{"type":"boolean","default":false}},{"description":"status","in":"query","name":"status","schema":{"type":"string","default":"active"}}],"responses":{"default":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StaffData"}}}},"description":"default response"}},"summary":"Retrieve Staff","tags":["Staff"],"x-alternative-operation-id":"retrieveAll_16","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/staff' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/staff\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/staff\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/staff\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/staff\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Creates a staff member.\n\nMandatory fields:\n\n- officeId\n- firstname\n- lastname\n\nOptional fields:\n\n- isLoanOfficer\n- isActive\n","operationId":"createStaff","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffCreateRequest"}}},"required":true},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffCreateResponse"}}},"description":"default response"}},"summary":"Create a staff member","tags":["Staff"],"x-alternative-operation-id":"create_3","x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/staff' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"firstname\": \"string\",\n  \"lastname\": \"string\",\n  \"officeId\": 1,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"emailAddress\": \"string\",\n  \"externalId\": \"string\",\n  \"forceStatus\": true,\n  \"isActive\": true,\n  \"isLoanOfficer\": true,\n  \"joiningDate\": \"19 August 2026\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/staff\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"firstname\": \"string\",\n      \"lastname\": \"string\",\n      \"officeId\": 1,\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"emailAddress\": \"string\",\n      \"externalId\": \"string\",\n      \"forceStatus\": True,\n      \"isActive\": True,\n      \"isLoanOfficer\": True,\n      \"joiningDate\": \"19 August 2026\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/staff\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"firstname\": \"string\",\n    \"lastname\": \"string\",\n    \"officeId\": 1,\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"emailAddress\": \"string\",\n    \"externalId\": \"string\",\n    \"forceStatus\": true,\n    \"isActive\": true,\n    \"isLoanOfficer\": true,\n    \"joiningDate\": \"19 August 2026\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/staff\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"firstname\": \"string\",\n          \"lastname\": \"string\",\n          \"officeId\": 1,\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"emailAddress\": \"string\",\n          \"externalId\": \"string\",\n          \"forceStatus\": true,\n          \"isActive\": true,\n          \"isLoanOfficer\": true,\n          \"joiningDate\": \"19 August 2026\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"firstname\": \"string\",\n  \"lastname\": \"string\",\n  \"officeId\": 1,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"emailAddress\": \"string\",\n  \"externalId\": \"string\",\n  \"forceStatus\": true,\n  \"isActive\": true,\n  \"isLoanOfficer\": true,\n  \"joiningDate\": \"19 August 2026\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/staff\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/staff/{staffId}":{"get":{"description":"Returns the details of a Staff Member.\n\nExample Requests:\n\n- /staff/1\n","operationId":"retrieveOneStaff","parameters":[{"description":"staffId","in":"path","name":"staffId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffData"}}},"description":"default response"}},"summary":"Retrieve a Staff Member","tags":["Staff"],"x-alternative-operation-id":"retrieveOne_8","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/staff/{staffId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/staff/{staffId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/staff/{staffId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/staff/{staffId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/staff/{staffId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Updates the details of a staff member.","operationId":"updateStaff","parameters":[{"description":"staffId","in":"path","name":"staffId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffUpdateRequest"}}},"required":true},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffUpdateResponse"}}},"description":"default response"}},"summary":"Update a Staff Member","tags":["Staff"],"x-alternative-operation-id":"update_7","x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/staff/{staffId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"emailAddress\": \"string\",\n  \"externalId\": \"string\",\n  \"firstname\": \"string\",\n  \"forceStatus\": true,\n  \"isActive\": true,\n  \"isLoanOfficer\": true,\n  \"joiningDate\": \"19 August 2026\",\n  \"lastname\": \"string\",\n  \"mobileNo\": \"string\",\n  \"officeId\": 1\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/staff/{staffId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"emailAddress\": \"string\",\n      \"externalId\": \"string\",\n      \"firstname\": \"string\",\n      \"forceStatus\": True,\n      \"isActive\": True,\n      \"isLoanOfficer\": True,\n      \"joiningDate\": \"19 August 2026\",\n      \"lastname\": \"string\",\n      \"mobileNo\": \"string\",\n      \"officeId\": 1\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/staff/{staffId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"emailAddress\": \"string\",\n    \"externalId\": \"string\",\n    \"firstname\": \"string\",\n    \"forceStatus\": true,\n    \"isActive\": true,\n    \"isLoanOfficer\": true,\n    \"joiningDate\": \"19 August 2026\",\n    \"lastname\": \"string\",\n    \"mobileNo\": \"string\",\n    \"officeId\": 1\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/staff/{staffId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"emailAddress\": \"string\",\n          \"externalId\": \"string\",\n          \"firstname\": \"string\",\n          \"forceStatus\": true,\n          \"isActive\": true,\n          \"isLoanOfficer\": true,\n          \"joiningDate\": \"19 August 2026\",\n          \"lastname\": \"string\",\n          \"mobileNo\": \"string\",\n          \"officeId\": 1\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"emailAddress\": \"string\",\n  \"externalId\": \"string\",\n  \"firstname\": \"string\",\n  \"forceStatus\": true,\n  \"isActive\": true,\n  \"isLoanOfficer\": true,\n  \"joiningDate\": \"19 August 2026\",\n  \"lastname\": \"string\",\n  \"mobileNo\": \"string\",\n  \"officeId\": 1\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/staff/{staffId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/taxes/component":{"get":{"description":"List Tax Components","operationId":"retrieveAllTaxComponents","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetTaxesComponentsResponse"}}}},"description":"OK"}},"summary":"List Tax Components","tags":["Tax on Charges"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/taxes/component' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/taxes/component\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/taxes/component\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/taxes/component\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/taxes/component\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Creates a new Tax Component\n\nMandatory Fields: name, percentage\n\nOptional Fields: debitAccountType, debitAccountId, creditAccountType, creditAccountId, startDate","operationId":"createTaxComponent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostTaxesComponentsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostTaxesComponentsResponse"}}},"description":"OK"}},"summary":"Create a new Tax Component","tags":["Tax on Charges"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/taxes/component' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"creditAccountId\": 4,\n  \"creditAccountType\": 4,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"debitAccountId\": 4,\n  \"debitAccountType\": 2,\n  \"locale\": \"en\",\n  \"name\": \"tax component 1\",\n  \"percentage\": 10,\n  \"startDate\": \"11 April 2016\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/taxes/component\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"creditAccountId\": 4,\n      \"creditAccountType\": 4,\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"debitAccountId\": 4,\n      \"debitAccountType\": 2,\n      \"locale\": \"en\",\n      \"name\": \"tax component 1\",\n      \"percentage\": 10,\n      \"startDate\": \"11 April 2016\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/taxes/component\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"creditAccountId\": 4,\n    \"creditAccountType\": 4,\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"debitAccountId\": 4,\n    \"debitAccountType\": 2,\n    \"locale\": \"en\",\n    \"name\": \"tax component 1\",\n    \"percentage\": 10,\n    \"startDate\": \"11 April 2016\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/taxes/component\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"creditAccountId\": 4,\n          \"creditAccountType\": 4,\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"debitAccountId\": 4,\n          \"debitAccountType\": 2,\n          \"locale\": \"en\",\n          \"name\": \"tax component 1\",\n          \"percentage\": 10,\n          \"startDate\": \"11 April 2016\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"creditAccountId\": 4,\n  \"creditAccountType\": 4,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"debitAccountId\": 4,\n  \"debitAccountType\": 2,\n  \"locale\": \"en\",\n  \"name\": \"tax component 1\",\n  \"percentage\": 10,\n  \"startDate\": \"11 April 2016\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/taxes/component\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/taxes/component/template":{"get":{"operationId":"retrieveTemplateTaxComponent","responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxComponentData"}}},"description":"default response"}},"summary":"Retrieve Tax Component Template","tags":["Tax on Charges"],"x-alternative-operation-id":"retrieveTemplate_21","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/taxes/component/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/taxes/component/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/taxes/component/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/taxes/component/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/taxes/component/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/taxes/component/{taxComponentId}":{"get":{"description":"Retrieve Tax Component","operationId":"retrieveOneTaxComponent","parameters":[{"description":"taxComponentId","in":"path","name":"taxComponentId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTaxesComponentsResponse"}}},"description":"OK"}},"summary":"Retrieve Tax Component","tags":["Tax on Charges"],"x-alternative-operation-id":"retrieveTaxComponent","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/taxes/component/{taxComponentId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/taxes/component/{taxComponentId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/taxes/component/{taxComponentId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/taxes/component/{taxComponentId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/taxes/component/{taxComponentId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Updates Tax component. Debit and credit account details cannot be modified. All the future tax components would be replaced with the new percentage.","operationId":"updateTaxComponent","parameters":[{"description":"taxComponentId","in":"path","name":"taxComponentId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutTaxesComponentsTaxComponentIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutTaxesComponentsTaxComponentIdResponse"}}},"description":"OK"}},"summary":"Update Tax Component","tags":["Tax on Charges"],"x-alternative-operation-id":"updateTaxCompoent","x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/taxes/component/{taxComponentId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"locale\": \"en\",\n  \"name\": \"tax component 2\",\n  \"percentage\": 15,\n  \"startDate\": \"15 April 2016\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/taxes/component/{taxComponentId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"locale\": \"en\",\n      \"name\": \"tax component 2\",\n      \"percentage\": 15,\n      \"startDate\": \"15 April 2016\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/taxes/component/{taxComponentId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"locale\": \"en\",\n    \"name\": \"tax component 2\",\n    \"percentage\": 15,\n    \"startDate\": \"15 April 2016\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/taxes/component/{taxComponentId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"locale\": \"en\",\n          \"name\": \"tax component 2\",\n          \"percentage\": 15,\n          \"startDate\": \"15 April 2016\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"locale\": \"en\",\n  \"name\": \"tax component 2\",\n  \"percentage\": 15,\n  \"startDate\": \"15 April 2016\"\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/taxes/component/{taxComponentId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/taxes/group":{"get":{"description":"List Tax Group","operationId":"retrieveAllTaxGroups","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetTaxesGroupResponse"}}}},"description":"OK"}},"summary":"List Tax Group","tags":["Tax on Charges"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/taxes/group' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/taxes/group\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/taxes/group\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/taxes/group\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/taxes/group\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Create a new Tax Group\nMandatory Fields: name and taxComponents\nMandatory Fields in taxComponents: taxComponentId\nOptional Fields in taxComponents: id, startDate and endDate","operationId":"createTaxGroup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostTaxesGroupRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostTaxesGroupResponse"}}},"description":"OK"}},"summary":"Create a new Tax Group","tags":["Tax on Charges"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/taxes/group' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"locale\": \"en\",\n  \"name\": \"tax group 1\",\n  \"taxComponents\": [\n    {\n      \"startDate\": \"11 April 2016\",\n      \"taxComponentId\": 7\n    }\n  ]\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/taxes/group\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"locale\": \"en\",\n      \"name\": \"tax group 1\",\n      \"taxComponents\": [\n        {\n          \"startDate\": \"11 April 2016\",\n          \"taxComponentId\": 7\n        }\n      ]\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/taxes/group\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"locale\": \"en\",\n    \"name\": \"tax group 1\",\n    \"taxComponents\": [\n      {\n        \"startDate\": \"11 April 2016\",\n        \"taxComponentId\": 7\n      }\n    ]\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/taxes/group\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"locale\": \"en\",\n          \"name\": \"tax group 1\",\n          \"taxComponents\": [\n            {\n              \"startDate\": \"11 April 2016\",\n              \"taxComponentId\": 7\n            }\n          ]\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"locale\": \"en\",\n  \"name\": \"tax group 1\",\n  \"taxComponents\": [\n    {\n      \"startDate\": \"11 April 2016\",\n      \"taxComponentId\": 7\n    }\n  ]\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/taxes/group\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/taxes/group/template":{"get":{"operationId":"retrieveTemplateTaxGroup","responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxGroupData"}}},"description":"default response"}},"summary":"Retrieve Tax Group Template","tags":["Tax on Charges"],"x-alternative-operation-id":"retrieveTemplate_22","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/taxes/group/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/taxes/group/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/taxes/group/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/taxes/group/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/taxes/group/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/taxes/group/{taxGroupId}":{"get":{"description":"Retrieve Tax Group","operationId":"retrieveOneTaxGroup","parameters":[{"description":"taxGroupId","in":"path","name":"taxGroupId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTaxesGroupResponse"}}},"description":"OK"}},"summary":"Retrieve Tax Group","tags":["Tax on Charges"],"x-alternative-operation-id":"retrieveTaxGroup","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/taxes/group/{taxGroupId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/taxes/group/{taxGroupId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/taxes/group/{taxGroupId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/taxes/group/{taxGroupId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/taxes/group/{taxGroupId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Updates Tax Group. Only end date can be up-datable and can insert new tax components.","operationId":"updateTaxGroup","parameters":[{"description":"taxGroupId","in":"path","name":"taxGroupId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutTaxesGroupTaxGroupIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutTaxesGroupTaxGroupIdResponse"}}},"description":"OK"}},"summary":"Update Tax Group","tags":["Tax on Charges"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/taxes/group/{taxGroupId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"locale\": \"en\",\n  \"name\": \"tax group 2\",\n  \"taxComponents\": [\n    {\n      \"endDate\": \"22 April 2016\",\n      \"id\": 7,\n      \"taxComponentId\": 7\n    }\n  ]\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/taxes/group/{taxGroupId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"dateFormat\": \"dd MMMM yyyy\",\n      \"locale\": \"en\",\n      \"name\": \"tax group 2\",\n      \"taxComponents\": [\n        {\n          \"endDate\": \"22 April 2016\",\n          \"id\": 7,\n          \"taxComponentId\": 7\n        }\n      ]\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/taxes/group/{taxGroupId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"dateFormat\": \"dd MMMM yyyy\",\n    \"locale\": \"en\",\n    \"name\": \"tax group 2\",\n    \"taxComponents\": [\n      {\n        \"endDate\": \"22 April 2016\",\n        \"id\": 7,\n        \"taxComponentId\": 7\n      }\n    ]\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/taxes/group/{taxGroupId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"dateFormat\": \"dd MMMM yyyy\",\n          \"locale\": \"en\",\n          \"name\": \"tax group 2\",\n          \"taxComponents\": [\n            {\n              \"endDate\": \"22 April 2016\",\n              \"id\": 7,\n              \"taxComponentId\": 7\n            }\n          ]\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"locale\": \"en\",\n  \"name\": \"tax group 2\",\n  \"taxComponents\": [\n    {\n      \"endDate\": \"22 April 2016\",\n      \"id\": 7,\n      \"taxComponentId\": 7\n    }\n  ]\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/taxes/group/{taxGroupId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/users":{"get":{"description":"Example Requests:\n\nusers\n\n\nusers?fields=id,username,email,officeName","operationId":"retrieveAllUsers","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetUsersResponse"}}}},"description":"OK"}},"summary":"Retrieve list of users","tags":["User Management"],"x-alternative-operation-id":"retrieveAll_41","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/users' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/users\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/users\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/users\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/users\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Adds new application user.\n\nNote: Password information is not required (or processed). Password details at present are auto-generated and then sent to the email account given (which is why it can take a few seconds to complete).\n\nMandatory Fields: \nusername, firstname, lastname, email, officeId, roles, sendPasswordToEmail\n\nOptional Fields: \nstaffId,passwordNeverExpires,isLoginRetriesEnabled","operationId":"createUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostUsersRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostUsersResponse"}}},"description":"OK"}},"summary":"Create a User","tags":["User Management"],"x-alternative-operation-id":"create_15","x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/users' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"clients\": [\n    2,\n    3\n  ],\n  \"email\": \"user@example.com\",\n  \"firstname\": \"Test\",\n  \"isLoginRetriesEnabled\": true,\n  \"isPasswordResetAllowed\": true,\n  \"lastname\": \"User\",\n  \"officeId\": 1,\n  \"password\": \"password\",\n  \"passwordNeverExpires\": true,\n  \"repeatPassword\": \"repeatPassword\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/users\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"clients\": [\n        2,\n        3\n      ],\n      \"email\": \"user@example.com\",\n      \"firstname\": \"Test\",\n      \"isLoginRetriesEnabled\": True,\n      \"isPasswordResetAllowed\": True,\n      \"lastname\": \"User\",\n      \"officeId\": 1,\n      \"password\": \"password\",\n      \"passwordNeverExpires\": True,\n      \"repeatPassword\": \"repeatPassword\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/users\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"clients\": [\n      2,\n      3\n    ],\n    \"email\": \"user@example.com\",\n    \"firstname\": \"Test\",\n    \"isLoginRetriesEnabled\": true,\n    \"isPasswordResetAllowed\": true,\n    \"lastname\": \"User\",\n    \"officeId\": 1,\n    \"password\": \"password\",\n    \"passwordNeverExpires\": true,\n    \"repeatPassword\": \"repeatPassword\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/users\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"clients\": [\n            2,\n            3\n          ],\n          \"email\": \"user@example.com\",\n          \"firstname\": \"Test\",\n          \"isLoginRetriesEnabled\": true,\n          \"isPasswordResetAllowed\": true,\n          \"lastname\": \"User\",\n          \"officeId\": 1,\n          \"password\": \"password\",\n          \"passwordNeverExpires\": true,\n          \"repeatPassword\": \"repeatPassword\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"clients\": [\n    2,\n    3\n  ],\n  \"email\": \"user@example.com\",\n  \"firstname\": \"Test\",\n  \"isLoginRetriesEnabled\": true,\n  \"isPasswordResetAllowed\": true,\n  \"lastname\": \"User\",\n  \"officeId\": 1,\n  \"password\": \"password\",\n  \"passwordNeverExpires\": true,\n  \"repeatPassword\": \"repeatPassword\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/users\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/users/template":{"get":{"description":"This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:\n\nField Defaults\nAllowed description Lists\nExample Request:\n\nusers/template","operationId":"retrieveTemplateUser","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUsersTemplateResponse"}}},"description":"OK"}},"summary":"Retrieve User Details Template","tags":["User Management"],"x-alternative-operation-id":"template_22","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/users/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/users/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/users/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/users/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/users/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/users/{userId}":{"delete":{"description":"Removes the user and the associated roles and permissions.","operationId":"deleteUser","parameters":[{"description":"userId","in":"path","name":"userId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteUsersUserIdResponse"}}},"description":"OK"}},"summary":"Delete a User","tags":["User Management"],"x-alternative-operation-id":"delete_23","x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/users/{userId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/users/{userId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/users/{userId}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/users/{userId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/users/{userId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"description":"Example Requests:\n\nusers/1\n\n\nusers/1?template=true\n\n\nusers/1?fields=username,officeName","operationId":"retrieveOneUser","parameters":[{"description":"userId","in":"path","name":"userId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUsersUserIdResponse"}}},"description":"OK"}},"summary":"Retrieve a User","tags":["User Management"],"x-alternative-operation-id":"retrieveOne_31","x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/users/{userId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/users/{userId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/users/{userId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/users/{userId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/users/{userId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Updates the user","operationId":"updateUser","parameters":[{"description":"userId","in":"path","name":"userId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutUsersUserIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutUsersUserIdResponse"}}},"description":"OK"}},"summary":"Update a User","tags":["User Management"],"x-alternative-operation-id":"update_26","x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/users/{userId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"clients\": [\n    2,\n    3\n  ],\n  \"email\": \"user@example.com\",\n  \"firstname\": \"Test\",\n  \"isLoginRetriesEnabled\": true,\n  \"isPasswordResetAllowed\": true,\n  \"lastname\": \"User\",\n  \"officeId\": 1,\n  \"password\": \"password\",\n  \"repeatPassword\": \"repeatPassword\",\n  \"roles\": [\n    2,\n    3\n  ]\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/users/{userId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"clients\": [\n        2,\n        3\n      ],\n      \"email\": \"user@example.com\",\n      \"firstname\": \"Test\",\n      \"isLoginRetriesEnabled\": True,\n      \"isPasswordResetAllowed\": True,\n      \"lastname\": \"User\",\n      \"officeId\": 1,\n      \"password\": \"password\",\n      \"repeatPassword\": \"repeatPassword\",\n      \"roles\": [\n        2,\n        3\n      ]\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/users/{userId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"clients\": [\n      2,\n      3\n    ],\n    \"email\": \"user@example.com\",\n    \"firstname\": \"Test\",\n    \"isLoginRetriesEnabled\": true,\n    \"isPasswordResetAllowed\": true,\n    \"lastname\": \"User\",\n    \"officeId\": 1,\n    \"password\": \"password\",\n    \"repeatPassword\": \"repeatPassword\",\n    \"roles\": [\n      2,\n      3\n    ]\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/users/{userId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"clients\": [\n            2,\n            3\n          ],\n          \"email\": \"user@example.com\",\n          \"firstname\": \"Test\",\n          \"isLoginRetriesEnabled\": true,\n          \"isPasswordResetAllowed\": true,\n          \"lastname\": \"User\",\n          \"officeId\": 1,\n          \"password\": \"password\",\n          \"repeatPassword\": \"repeatPassword\",\n          \"roles\": [\n            2,\n            3\n          ]\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"clients\": [\n    2,\n    3\n  ],\n  \"email\": \"user@example.com\",\n  \"firstname\": \"Test\",\n  \"isLoginRetriesEnabled\": true,\n  \"isPasswordResetAllowed\": true,\n  \"lastname\": \"User\",\n  \"officeId\": 1,\n  \"password\": \"password\",\n  \"repeatPassword\": \"repeatPassword\",\n  \"roles\": [\n    2,\n    3\n  ]\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/users/{userId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/users/{userId}/pwd":{"post":{"description":"When updating a password you must provide the repeatPassword parameter also.","operationId":"changePasswordUser","parameters":[{"description":"userId","in":"path","name":"userId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePwdUsersUserIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePwdUsersUserIdResponse"}}},"description":"OK"}},"summary":"Change the password of a User","tags":["User Management"],"x-alternative-operation-id":"changePassword","x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/users/{userId}/pwd' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"password\": \"password\",\n  \"repeatPassword\": \"repeatPassword\"\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/users/{userId}/pwd\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"password\": \"password\",\n      \"repeatPassword\": \"repeatPassword\"\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/users/{userId}/pwd\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"password\": \"password\",\n    \"repeatPassword\": \"repeatPassword\"\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/users/{userId}/pwd\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"password\": \"password\",\n          \"repeatPassword\": \"repeatPassword\"\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"password\": \"password\",\n  \"repeatPassword\": \"repeatPassword\"\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/users/{userId}/pwd\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/{entityType}/{entityId}/documents":{"get":{"description":"Example Requests:\n\n- clients/1/documents\n- client_identifiers/1/documents\n- loans/1/documents?fields=name,description\n","operationId":"retrieveAllDocuments","parameters":[{"in":"path","name":"entityType","required":true,"schema":{"type":"string"}},{"in":"path","name":"entityId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DocumentData"}}}},"description":"default response"}},"summary":"List documents","tags":["Documents"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Note: A document is created using a Multi-part form upload\n\nBody parts\n\n- name : name or summary of the document\n- description : description of the document\n- file : the file to be uploaded\n\nMandatory fields :\n\n- file\n- description\n","operationId":"createDocument","parameters":[{"in":"path","name":"entityType","required":true,"schema":{"type":"string"}},{"in":"path","name":"entityId","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"header","name":"Content-Length","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"description":{"type":"string"},"file":{"$ref":"#/components/schemas/FormDataBodyPart"},"name":{"type":"string"}}}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentCreateResponse"}}},"description":"OK"}},"summary":"Create a Document","tags":["Documents"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v1/{entityType}/{entityId}/documents/{documentId}":{"delete":{"operationId":"deleteDocument","parameters":[{"in":"path","name":"entityType","required":true,"schema":{"type":"string"}},{"in":"path","name":"entityId","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"path","name":"documentId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/DocumentDeleteResponse"}}},"description":"OK"}},"summary":"Remove a Document","tags":["Documents"],"x-codeSamples":[{"lang":"cURL","source":"curl -X DELETE \\\n  'http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.delete(\n    \"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\", {\n  method: \"DELETE\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"DELETE\", \"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"get":{"description":"Example Requests:\n\n- clients/1/documents/1\n- loans/1/documents/1\n- client_identifiers/1/documents/1?fields=name,description\n","operationId":"getDocument","parameters":[{"in":"path","name":"entityType","required":true,"schema":{"type":"string"}},{"in":"path","name":"entityId","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"path","name":"documentId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentData"}}},"description":"default response"}},"summary":"Retrieve a Document","tags":["Documents"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Note: A document is updated using a Multi-part form upload\n\nBody Parts\n\n- name: name or summary of the document\n- description: description of the document\n- file: the file to be uploaded\n","operationId":"updateDocument","parameters":[{"in":"path","name":"entityType","required":true,"schema":{"type":"string"}},{"in":"path","name":"entityId","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"path","name":"documentId","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"header","name":"Content-Length","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"description":{"type":"string"},"file":{"$ref":"#/components/schemas/FormDataBodyPart"},"name":{"type":"string"}}}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentUpdateResponse"}}},"description":"OK"}},"summary":"Update a Document","tags":["Documents"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v1/{entityType}/{entityId}/documents/{documentId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v2/clients/search":{"post":{"operationId":"searchClientsByText","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedRequestClientTextSearch"}}}},"responses":{"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageClientSearchData"}}},"description":"default response"}},"summary":"Search Clients by text","tags":["Customers"],"x-alternative-operation-id":"searchByText","x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v2/clients/search' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"page\": 1,\n  \"request\": {\n    \"text\": \"string\"\n  },\n  \"size\": 1,\n  \"sorts\": [\n    {\n      \"direction\": \"ASC\",\n      \"property\": \"string\"\n    }\n  ]\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v2/clients/search\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"page\": 1,\n      \"request\": {\n        \"text\": \"string\"\n      },\n      \"size\": 1,\n      \"sorts\": [\n        {\n          \"direction\": \"ASC\",\n          \"property\": \"string\"\n        }\n      ]\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v2/clients/search\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"page\": 1,\n    \"request\": {\n      \"text\": \"string\"\n    },\n    \"size\": 1,\n    \"sorts\": [\n      {\n        \"direction\": \"ASC\",\n        \"property\": \"string\"\n      }\n    ]\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v2/clients/search\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"page\": 1,\n          \"request\": {\n            \"text\": \"string\"\n          },\n          \"size\": 1,\n          \"sorts\": [\n            {\n              \"direction\": \"ASC\",\n              \"property\": \"string\"\n            }\n          ]\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"page\": 1,\n  \"request\": {\n    \"text\": \"string\"\n  },\n  \"size\": 1,\n  \"sorts\": [\n    {\n      \"direction\": \"ASC\",\n      \"property\": \"string\"\n    }\n  ]\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v2/clients/search\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v2/loanproducts":{"get":{"description":"Lists Loan Products\n\nExample Requests:\n\nv2/loanproducts\n\n\nv2/loanproducts?fields=name,description,interestRateFrequencyType,amortizationType","operationId":"retrieveAllLoanProductsV2","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsV2Response"}}}},"description":"OK"}},"summary":"List Loan Products (V2)","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v2/loanproducts' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v2/loanproducts\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v2/loanproducts\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v2/loanproducts\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v2/loanproducts\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"post":{"description":"Creates a Loan Product through the V2 contract.\n\nFunctionally equivalent to the V1 create operation — same parameters, validation, defaults, persistence and response — with one deliberate difference: loanScheduleType (CUMULATIVE, PROGRESSIVE or CONTRACTUAL) is mandatory and must be supplied explicitly.\n\nSupports both Cumulative and Progressive loan products; the API version does not determine the schedule type.\n\nTemporary integration tolerance: unknown JSON request-body fields are ignored — they are not validated, persisted, returned or audited, and must not be relied upon. Known fields remain strictly validated. A future release may restore unsupported-parameter rejection.","operationId":"createLoanProductV2","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoanProductsV2Request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLoanProductsV2Response"}}},"description":"OK"}},"summary":"Create a Loan Product (V2)","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v2/loanproducts' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"loanScheduleType\": \"CUMULATIVE\",\n  \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n  \"accountingRule\": 3,\n  \"allowApprovedDisbursedAmountsOverApplied\": true,\n  \"allowAttributeOverrides\": {\n    \"amortizationType\": true,\n    \"graceOnArrearsAgeing\": true,\n    \"graceOnPrincipalAndInterestPayment\": true,\n    \"inArrearsTolerance\": true\n  },\n  \"allowCompoundingOnEod\": false,\n  \"allowFullTermForTranche\": false,\n  \"allowPartialPeriodInterestCalculation\": true,\n  \"allowVariableInstallments\": false,\n  \"amortizationType\": 1\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v2/loanproducts\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"loanScheduleType\": \"CUMULATIVE\",\n      \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": False,\n      \"accountingRule\": 3,\n      \"allowApprovedDisbursedAmountsOverApplied\": True,\n      \"allowAttributeOverrides\": {\n        \"amortizationType\": True,\n        \"graceOnArrearsAgeing\": True,\n        \"graceOnPrincipalAndInterestPayment\": True,\n        \"inArrearsTolerance\": True\n      },\n      \"allowCompoundingOnEod\": False,\n      \"allowFullTermForTranche\": False,\n      \"allowPartialPeriodInterestCalculation\": True,\n      \"allowVariableInstallments\": False,\n      \"amortizationType\": 1\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v2/loanproducts\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"loanScheduleType\": \"CUMULATIVE\",\n    \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n    \"accountingRule\": 3,\n    \"allowApprovedDisbursedAmountsOverApplied\": true,\n    \"allowAttributeOverrides\": {\n      \"amortizationType\": true,\n      \"graceOnArrearsAgeing\": true,\n      \"graceOnPrincipalAndInterestPayment\": true,\n      \"inArrearsTolerance\": true\n    },\n    \"allowCompoundingOnEod\": false,\n    \"allowFullTermForTranche\": false,\n    \"allowPartialPeriodInterestCalculation\": true,\n    \"allowVariableInstallments\": false,\n    \"amortizationType\": 1\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v2/loanproducts\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"loanScheduleType\": \"CUMULATIVE\",\n          \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n          \"accountingRule\": 3,\n          \"allowApprovedDisbursedAmountsOverApplied\": true,\n          \"allowAttributeOverrides\": {\n            \"amortizationType\": true,\n            \"graceOnArrearsAgeing\": true,\n            \"graceOnPrincipalAndInterestPayment\": true,\n            \"inArrearsTolerance\": true\n          },\n          \"allowCompoundingOnEod\": false,\n          \"allowFullTermForTranche\": false,\n          \"allowPartialPeriodInterestCalculation\": true,\n          \"allowVariableInstallments\": false,\n          \"amortizationType\": 1\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"loanScheduleType\": \"CUMULATIVE\",\n  \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n  \"accountingRule\": 3,\n  \"allowApprovedDisbursedAmountsOverApplied\": true,\n  \"allowAttributeOverrides\": {\n    \"amortizationType\": true,\n    \"graceOnArrearsAgeing\": true,\n    \"graceOnPrincipalAndInterestPayment\": true,\n    \"inArrearsTolerance\": true\n  },\n  \"allowCompoundingOnEod\": false,\n  \"allowFullTermForTranche\": false,\n  \"allowPartialPeriodInterestCalculation\": true,\n  \"allowVariableInstallments\": false,\n  \"amortizationType\": 1\n}`)\nreq, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v2/loanproducts\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v2/loanproducts/drafts":{"get":{"description":"Lists Loan Products still in DRAFT — exactly those the standard listing excludes.\n\nA draft cannot originate loans and appears in no product selection list. This endpoint exists so a draft can be found and inspected before it is activated, without needing to know its id.\n\nProducts with no activation status (created through the V1 contract, or predating the workflow) are NOT drafts and are never returned here — they appear in the standard listing.\n\nExample Requests:\n\nv2/loanproducts/drafts","operationId":"retrieveAllDraftLoanProductsV2","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsV2Response"}}}},"description":"OK"}},"summary":"List draft Loan Products (V2)","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v2/loanproducts/drafts' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v2/loanproducts/drafts\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v2/loanproducts/drafts\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v2/loanproducts/drafts\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v2/loanproducts/drafts\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v2/loanproducts/template":{"get":{"description":"This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:\n\nField Defaults\nAllowed description Lists\nExample Request:\n\nv2/loanproducts/template","operationId":"retrieveTemplateLoanProductV2","parameters":[{"description":"isProductMixTemplate","in":"query","name":"isProductMixTemplate","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoanProductsV2TemplateResponse"}}},"description":"OK"}},"summary":"Retrieve Loan Product Details Template (V2)","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v2/loanproducts/template' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v2/loanproducts/template\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v2/loanproducts/template\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v2/loanproducts/template\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v2/loanproducts/template\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v2/loanproducts/{productId}":{"get":{"description":"Retrieves a Loan Product\n\nExample Requests:\n\nv2/loanproducts/1\n\n\nv2/loanproducts/1?template=true\n\n\nv2/loanproducts/1?fields=name,description,numberOfRepayments","operationId":"retrieveOneLoanProductV2","parameters":[{"description":"productId","in":"path","name":"productId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLoanProductsV2ProductIdResponse"}}},"description":"OK"}},"summary":"Retrieve a Loan Product (V2)","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X GET \\\n  'http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.get(\n    \"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}\", {\n  method: \"GET\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"GET\", \"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]},"put":{"description":"Updates a Loan Product through the V2 contract. Preserves V1 partial-update semantics: omitted fields (including loanScheduleType) leave the existing configuration unchanged.\n\nTemporary integration tolerance: unknown JSON request-body fields are ignored — they are not validated, persisted, returned or audited, cause no data change on their own, and must not be relied upon. Known fields remain strictly validated. A future release may restore unsupported-parameter rejection.","operationId":"updateLoanProductV2","parameters":[{"description":"productId","in":"path","name":"productId","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutLoanProductsV2ProductIdRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutLoanProductsV2ProductIdResponse"}}},"description":"OK"}},"summary":"Update a Loan Product (V2)","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X PUT \\\n  'http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n  \"accountingRule\": 3,\n  \"allowApprovedDisbursedAmountsOverApplied\": true,\n  \"allowAttributeOverrides\": {\n    \"amortizationType\": true,\n    \"graceOnArrearsAgeing\": true,\n    \"graceOnPrincipalAndInterestPayment\": true,\n    \"inArrearsTolerance\": true\n  },\n  \"allowCompoundingOnEod\": false,\n  \"allowFullTermForTranche\": false,\n  \"allowPartialPeriodInterestCalculation\": true,\n  \"allowVariableInstallments\": false,\n  \"amortizationType\": 1,\n  \"buyDownExpenseAccountId\": 27\n}'"},{"lang":"Python","source":"import requests\n\nresponse = requests.put(\n    \"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n    json={\n      \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": False,\n      \"accountingRule\": 3,\n      \"allowApprovedDisbursedAmountsOverApplied\": True,\n      \"allowAttributeOverrides\": {\n        \"amortizationType\": True,\n        \"graceOnArrearsAgeing\": True,\n        \"graceOnPrincipalAndInterestPayment\": True,\n        \"inArrearsTolerance\": True\n      },\n      \"allowCompoundingOnEod\": False,\n      \"allowFullTermForTranche\": False,\n      \"allowPartialPeriodInterestCalculation\": True,\n      \"allowVariableInstallments\": False,\n      \"amortizationType\": 1,\n      \"buyDownExpenseAccountId\": 27\n    },\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}\", {\n  method: \"PUT\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n    \"accountingRule\": 3,\n    \"allowApprovedDisbursedAmountsOverApplied\": true,\n    \"allowAttributeOverrides\": {\n      \"amortizationType\": true,\n      \"graceOnArrearsAgeing\": true,\n      \"graceOnPrincipalAndInterestPayment\": true,\n      \"inArrearsTolerance\": true\n    },\n    \"allowCompoundingOnEod\": false,\n    \"allowFullTermForTranche\": false,\n    \"allowPartialPeriodInterestCalculation\": true,\n    \"allowVariableInstallments\": false,\n    \"amortizationType\": 1,\n    \"buyDownExpenseAccountId\": 27\n  }),\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"\"\"\n        {\n          \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n          \"accountingRule\": 3,\n          \"allowApprovedDisbursedAmountsOverApplied\": true,\n          \"allowAttributeOverrides\": {\n            \"amortizationType\": true,\n            \"graceOnArrearsAgeing\": true,\n            \"graceOnPrincipalAndInterestPayment\": true,\n            \"inArrearsTolerance\": true\n          },\n          \"allowCompoundingOnEod\": false,\n          \"allowFullTermForTranche\": false,\n          \"allowPartialPeriodInterestCalculation\": true,\n          \"allowVariableInstallments\": false,\n          \"amortizationType\": 1,\n          \"buyDownExpenseAccountId\": 27\n        }\n        \"\"\"))\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"payload := strings.NewReader(`{\n  \"accountMovesOutOfNPAOnlyOnArrearsCompletion\": false,\n  \"accountingRule\": 3,\n  \"allowApprovedDisbursedAmountsOverApplied\": true,\n  \"allowAttributeOverrides\": {\n    \"amortizationType\": true,\n    \"graceOnArrearsAgeing\": true,\n    \"graceOnPrincipalAndInterestPayment\": true,\n    \"inArrearsTolerance\": true\n  },\n  \"allowCompoundingOnEod\": false,\n  \"allowFullTermForTranche\": false,\n  \"allowPartialPeriodInterestCalculation\": true,\n  \"allowVariableInstallments\": false,\n  \"amortizationType\": 1,\n  \"buyDownExpenseAccountId\": 27\n}`)\nreq, _ := http.NewRequest(\"PUT\", \"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}\", payload)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nreq.Header.Set(\"Content-Type\", \"application/json\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}},"/v2/loanproducts/{productId}/activate":{"post":{"description":"Releases the product for use.\n\nA product created through the V2 contract starts as DRAFT: it cannot originate loans whatever its start and close dates say, and it appears in no product selection list. Activating it releases it, after which start_date and close_date govern origination in the usual way.\n\nOne-way: there is no transition back to DRAFT — withdrawing a live product from lending is a past close_date. Idempotent: activating an already-active product succeeds and reports no change. Products created through the V1 contract have no activation status and are rejected here — they were never under this lifecycle.\n\nTakes no request body.","operationId":"activateLoanProductV2","parameters":[{"description":"productId","in":"path","name":"productId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutLoanProductsV2ProductIdResponse"}}},"description":"OK"}},"summary":"Activate a Loan Product (V2)","tags":["Loan Products"],"x-codeSamples":[{"lang":"cURL","source":"curl -X POST \\\n  'http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}/activate' \\\n  -u '{username}:{password}' \\\n  -H 'Tenant-Identifier: default'"},{"lang":"Python","source":"import requests\n\nresponse = requests.post(\n    \"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}/activate\",\n    auth=(\"{username}\", \"{password}\"),\n    headers={\"Tenant-Identifier\": \"default\"},\n)\nprint(response.json())"},{"lang":"Node.js","source":"const response = await fetch(\"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}/activate\", {\n  method: \"POST\",\n  headers: {\n    Authorization: \"Basic \" + Buffer.from(\"{username}:{password}\").toString(\"base64\"),\n    \"Tenant-Identifier\": \"default\",\n  },\n});\nconsole.log(await response.json());"},{"lang":"Java","source":"HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}/activate\"))\n    .header(\"Authorization\", \"Basic \"\n        + Base64.getEncoder().encodeToString(\"{username}:{password}\".getBytes()))\n    .header(\"Tenant-Identifier\", \"default\")\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"},{"lang":"Go","source":"req, _ := http.NewRequest(\"POST\", \"http://localhost:8080/lokta-lms/api/v2/loanproducts/{productId}/activate\", nil)\nreq.SetBasicAuth(\"{username}\", \"{password}\")\nreq.Header.Set(\"Tenant-Identifier\", \"default\")\nres, _ := http.DefaultClient.Do(req)\ndefer res.Body.Close()\ndata, _ := io.ReadAll(res.Body)\nfmt.Println(string(data))"}]}}},"components":{"schemas":{"AddressData":{"type":"object","properties":{"addressId":{"type":"integer","format":"int64"},"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"addressLine3":{"type":"string"},"addressType":{"type":"string"},"addressTypeId":{"type":"integer","format":"int64"},"addressTypeIdOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"city":{"type":"string"},"clientID":{"type":"integer","format":"int64"},"countryId":{"type":"integer","format":"int64"},"countryIdOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"countryName":{"type":"string"},"countyDistrict":{"type":"string"},"createdBy":{"type":"string"},"createdOn":{"type":"string","format":"date"},"isActive":{"type":"boolean"},"latitude":{"type":"number"},"longitude":{"type":"number"},"postalCode":{"type":"string"},"stateName":{"type":"string"},"stateProvinceId":{"type":"integer","format":"int64"},"stateProvinceIdOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"street":{"type":"string"},"townVillage":{"type":"string"},"updatedBy":{"type":"string"},"updatedOn":{"type":"string","format":"date"}}},"AdvancedPaymentData":{"type":"object","properties":{"futureInstallmentAllocationRule":{"type":"string"},"paymentAllocationOrder":{"type":"array","items":{"$ref":"#/components/schemas/PaymentAllocationOrder"}},"transactionType":{"type":"string"}}},"AllowAttributeOverrides":{"type":"object","properties":{"amortizationType":{"type":"boolean","example":true},"graceOnArrearsAgeing":{"type":"boolean","example":true},"graceOnPrincipalAndInterestPayment":{"type":"boolean","example":true},"inArrearsTolerance":{"type":"boolean","example":true},"interestCalculationPeriodType":{"type":"boolean","example":true},"interestType":{"type":"boolean","example":true},"repaymentEvery":{"type":"boolean","example":true},"transactionProcessingStrategyCode":{"type":"boolean","example":true}}},"BodyPart":{"type":"object","properties":{"contentDisposition":{"$ref":"#/components/schemas/ContentDisposition"},"entity":{"type":"object"},"headers":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"properties":{"empty":{"type":"boolean"}}},"mediaType":{"$ref":"#/components/schemas/MediaType"},"messageBodyWorkers":{"$ref":"#/components/schemas/MessageBodyWorkers"},"parameterizedHeaders":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/ParameterizedHeader"}},"properties":{"empty":{"type":"boolean"}}},"parent":{"$ref":"#/components/schemas/MultiPart"},"providers":{"$ref":"#/components/schemas/Providers"}}},"ChangePwdUsersUserIdRequest":{"type":"object","description":"ChangePwdUsersUserIdRequest","properties":{"password":{"type":"string","example":"password"},"repeatPassword":{"type":"string","example":"repeatPassword"}}},"ChangePwdUsersUserIdResponse":{"type":"object","description":"ChangePwdUsersUserIdResponse","properties":{"changes":{"$ref":"#/components/schemas/ChangePwdUsersUserIdResponseChanges"},"officeId":{"type":"integer","format":"int64","example":1},"resourceId":{"type":"integer","format":"int64","example":11}}},"ChangePwdUsersUserIdResponseChanges":{"type":"object","properties":{"password":{"type":"boolean","example":true}}},"ChargeData":{"type":"object","properties":{"accountMappingForChargeConfig":{"type":"string"},"active":{"type":"boolean"},"amount":{"type":"number"},"assetAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GLAccountData"}},"capitalizable":{"type":"boolean"},"capitalizeByDefault":{"type":"boolean"},"chargeAppliesTo":{"$ref":"#/components/schemas/EnumOptionData"},"chargeAppliesToOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"chargeCalculationType":{"$ref":"#/components/schemas/EnumOptionData"},"chargeCalculationTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"chargePaymentMode":{"$ref":"#/components/schemas/EnumOptionData"},"chargePaymetModeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"chargeTimeType":{"$ref":"#/components/schemas/EnumOptionData"},"chargeTimeTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"clientChargeCalculationTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"clientChargeTimeTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"code":{"type":"string"},"currency":{"$ref":"#/components/schemas/CurrencyData"},"currencyOptions":{"type":"array","items":{"$ref":"#/components/schemas/CurrencyData"}},"eirClassification":{"$ref":"#/components/schemas/EnumOptionData"},"eirClassificationOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"expenseAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GLAccountData"}},"feeFrequency":{"$ref":"#/components/schemas/EnumOptionData"},"feeFrequencyOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"feeInterval":{"type":"integer","format":"int32"},"feeOnMonthDay":{"type":"object","properties":{"dayOfMonth":{"type":"integer","format":"int32"},"month":{"type":"string","enum":["JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"]},"monthValue":{"type":"integer","format":"int32"}}},"freeWithdrawal":{"type":"boolean"},"freeWithdrawalChargeFrequency":{"type":"integer","format":"int32"},"id":{"type":"integer","format":"int64"},"incomeOrLiabilityAccount":{"$ref":"#/components/schemas/GLAccountData"},"incomeOrLiabilityAccountOptions":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/GLAccountData"}}},"isPaymentType":{"type":"boolean"},"loanChargeCalculationTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"loanChargeTimeTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"maxCap":{"type":"number"},"minCap":{"type":"number"},"name":{"type":"string"},"overdueInstallmentCharge":{"type":"boolean"},"paymentTypeOptions":{"$ref":"#/components/schemas/PaymentTypeData"},"penalty":{"type":"boolean"},"restartFrequency":{"type":"integer","format":"int32"},"restartFrequencyEnum":{"type":"integer","format":"int32"},"savingsChargeCalculationTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"savingsChargeTimeTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"shareChargeCalculationTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"shareChargeTimeTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"taxGroup":{"$ref":"#/components/schemas/TaxGroupData"},"taxGroupOptions":{"type":"array","items":{"$ref":"#/components/schemas/TaxGroupData"}}}},"ChargeRequest":{"type":"object","properties":{"active":{"type":"boolean"},"amount":{"type":"number","format":"double"},"capitalizable":{"type":"boolean"},"capitalizeByDefault":{"type":"boolean"},"chargeAppliesTo":{"type":"integer","format":"int32"},"chargeCalculationType":{"type":"integer","format":"int32"},"chargePaymentMode":{"type":"integer","format":"int32"},"chargeTimeType":{"type":"integer","format":"int32"},"code":{"type":"string"},"currencyCode":{"type":"string"},"eirClassification":{"type":"integer","format":"int32"},"enablePaymentType":{"type":"boolean"},"feeFrequency":{"type":"string"},"feeInterval":{"type":"string"},"feeOnMonthDay":{"type":"string"},"locale":{"type":"string"},"maxCap":{"type":"number"},"minCap":{"type":"number"},"monthDayFormat":{"type":"string"},"name":{"type":"string"},"paymentTypeId":{"type":"integer","format":"int64"},"penalty":{"type":"boolean"},"taxGroupId":{"type":"integer","format":"int64"}}},"ClientAddressRequest":{"type":"object","description":"Address requests","properties":{"addressId":{"type":"integer","format":"int64"},"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"addressLine3":{"type":"string"},"addressTypeId":{"type":"integer","format":"int64"},"city":{"type":"string"},"countryId":{"type":"integer","format":"int64"},"countyDistrict":{"type":"string"},"createdBy":{"type":"string"},"createdOn":{"type":"string"},"isActive":{"type":"boolean"},"latitude":{"type":"number"},"longitude":{"type":"number"},"postalCode":{"type":"string"},"stateProvinceId":{"type":"integer","format":"int64"},"townVillage":{"type":"string"},"updatedBy":{"type":"string"},"updatedOn":{"type":"string"}}},"ClientFamilyMemberRequest":{"type":"object","properties":{"age":{"type":"integer","format":"int64"},"clientId":{"type":"integer","format":"int64"},"dateFormat":{"type":"string"},"dateOfBirth":{"type":"string"},"familyMembers":{"type":"string"},"firstName":{"type":"string"},"genderId":{"type":"integer","format":"int64"},"id":{"type":"integer","format":"int64"},"isDependent":{"type":"boolean"},"lastName":{"type":"string"},"locale":{"type":"string"},"maritalStatusId":{"type":"integer","format":"int64"},"middleName":{"type":"string"},"mobileNumber":{"type":"string"},"professionId":{"type":"integer","format":"int64"},"qualification":{"type":"string"},"relationshipId":{"type":"integer","format":"int64"}}},"ClientFamilyMembersData":{"type":"object","properties":{"age":{"type":"integer","format":"int64"},"clientId":{"type":"integer","format":"int64"},"dateOfBirth":{"type":"string","format":"date"},"firstName":{"type":"string"},"gender":{"type":"string"},"genderId":{"type":"integer","format":"int64"},"genderIdOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"id":{"type":"integer","format":"int64"},"isDependent":{"type":"boolean"},"lastName":{"type":"string"},"maritalStatus":{"type":"string"},"maritalStatusId":{"type":"integer","format":"int64"},"maritalStatusIdOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"middleName":{"type":"string"},"mobileNumber":{"type":"string"},"profession":{"type":"string"},"professionId":{"type":"integer","format":"int64"},"professionIdOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"qualification":{"type":"string"},"relationship":{"type":"string"},"relationshipId":{"type":"integer","format":"int64"},"relationshipIdOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}}}},"ClientIdentifierData":{"type":"object","properties":{"allowedDocumentTypes":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"clientId":{"type":"integer","format":"int64"},"description":{"type":"string"},"documentKey":{"type":"string"},"documentType":{"$ref":"#/components/schemas/CodeValueData"},"id":{"type":"integer","format":"int64"},"status":{"type":"string"}}},"ClientIdentifierRequest":{"type":"object","properties":{"description":{"type":"string","example":"Document has been verified"},"documentKey":{"type":"string","example":"KA-54677"},"documentTypeId":{"type":"integer","format":"int64","example":1},"status":{"type":"string","example":"Active"}}},"ClientSearchData":{"type":"object","properties":{"accountNumber":{"type":"string"},"activationDate":{"type":"string","format":"date"},"createdDate":{"type":"string","format":"date-time"},"displayName":{"type":"string"},"externalId":{"$ref":"#/components/schemas/ExternalId"},"id":{"type":"integer","format":"int64"},"mobileNo":{"type":"string"},"officeId":{"type":"integer","format":"int64"},"officeName":{"type":"string"},"status":{"$ref":"#/components/schemas/EnumOptionData"}}},"ClientTextSearch":{"type":"object","properties":{"text":{"type":"string"}}},"CodeValueData":{"type":"object","properties":{"active":{"type":"boolean"},"description":{"type":"string"},"id":{"type":"integer","format":"int64"},"mandatory":{"type":"boolean"},"name":{"type":"string"},"position":{"type":"integer","format":"int32"}}},"CommandProcessingResult":{"type":"object","properties":{"changes":{"type":"object","additionalProperties":{"type":"object"}},"clientId":{"type":"integer","format":"int64"},"commandId":{"type":"integer","format":"int64"},"creditBureauReportData":{"type":"object","additionalProperties":{"type":"object"}},"externalIdOrNull":{"$ref":"#/components/schemas/ExternalId"},"glimId":{"type":"integer","format":"int64"},"groupId":{"type":"integer","format":"int64"},"gsimId":{"type":"integer","format":"int64"},"loanExternalId":{"$ref":"#/components/schemas/ExternalId"},"loanId":{"type":"integer","format":"int64"},"officeId":{"type":"integer","format":"int64"},"productId":{"type":"integer","format":"int64"},"resourceExternalId":{"$ref":"#/components/schemas/ExternalId"},"resourceId":{"type":"integer","format":"int64"},"resourceIdentifier":{"type":"string"},"rollbackTransaction":{"type":"boolean"},"savingsId":{"type":"integer","format":"int64"},"subResourceExternalId":{"$ref":"#/components/schemas/ExternalId"},"subResourceId":{"type":"integer","format":"int64"},"transactionId":{"type":"string"}}},"ContentDisposition":{"type":"object","properties":{"creationDate":{"type":"string","format":"date-time"},"fileName":{"type":"string"},"modificationDate":{"type":"string","format":"date-time"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"readDate":{"type":"string","format":"date-time"},"size":{"type":"integer","format":"int64"},"type":{"type":"string"}}},"CreditAllocationData":{"type":"object","properties":{"creditAllocationOrder":{"type":"array","items":{"$ref":"#/components/schemas/CreditAllocationOrder"}},"transactionType":{"type":"string"}}},"CreditAllocationOrder":{"type":"object","properties":{"creditAllocationRule":{"type":"string"},"order":{"type":"integer","format":"int32"}}},"CurrencyData":{"type":"object","properties":{"code":{"type":"string"},"decimalPlaces":{"type":"integer","format":"int32"},"displayLabel":{"type":"string"},"displaySymbol":{"type":"string"},"inMultiplesOf":{"type":"integer","format":"int32"},"name":{"type":"string"},"nameCode":{"type":"string"}}},"DateParam":{"type":"object"},"DeleteChargesChargeIdResponse":{"type":"object","description":"DeleteChargesChargeIdResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":1}}},"DeleteClientsClientIdIdentifiersIdentifierIdResponse":{"type":"object","description":"DeleteClientsClientIdIdentifiersIdentifierIdResponse","properties":{"clientId":{"type":"integer","format":"int64","example":1},"officeId":{"type":"integer","format":"int64","example":1},"resourceId":{"type":"integer","format":"int64","example":3}}},"DeleteClientsClientIdResponse":{"type":"object","description":"DeleteClientsClientIdResponse","properties":{"clientId":{"type":"integer","format":"int64","example":3},"officeId":{"type":"integer","format":"int64","example":1},"resourceExternalId":{"type":"string","example":"123-456"},"resourceId":{"type":"integer","format":"int64","example":3}}},"DeleteCodesResponse":{"type":"object","description":"DeleteCodesResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":4}}},"DeleteLoansLoanIdResponse":{"type":"object","description":"DeleteLoansLoanIdResponse","properties":{"clientId":{"type":"integer","format":"int64","example":1},"loanId":{"type":"integer","format":"int64","example":1},"officeId":{"type":"integer","format":"int64","example":1},"resourceExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"resourceId":{"type":"integer","format":"int64","example":1}}},"DeleteReportsResponse":{"type":"object","description":"DeleteReportsResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":132}}},"DeleteRolesRoleIdResponse":{"type":"object","description":"DeleteRolesRoleIdResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":1}}},"DeleteUsersUserIdResponse":{"type":"object","description":"DeleteUsersUserIdResponse","properties":{"changes":{"$ref":"#/components/schemas/DeleteUsersUserIdResponseChanges"},"officeId":{"type":"integer","format":"int64","example":1},"resourceId":{"type":"integer","format":"int64","example":11}}},"DeleteUsersUserIdResponseChanges":{"type":"object"},"DelinquencyBucketData":{"type":"object","properties":{"bucketType":{"type":"string","enum":["REGULAR","WORKING_CAPITAL"]},"id":{"type":"integer","format":"int64"},"minimumPaymentPeriodAndRule":{"$ref":"#/components/schemas/DelinquencyMinimumPaymentPeriodAndRuleData"},"name":{"type":"string"},"ranges":{"type":"array","items":{"$ref":"#/components/schemas/DelinquencyRangeData"}}}},"DelinquencyMinimumPaymentPeriodAndRuleData":{"type":"object","properties":{"frequency":{"type":"integer","format":"int32"},"frequencyType":{"type":"string","enum":["DAYS","WEEKS","MONTHS","YEARS"]},"minimumPayment":{"type":"number"},"minimumPaymentType":{"type":"string","enum":["PERCENTAGE","FLAT"]}}},"DelinquencyRangeData":{"type":"object","properties":{"classification":{"type":"string"},"id":{"type":"integer","format":"int64"},"maximumAgeDays":{"type":"integer","format":"int32"},"minimumAgeDays":{"type":"integer","format":"int32"}}},"DocumentCreateResponse":{"type":"object","properties":{"resourceId":{"type":"integer","format":"int64"},"resourceIdentifier":{"type":"string"}}},"DocumentData":{"type":"object","properties":{"description":{"type":"string"},"fileName":{"type":"string"},"id":{"type":"integer","format":"int64"},"location":{"type":"string"},"name":{"type":"string"},"parentEntityId":{"type":"integer","format":"int64"},"parentEntityType":{"type":"string"},"size":{"type":"integer","format":"int64"},"storageType":{"type":"integer","format":"int32"},"type":{"type":"string"}}},"DocumentDeleteResponse":{"type":"object","properties":{"resourceId":{"type":"integer","format":"int64"},"resourceIdentifier":{"type":"string"}}},"DocumentUpdateResponse":{"type":"object","properties":{"resourceId":{"type":"integer","format":"int64"},"resourceIdentifier":{"type":"string"}}},"EnumOptionData":{"type":"object","properties":{"code":{"type":"string"},"id":{"type":"integer","format":"int64"},"value":{"type":"string"}}},"ExternalId":{"type":"object","properties":{"empty":{"type":"boolean"},"value":{"type":"string"}}},"FormDataBodyPart":{"type":"object","properties":{"content":{"type":"object"},"contentDisposition":{"$ref":"#/components/schemas/ContentDisposition"},"entity":{"type":"object"},"fileName":{"type":"string"},"formDataContentDisposition":{"$ref":"#/components/schemas/FormDataContentDisposition"},"headers":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"properties":{"empty":{"type":"boolean"}}},"mediaType":{"$ref":"#/components/schemas/MediaType"},"messageBodyWorkers":{"$ref":"#/components/schemas/MessageBodyWorkers"},"name":{"type":"string"},"parameterizedHeaders":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/ParameterizedHeader"}},"properties":{"empty":{"type":"boolean"}}},"parent":{"$ref":"#/components/schemas/MultiPart"},"providers":{"$ref":"#/components/schemas/Providers"},"simple":{"type":"boolean"},"value":{"type":"string"}}},"FormDataContentDisposition":{"type":"object","properties":{"creationDate":{"type":"string","format":"date-time"},"fileName":{"type":"string"},"modificationDate":{"type":"string","format":"date-time"},"name":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"readDate":{"type":"string","format":"date-time"},"size":{"type":"integer","format":"int64"},"type":{"type":"string"}}},"GLAccountData":{"type":"object","properties":{"accountTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"allowedAssetsTagOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"allowedEquityTagOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"allowedExpensesTagOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"allowedIncomeTagOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"allowedLiabilitiesTagOptions":{"type":"array","items":{"$ref":"#/components/schemas/CodeValueData"}},"assetHeaderAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GLAccountData"}},"description":{"type":"string"},"disabled":{"type":"boolean"},"equityHeaderAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GLAccountData"}},"expenseHeaderAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GLAccountData"}},"glCode":{"type":"string"},"id":{"type":"integer","format":"int64"},"incomeHeaderAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GLAccountData"}},"liabilityHeaderAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GLAccountData"}},"manualEntriesAllowed":{"type":"boolean"},"name":{"type":"string"},"nameDecorated":{"type":"string"},"organizationRunningBalance":{"type":"integer","format":"int64"},"parentId":{"type":"integer","format":"int64"},"rowIndex":{"type":"integer","format":"int32"},"tagId":{"$ref":"#/components/schemas/CodeValueData"},"type":{"$ref":"#/components/schemas/EnumOptionData"},"usage":{"$ref":"#/components/schemas/EnumOptionData"},"usageOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}}}},"GetChargeOffReasonToExpenseAccountMappings":{"type":"object","properties":{"expenseAccount":{"$ref":"#/components/schemas/GetGLAccountData"},"reasonCodeValue":{"$ref":"#/components/schemas/GetCodeValuesDataResponse"}}},"GetChargesAppliesToResponse":{"type":"object","properties":{"code":{"type":"string","example":"chargeAppliesTo.loan"},"description":{"type":"string","example":"Loan"},"id":{"type":"integer","format":"int64","example":1}}},"GetChargesCalculationTypeResponse":{"type":"object","properties":{"code":{"type":"string","example":"chargeCalculationType.flat"},"description":{"type":"string","example":"Flat"},"id":{"type":"integer","format":"int64","example":1}}},"GetChargesCurrencyResponse":{"type":"object","properties":{"code":{"type":"string","example":"USD"},"decimalPlaces":{"type":"integer","format":"int32","example":2},"displayLabel":{"type":"string","example":"US Dollar ($)"},"displaySymbol":{"type":"string","example":"$"},"name":{"type":"string","example":"US Dollar"},"nameCode":{"type":"string","example":"currency.USD"}}},"GetChargesPaymentModeResponse":{"type":"object","properties":{"code":{"type":"string","example":"chargepaymentmode.accounttransfer"},"description":{"type":"string","example":"Account Transfer"},"id":{"type":"integer","format":"int64","example":1}}},"GetChargesResponse":{"type":"object","description":"GetChargesResponse","properties":{"active":{"type":"boolean","example":true},"amount":{"type":"number","format":"double","example":230.56},"chargeAppliesTo":{"$ref":"#/components/schemas/GetChargesAppliesToResponse"},"chargeCalculationType":{"$ref":"#/components/schemas/GetChargesCalculationTypeResponse"},"chargePaymentMode":{"$ref":"#/components/schemas/GetChargesPaymentModeResponse"},"chargeTimeType":{"$ref":"#/components/schemas/GetChargesTimeTypeResponse"},"currency":{"$ref":"#/components/schemas/GetChargesCurrencyResponse"},"id":{"type":"integer","format":"int64","example":1},"maxCap":{"type":"number"},"minCap":{"type":"number"},"name":{"type":"string","example":"Loan Service fee"},"penalty":{"type":"boolean","example":false},"taxGroup":{"$ref":"#/components/schemas/GetChargesTaxGroup"}}},"GetChargesTaxGroup":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"tax"}}},"GetChargesTimeTypeResponse":{"type":"object","properties":{"code":{"type":"string","example":"chargeTimeType.disbursement"},"description":{"type":"string","example":"Disbursement"},"id":{"type":"integer","format":"int64","example":1}}},"GetClassificationToIncomeAccountMappings":{"type":"object","properties":{"classificationCodeValue":{"$ref":"#/components/schemas/GetCodeValuesDataResponse"},"incomeAccount":{"$ref":"#/components/schemas/GetGLAccountData"}}},"GetClientStatus":{"type":"object","properties":{"code":{"type":"string","example":"clientStatusType.pending"},"description":{"type":"string","example":"Pending"},"id":{"type":"integer","format":"int64","example":100}}},"GetClientsClientIdAccountsResponse":{"type":"object","description":"GetClientsClientIdAccountsResponse","properties":{"loanAccounts":{"type":"array","items":{"$ref":"#/components/schemas/GetClientsLoanAccounts"},"uniqueItems":true},"savingsAccounts":{"type":"array","items":{"$ref":"#/components/schemas/GetClientsSavingsAccounts"},"uniqueItems":true},"workingCapitalLoanAccounts":{"type":"array","items":{"$ref":"#/components/schemas/GetClientsWorkingCapitalLoanAccounts"},"uniqueItems":true}}},"GetClientsClientIdIdentifiersResponse":{"type":"object","description":"GetClientsClientIdIdentifiersResponse","properties":{"clientId":{"type":"integer","format":"int64","example":1},"description":{"type":"string","example":"Issued in the year 2--7"},"documentKey":{"type":"string","example":"12345"},"documentType":{"$ref":"#/components/schemas/GetClientsDocumentType"},"id":{"type":"integer","format":"int64","example":2}}},"GetClientsClientIdResponse":{"type":"object","description":"GetClientsClientIdResponse","properties":{"accountNo":{"type":"string","example":"000000027"},"activationDate":{"type":"string","format":"date"},"active":{"type":"boolean","example":true},"displayName":{"type":"string","example":"savings test"},"emailAddress":{"type":"string","example":"test@test.com"},"externalId":{"type":"string","example":"123"},"firstname":{"type":"string","example":"savings"},"groups":{"type":"array","example":[],"items":{"$ref":"#/components/schemas/GetClientsGroups"}},"id":{"type":"integer","format":"int64","example":27},"lastname":{"type":"string","example":"test"},"officeId":{"type":"integer","format":"int64","example":1},"officeName":{"type":"string","example":"Head Office"},"savingsProductId":{"type":"integer","format":"int64","example":4},"savingsProductName":{"type":"string","example":"account overdraft"},"status":{"$ref":"#/components/schemas/GetClientsClientIdStatus"},"timeline":{"$ref":"#/components/schemas/GetClientsTimeline"}}},"GetClientsClientIdStatus":{"type":"object","properties":{"code":{"type":"string","example":"clientStatusType.active"},"description":{"type":"string","example":"Active"},"id":{"type":"integer","format":"int64","example":300}}},"GetClientsColumnHeaderData":{"type":"object","properties":{"columnDisplayType":{"type":"string","example":"INTEGER"},"columnLength":{"type":"integer","format":"int32","example":0},"columnName":{"type":"string","example":"client_id"},"columnType":{"type":"string","example":"bigint"},"columnValues":{"type":"array","example":[],"items":{"type":"string","example":"[]"}},"isColumnNullable":{"type":"boolean","example":false},"isColumnPrimaryKey":{"type":"boolean","example":true}}},"GetClientsDataTables":{"type":"object","properties":{"applicationTableName":{"type":"string","example":"m_client"},"columnHeaderData":{"type":"array","items":{"$ref":"#/components/schemas/GetClientsColumnHeaderData"},"uniqueItems":true},"registeredTableName":{"type":"string","example":"Address Details"}}},"GetClientsDocumentType":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":3},"name":{"type":"string","example":"Drivers License"}}},"GetClientsGroups":{"type":"object","example":[],"properties":{"accountNo":{"type":"string","example":"000000002"},"externalId":{"type":"integer","format":"int64","example":3},"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Group name"}}},"GetClientsLoanAccounts":{"type":"object","properties":{"accountNo":{"type":"string","example":"000000001"},"currency":{"$ref":"#/components/schemas/GetClientsLoansAccountsCurrency"},"externalId":{"type":"string","example":"456"},"id":{"type":"integer","format":"int64","example":1},"loanCycle":{"type":"integer","format":"int32","example":1},"loanType":{"$ref":"#/components/schemas/GetClientsLoanAccountsType"},"productId":{"type":"integer","format":"int64","example":1},"productName":{"type":"string","example":"TestOne"},"status":{"$ref":"#/components/schemas/GetClientsLoanAccountsStatus"}}},"GetClientsLoanAccountsStatus":{"type":"object","properties":{"active":{"type":"boolean","example":true},"closed":{"type":"boolean","example":false},"closedObligationsMet":{"type":"boolean","example":false},"closedRescheduled":{"type":"boolean","example":false},"closedWrittenOff":{"type":"boolean","example":false},"code":{"type":"string","example":"loanStatusType.active"},"description":{"type":"string","example":"Active"},"id":{"type":"integer","format":"int64","example":300},"overpaid":{"type":"boolean","example":false},"pendingApproval":{"type":"boolean","example":false},"waitingForDisbursal":{"type":"boolean","example":false}}},"GetClientsLoanAccountsType":{"type":"object","properties":{"code":{"type":"string","example":"loanType.individual"},"description":{"type":"string","example":"Individual"},"id":{"type":"integer","format":"int64","example":1}}},"GetClientsLoansAccountsCurrency":{"type":"object","properties":{"code":{"type":"string","example":"USD"},"decimalPlaces":{"type":"integer","format":"int32","example":2},"displayLabel":{"type":"string","example":"US Dollar ($)"},"displaySymbol":{"type":"string","example":"$"},"name":{"type":"string","example":"US Dollar"},"nameCode":{"type":"string","example":"currency.USD"}}},"GetClientsOfficeOptions":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Head Office"},"nameDecorated":{"type":"string","example":"Head Office"}}},"GetClientsPageItemsResponse":{"type":"object","properties":{"accountNo":{"type":"string","example":"000000002"},"active":{"type":"boolean","example":false},"displayName":{"type":"string","example":"Home Farm Produce"},"emailAddress":{"type":"string","example":"test@test.com"},"fullname":{"type":"string","example":"Home Farm Produce"},"id":{"type":"integer","format":"int64","example":2},"officeId":{"type":"integer","format":"int64","example":1},"officeName":{"type":"string","example":"Head Office"},"status":{"$ref":"#/components/schemas/GetClientStatus"}}},"GetClientsResponse":{"type":"object","description":"GetClientsResponse","properties":{"pageItems":{"type":"array","items":{"$ref":"#/components/schemas/GetClientsPageItemsResponse"}},"totalFilteredRecords":{"type":"integer","format":"int32","example":2}}},"GetClientsSavingProductOptions":{"type":"object","properties":{"allowOverdraft":{"type":"boolean","example":false},"id":{"type":"integer","format":"int64","example":4},"name":{"type":"string","example":"account overdraft"},"withdrawalFeeForTransfers":{"type":"boolean","example":false}}},"GetClientsSavingsAccounts":{"type":"object","properties":{"accountNo":{"type":"string","example":"000000007"},"currency":{"$ref":"#/components/schemas/GetClientsSavingsAccountsCurrency"},"depositType":{"$ref":"#/components/schemas/GetClientsSavingsAccountsDepositType"},"id":{"type":"integer","format":"int64","example":7},"productId":{"type":"integer","format":"int64","example":2},"productName":{"type":"string","example":"Other product"},"shortProductName":{"type":"string","example":"OP"},"status":{"$ref":"#/components/schemas/GetClientsSavingsAccountsStatus"}}},"GetClientsSavingsAccountsCurrency":{"type":"object","properties":{"code":{"type":"string","example":"USD"},"decimalPlaces":{"type":"integer","format":"int32","example":2},"displayLabel":{"type":"string","example":"US Dollar ($)"},"displaySymbol":{"type":"string","example":"$"},"name":{"type":"string","example":"US Dollar"},"nameCode":{"type":"string","example":"currency.USD"}}},"GetClientsSavingsAccountsDepositType":{"type":"object","properties":{"code":{"type":"string","example":"depositAccountType.savingsDeposit"},"id":{"type":"integer","format":"int64","example":100},"value":{"type":"string","example":"Savings"}}},"GetClientsSavingsAccountsStatus":{"type":"object","properties":{"active":{"type":"boolean","example":false},"approved":{"type":"boolean","example":false},"closed":{"type":"boolean","example":false},"code":{"type":"string","example":"savingsAccountStatusType.submitted.and.pending.approval"},"id":{"type":"integer","format":"int64","example":100},"matured":{"type":"boolean","example":false},"prematureClosed":{"type":"boolean","example":false},"rejected":{"type":"boolean","example":false},"submittedAndPendingApproval":{"type":"boolean","example":true},"transferInProgress":{"type":"boolean","example":false},"transferOnHold":{"type":"boolean","example":false},"value":{"type":"string","example":"Submitted and pending approval"},"withdrawnByApplicant":{"type":"boolean","example":false}}},"GetClientsStaffOptions":{"type":"object","properties":{"displayName":{"type":"string","example":"sjs, xyz"},"firstname":{"type":"string","example":"xyz"},"id":{"type":"integer","format":"int64","example":1},"isActive":{"type":"boolean","example":true},"isLoanOfficer":{"type":"boolean","example":true},"lastname":{"type":"string","example":"sjs"},"officeId":{"type":"integer","format":"int64","example":1},"officeName":{"type":"string","example":"Head Office"}}},"GetClientsTemplateResponse":{"type":"object","description":"GetClientsTemplateResponse","properties":{"activationDate":{"type":"string","format":"date"},"datatables":{"type":"array","items":{"$ref":"#/components/schemas/GetClientsDataTables"},"uniqueItems":true},"officeId":{"type":"integer","format":"int64","example":1},"officeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetClientsOfficeOptions"},"uniqueItems":true},"savingProductOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetClientsSavingProductOptions"},"uniqueItems":true},"staffOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetClientsStaffOptions"},"uniqueItems":true}}},"GetClientsTimeline":{"type":"object","properties":{"activatedByFirstname":{"type":"string","example":"App"},"activatedByLastname":{"type":"string","example":"Administrator"},"activatedByUsername":{"type":"string","example":"admin"},"activatedOnDate":{"type":"string","format":"date"},"submittedByFirstname":{"type":"string","example":"App"},"submittedByLastname":{"type":"string","example":"Administrator"},"submittedByUsername":{"type":"string","example":"admin"},"submittedOnDate":{"type":"string","format":"date"}}},"GetClientsWorkingCapitalLoanAccounts":{"type":"object","properties":{"accountNo":{"type":"string","example":"WCL-1"},"amountPaid":{"type":"number","example":0},"currency":{"$ref":"#/components/schemas/GetClientsWorkingCapitalLoanAccountsCurrency"},"externalId":{"type":"string","example":"ext-wcl-001"},"id":{"type":"integer","format":"int64","example":1},"inArrears":{"type":"boolean","example":false},"loanBalance":{"type":"number","example":10000},"loanCycle":{"type":"integer","format":"int32","description":"Loan cycle, null for working capital loans"},"loanType":{"type":"object","description":"Loan type, null for working capital loans"},"originalLoan":{"type":"number","example":10000},"parentAccountNumber":{"type":"string","description":"Parent account number, null for working capital loans"},"productId":{"type":"integer","format":"int64","example":1},"productName":{"type":"string","example":"Working Capital Product 1"},"shortProductName":{"type":"string","example":"WCP1"},"status":{"$ref":"#/components/schemas/GetClientsWorkingCapitalLoanAccountsStatus"},"timeline":{"type":"object","description":"Timeline (submittedOnDate, approvedOnDate, etc.)"}}},"GetClientsWorkingCapitalLoanAccountsCurrency":{"type":"object","properties":{"code":{"type":"string","example":"USD"},"decimalPlaces":{"type":"integer","format":"int32","example":2},"displayLabel":{"type":"string","example":"US Dollar ($)"},"displaySymbol":{"type":"string","example":"$"},"name":{"type":"string","example":"US Dollar"},"nameCode":{"type":"string","example":"currency.USD"}}},"GetClientsWorkingCapitalLoanAccountsStatus":{"type":"object","properties":{"code":{"type":"string","example":"loanStatusType.submitted.and.pending.approval"},"id":{"type":"integer","format":"int64","example":100},"value":{"type":"string","example":"Submitted and pending approval"}}},"GetCodeValuesDataResponse":{"type":"object","description":"GetCodeValuesDataResponse","properties":{"active":{"type":"boolean","example":true},"description":{"type":"string","example":"Passport information"},"id":{"type":"integer","format":"int64","example":1},"mandatory":{"type":"boolean","example":false},"name":{"type":"string","example":"Passport"},"position":{"type":"integer","format":"int32","example":0}}},"GetCodesResponse":{"type":"object","description":"GetCodesResponse","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Education"},"systemDefined":{"type":"boolean","example":true}}},"GetGLAccountData":{"type":"object","properties":{"glCode":{"type":"string","example":"e4"},"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Written off"}}},"GetGlAccountMapping":{"type":"object","properties":{"glCode":{"type":"string","example":"012-34-65"},"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"Cash Account"}}},"GetLoanAccountingMappings":{"type":"object","properties":{"buyDownExpenseAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"chargeOffExpenseAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"chargeOffFraudExpenseAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"deferredIncomeLiabilityAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"fundSourceAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"goodwillCreditAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromBuyDownAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromCapitalizationAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromChargeOffFeesAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromChargeOffInterestAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromChargeOffPenaltyAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromFeeAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromGoodwillCreditFeesAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromGoodwillCreditInterestAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromGoodwillCreditPenaltyAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromPenaltyAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeFromRecoveryAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"interestOnLoanAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"loanPortfolioAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"overpaymentLiabilityAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"receivableFeeAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"receivableInterestAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"receivablePenaltyAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"transfersInSuspenseAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"writeOffAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"}}},"GetLoanCharge":{"type":"object","properties":{"active":{"type":"boolean","example":false},"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"flat install"},"penalty":{"type":"boolean","example":false}}},"GetLoanChargeCalculationType":{"type":"object","properties":{"code":{"type":"string","example":"chargeCalculationType.flat"},"description":{"type":"string","example":"Flat"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanChargeCurrency":{"type":"object","properties":{"code":{"type":"string","example":"USD"},"decimalPlaces":{"type":"integer","format":"int32","example":2},"displayLabel":{"type":"string","example":"US Dollar ($)"},"displaySymbol":{"type":"string","example":"$"},"name":{"type":"string","example":"US Dollar"},"nameCode":{"type":"string","example":"currency.USD"}}},"GetLoanChargeTemplateChargeAppliesTo":{"type":"object","properties":{"code":{"type":"string","example":"chargeAppliesTo.loan"},"description":{"type":"string","example":"Loan"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanChargeTimeType":{"type":"object","properties":{"code":{"type":"string","example":"chargeTimeType.disbursement"},"description":{"type":"string","example":"Disbursement"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanCurrency":{"type":"object","properties":{"code":{"type":"string","example":"UGX"},"decimalPlaces":{"type":"integer","format":"int32","example":2},"displayLabel":{"type":"string","example":"Uganda Shilling (USh)"},"displaySymbol":{"type":"string","example":"USh"},"name":{"type":"string","example":"Uganda Shilling"},"nameCode":{"type":"string","example":"currency.UGX"}}},"GetLoanFeeToIncomeAccountMappings":{"type":"object","properties":{"charge":{"$ref":"#/components/schemas/GetLoanCharge"},"chargeId":{"type":"integer","format":"int64","example":10},"incomeAccount":{"$ref":"#/components/schemas/GetGlAccountMapping"},"incomeAccountId":{"type":"integer","format":"int64","example":39}}},"GetLoanPaymentChannelToFundSourceMappings":{"type":"object","properties":{"fundSourceAccountId":{"type":"integer","format":"int64","example":39},"paymentTypeId":{"type":"integer","format":"int64","example":10}}},"GetLoanProductsAccountingMappingOptions":{"type":"object","properties":{"assetAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsAssetAccountOptions"},"uniqueItems":true},"expenseAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsExpenseAccountOptions"},"uniqueItems":true},"incomeAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsIncomeAccountOptions"},"uniqueItems":true},"liabilityAccountOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsLiabilityAccountOptions"},"uniqueItems":true}}},"GetLoanProductsAccountingRule":{"type":"object","properties":{"code":{"type":"string","example":"accountingRuleType.cash"},"description":{"type":"string","example":"CASH BASED"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoanProductsAmortizationType":{"type":"object","properties":{"code":{"type":"string","example":"amortizationType.equal.installments"},"description":{"type":"string","example":"Equal installments"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanProductsAssetAccountOptions":{"type":"object","properties":{"disabled":{"type":"boolean","example":false},"glCode":{"type":"string","example":"02"},"id":{"type":"integer","format":"int64","example":2},"manualEntriesAllowed":{"type":"boolean","example":true},"name":{"type":"string","example":"Loan portfolio"},"nameDecorated":{"type":"string","example":"Loan portfolio"},"organizationRunningBalance":{"type":"integer","format":"int32","example":60000},"tagId":{"$ref":"#/components/schemas/GetLoanProductsLiabilityTagId"},"type":{"$ref":"#/components/schemas/GetLoanProductsLiabilityType"},"usage":{"$ref":"#/components/schemas/GetLoanProductsLiabilityUsage"}}},"GetLoanProductsChargeAppliesTo":{"type":"object","properties":{"code":{"type":"string","example":"chargeAppliesTo.loan"},"description":{"type":"string","example":"Loan"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanProductsChargeOffReasonOptions":{"type":"object","description":"GetLoanProductsChargeOffReasonOptions","properties":{"active":{"type":"boolean","example":true},"description":{"type":"string","example":"Charge-Off reason description"},"id":{"type":"integer","format":"int64","example":2},"mandatory":{"type":"boolean","example":false},"name":{"type":"string","example":"debit_card"},"position":{"type":"integer","format":"int32","example":2}}},"GetLoanProductsChargeOptions":{"type":"object","properties":{"active":{"type":"boolean","example":true},"amount":{"type":"number","example":100},"chargeAppliesTo":{"$ref":"#/components/schemas/GetLoanProductsChargeAppliesTo"},"chargeCalculationType":{"$ref":"#/components/schemas/GetLoanChargeCalculationType"},"chargePaymentMode":{"$ref":"#/components/schemas/GetLoansChargePaymentMode"},"chargeTimeType":{"$ref":"#/components/schemas/GetLoanChargeTimeType"},"currency":{"$ref":"#/components/schemas/GetLoanProductsCurrencyOptions"},"id":{"type":"integer","format":"int64","example":5},"name":{"type":"string","example":"des charges"},"penalty":{"type":"boolean","example":false}}},"GetLoanProductsCurrency":{"type":"object","properties":{"code":{"type":"string","example":"USD"},"decimalPlaces":{"type":"integer","format":"int32","example":2},"displayLabel":{"type":"string","example":"US Dollar ($)"},"displaySymbol":{"type":"string","example":"$"},"inMultiplesOf":{"type":"integer","format":"int32","example":0},"name":{"type":"string","example":"US Dollar"},"nameCode":{"type":"string","example":"currency.USD"}}},"GetLoanProductsCurrencyOptions":{"type":"object","properties":{"code":{"type":"string","example":"USD"},"decimalPlaces":{"type":"integer","format":"int32","example":2},"displayLabel":{"type":"string","example":"US Dollar ($)"},"displaySymbol":{"type":"string","example":"$"},"name":{"type":"string","example":"US Dollar"},"nameCode":{"type":"string","example":"currency.USD"}}},"GetLoanProductsDaysInMonthType":{"type":"object","properties":{"code":{"type":"string","example":"DaysInMonthType.actual"},"description":{"type":"string","example":"Actual"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanProductsDaysInYearCustomStrategy":{"type":"object","properties":{"code":{"type":"string","example":"DaysInYearCustomStrategyType.fullLeapYear"},"description":{"type":"string","example":"Full Leap Year"},"id":{"type":"string","example":"FULL_LEAP_YEAR"}}},"GetLoanProductsDaysInYearType":{"type":"object","properties":{"code":{"type":"string","example":"DaysInYearType.actual"},"description":{"type":"string","example":"Actual"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanProductsExpenseAccountOptions":{"type":"object","properties":{"disabled":{"type":"boolean","example":false},"glCode":{"type":"string","example":"12"},"id":{"type":"integer","format":"int64","example":10},"manualEntriesAllowed":{"type":"boolean","example":true},"name":{"type":"string","example":"loans written off 2"},"nameDecorated":{"type":"string","example":"loans written off 2"},"organizationRunningBalance":{"type":"integer","format":"int32","example":0},"tagId":{"$ref":"#/components/schemas/GetLoanProductsLiabilityTagId"},"type":{"$ref":"#/components/schemas/GetLoanProductsExpenseType"},"usage":{"$ref":"#/components/schemas/GetLoanProductsLiabilityUsage"}}},"GetLoanProductsExpenseType":{"type":"object","properties":{"code":{"type":"string","example":"accountType.expense"},"description":{"type":"string","example":"EXPENSE"},"id":{"type":"integer","format":"int64","example":5}}},"GetLoanProductsIncomeAccountOptions":{"type":"object","properties":{"disabled":{"type":"boolean","example":false},"glCode":{"type":"string","example":"04"},"id":{"type":"integer","format":"int64","example":4},"manualEntriesAllowed":{"type":"boolean","example":true},"name":{"type":"string","example":"income from interest"},"nameDecorated":{"type":"string","example":"income from interest"},"organizationRunningBalance":{"type":"integer","format":"int32","example":19},"tagId":{"$ref":"#/components/schemas/GetLoanProductsLiabilityTagId"},"type":{"$ref":"#/components/schemas/GetLoanProductsIncomeType"},"usage":{"$ref":"#/components/schemas/GetLoanProductsLiabilityUsage"}}},"GetLoanProductsIncomeType":{"type":"object","properties":{"code":{"type":"string","example":"accountType.income"},"description":{"type":"string","example":"INCOME"},"id":{"type":"integer","format":"int64","example":4}}},"GetLoanProductsInterestRateFrequencyType":{"type":"object","properties":{"code":{"type":"string","example":"interestRateFrequency.periodFrequencyType.months"},"description":{"type":"string","example":"Per month"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoanProductsInterestRateTemplateFrequencyType":{"type":"object","properties":{"code":{"type":"string","example":"interestRateFrequency.periodFrequencyType.months"},"description":{"type":"string","example":"Per month"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoanProductsInterestRecalculationCompoundingFrequencyType":{"type":"object","properties":{"code":{"type":"string","example":"interestRecalculationFrequencyType.same.as.repayment.period"},"description":{"type":"string","example":"Same as repayment period"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanProductsInterestRecalculationCompoundingType":{"type":"object","properties":{"code":{"type":"string","example":"interestRecalculationCompoundingMethod.fee"},"description":{"type":"string","example":"Fee"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoanProductsInterestRecalculationData":{"type":"object","properties":{"allowCompoundingOnEod":{"type":"boolean","example":true},"disallowInterestCalculationOnPastDue":{"type":"boolean","example":false},"id":{"type":"integer","format":"int64","example":3},"interestRecalculationCompoundingFrequencyType":{"$ref":"#/components/schemas/GetLoanProductsInterestRecalculationCompoundingFrequencyType"},"interestRecalculationCompoundingType":{"$ref":"#/components/schemas/GetLoanProductsInterestRecalculationCompoundingType"},"isArrearsBasedOnOriginalSchedule":{"type":"boolean","example":true},"isCompoundingToBePostedAsTransaction":{"type":"boolean","example":true},"preClosureInterestCalculationStrategy":{"$ref":"#/components/schemas/GetLoanProductsPreClosureInterestCalculationStrategy"},"productId":{"type":"integer","format":"int64","example":1},"recalculationCompoundingFrequencyInterval":{"type":"integer","format":"int32","example":1},"recalculationCompoundingFrequencyOnDayType":{"type":"integer","format":"int32","example":1},"recalculationRestFrequencyInterval":{"type":"integer","format":"int32","example":1},"recalculationRestFrequencyType":{"$ref":"#/components/schemas/GetLoanProductsInterestRecalculationCompoundingFrequencyType"},"rescheduleStrategyType":{"$ref":"#/components/schemas/GetLoanProductsRescheduleStrategyType"}}},"GetLoanProductsInterestRecalculationTemplateData":{"type":"object","properties":{"interestRecalculationCompoundingType":{"$ref":"#/components/schemas/GetLoanProductsInterestRecalculationCompoundingType"},"preClosureInterestCalculationStrategy":{"$ref":"#/components/schemas/GetLoanProductsPreClosureInterestCalculationStrategy"},"rescheduleStrategyType":{"$ref":"#/components/schemas/GetLoanProductsRescheduleStrategyType"}}},"GetLoanProductsInterestTemplateType":{"type":"object","properties":{"code":{"type":"string","example":"interestType.declining.balance"},"description":{"type":"string","example":"Declining Balance"},"id":{"type":"integer","format":"int64","example":0}}},"GetLoanProductsInterestType":{"type":"object","properties":{"code":{"type":"string","example":"interestType.flat"},"description":{"type":"string","example":"Flat"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanProductsLiabilityAccountOptions":{"type":"object","properties":{"disabled":{"type":"boolean","example":false},"glCode":{"type":"string","example":"13"},"id":{"type":"integer","format":"int64","example":11},"manualEntriesAllowed":{"type":"boolean","example":true},"name":{"type":"string","example":"over payment"},"nameDecorated":{"type":"string","example":"over payment"},"organizationRunningBalance":{"type":"integer","format":"int32","example":0},"tagId":{"$ref":"#/components/schemas/GetLoanProductsLiabilityTagId"},"type":{"$ref":"#/components/schemas/GetLoanProductsLiabilityType"},"usage":{"$ref":"#/components/schemas/GetLoanProductsLiabilityUsage"}}},"GetLoanProductsLiabilityTagId":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":0}}},"GetLoanProductsLiabilityType":{"type":"object","properties":{"code":{"type":"string","example":"accountType.liability"},"description":{"type":"string","example":"LIABILITY"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoanProductsLiabilityUsage":{"type":"object","properties":{"code":{"type":"string","example":"accountUsage.detail"},"description":{"type":"string","example":"DETAIL"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanProductsParamType":{"type":"object","properties":{"code":{"type":"string","example":"LoanProductParamType.principal"},"description":{"type":"string","example":"principal"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanProductsPaymentTypeOptions":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"check"},"position":{"type":"integer","format":"int32","example":1}}},"GetLoanProductsPreClosureInterestCalculationStrategy":{"type":"object","properties":{"code":{"type":"string","example":"loanPreClosureInterestCalculationStrategy.tillPreClosureDate"},"description":{"type":"string","example":"Till preclose Date"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanProductsPrincipalVariationsForBorrowerCycle":{"type":"object","properties":{"borrowerCycleNumber":{"type":"integer","format":"int32","example":1},"defaultValue":{"type":"number","format":"double","example":15000},"id":{"type":"integer","format":"int64","example":21},"maxValue":{"type":"number","format":"double","example":20000},"minValue":{"type":"number","format":"double","example":2000},"paramType":{"$ref":"#/components/schemas/GetLoanProductsParamType"},"valueConditionType":{"$ref":"#/components/schemas/GetLoanProductsValueConditionType"}}},"GetLoanProductsProductIdResponse":{"type":"object","description":"GetLoanProductsProductIdResponse","properties":{"accountingMappings":{"$ref":"#/components/schemas/GetLoanAccountingMappings"},"accountingRule":{"$ref":"#/components/schemas/GetLoanProductsAccountingRule"},"allowApprovedDisbursedAmountsOverApplied":{"type":"boolean","example":true},"allowFullTermForTranche":{"type":"boolean","description":"Allow full term length for each tranche disbursement. Only available for PROGRESSIVE schedule type with multi-disbursement enabled.","example":false},"allowPartialPeriodInterestCalculation":{"type":"boolean","example":false},"allowVariableInstallments":{"type":"boolean","example":false},"amortizationType":{"$ref":"#/components/schemas/GetLoanProductsAmortizationType"},"annualInterestRate":{"type":"number","format":"double","example":60},"buyDownFeeCalculationType":{"$ref":"#/components/schemas/StringEnumOptionData"},"buyDownFeeCalculationTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"buyDownFeeIncomeType":{"$ref":"#/components/schemas/StringEnumOptionData"},"buyDownFeeIncomeTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"buyDownFeeStrategy":{"$ref":"#/components/schemas/StringEnumOptionData"},"buyDownFeeStrategyOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"buydownFeeClassificationOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetCodeValuesDataResponse"}},"buydownFeeClassificationToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/GetClassificationToIncomeAccountMappings"}},"canDefineInstallmentAmount":{"type":"boolean","example":false},"canUseForTopup":{"type":"boolean","example":false},"capitalizedIncomeCalculationType":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeCalculationTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"capitalizedIncomeClassificationOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetCodeValuesDataResponse"}},"capitalizedIncomeClassificationToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/GetClassificationToIncomeAccountMappings"}},"capitalizedIncomeStrategy":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeStrategyOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"capitalizedIncomeType":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"chargeOffBehaviour":{"$ref":"#/components/schemas/StringEnumOptionData"},"chargeOffReasonOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsChargeOffReasonOptions"}},"chargeOffReasonToExpenseAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/GetChargeOffReasonToExpenseAccountMappings"}},"charges":{"type":"array","example":[],"items":{"$ref":"#/components/schemas/LoanProductChargeData"}},"creditAllocation":{"type":"array","example":[],"items":{"$ref":"#/components/schemas/CreditAllocationData"}},"currency":{"$ref":"#/components/schemas/GetLoanProductsCurrency"},"daysInMonthType":{"$ref":"#/components/schemas/GetLoanProductsDaysInMonthType"},"daysInYearCustomStrategy":{"$ref":"#/components/schemas/StringEnumOptionData"},"daysInYearType":{"$ref":"#/components/schemas/GetLoanProductsDaysInYearType"},"delinquencyBucket":{"$ref":"#/components/schemas/DelinquencyBucketData"},"delinquencyBucketOptions":{"type":"array","items":{"$ref":"#/components/schemas/DelinquencyBucketData"}},"description":{"type":"string","example":"sample description"},"disallowExpectedDisbursements":{"type":"boolean","example":true},"disbursedAmountPercentageForDownPayment":{"type":"number","example":5.5},"dueDaysForRepaymentEvent":{"type":"integer","format":"int32","example":3},"enableAccrualActivityPosting":{"type":"boolean","example":false},"enableAutoRepaymentForDownPayment":{"type":"boolean","example":false},"enableBuyDownFee":{"type":"boolean","example":false},"enableDownPayment":{"type":"boolean","example":false},"enableIncomeCapitalization":{"type":"boolean","example":false},"enableInstallmentLevelDelinquency":{"type":"boolean","example":false},"feeToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanFeeToIncomeAccountMappings"},"uniqueItems":true},"fixedLength":{"type":"integer","format":"int32","example":10},"fixedPrincipalPercentagePerInstallment":{"type":"number","example":5.5},"id":{"type":"integer","format":"int64","example":11},"inArrearsTolerance":{"type":"integer","format":"int32","example":3},"includeInBorrowerCycle":{"type":"boolean","example":true},"interestCalculationPeriodType":{"$ref":"#/components/schemas/GetLoansProductsInterestCalculationPeriodType"},"interestRateFrequencyType":{"$ref":"#/components/schemas/GetLoanProductsInterestRateFrequencyType"},"interestRatePerPeriod":{"type":"number","format":"double","example":5},"interestRateVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"interestRecalculationData":{"$ref":"#/components/schemas/GetLoanProductsInterestRecalculationData"},"interestRecognitionOnDisbursementDate":{"type":"boolean","example":false},"interestType":{"$ref":"#/components/schemas/GetLoanProductsInterestTemplateType"},"isFloatingInterestRateCalculationAllowed":{"type":"boolean","example":false},"isInterestRecalculationEnabled":{"type":"boolean","example":false},"isLinkedToFloatingInterestRates":{"type":"boolean","example":false},"isRatesEnabled":{"type":"boolean","example":false},"loanScheduleProcessingType":{"$ref":"#/components/schemas/EnumOptionData"},"loanScheduleType":{"$ref":"#/components/schemas/EnumOptionData"},"maxInterestRatePerPeriod":{"type":"number","format":"double","example":10},"maxNumberOfRepayments":{"type":"integer","format":"int32","example":10},"maxPrincipal":{"type":"number","format":"double","example":15000},"maxTrancheCount":{"type":"integer","format":"int32","example":3},"maximumGap":{"type":"integer","format":"int32","example":1},"merchantBuyDownFee":{"type":"boolean","example":false},"minInterestRatePerPeriod":{"type":"number","format":"double","example":0},"minNumberOfRepayments":{"type":"integer","format":"int32","example":5},"minPrincipal":{"type":"number","format":"double","example":2000},"minimumGap":{"type":"integer","format":"int32","example":0},"multiDisburseLoan":{"type":"boolean","example":true},"name":{"type":"string","example":"advanced accounting"},"numberOfRepaymentVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"numberOfRepayments":{"type":"integer","format":"int32","example":7},"outstandingLoanBalance":{"type":"number","format":"double","example":36000},"overAppliedCalculationType":{"type":"string","example":"flat"},"overDueDaysForRepaymentEvent":{"type":"integer","format":"int32","example":3},"overdueDaysForNPA":{"type":"integer","format":"int32","example":2},"paymentAllocation":{"type":"array","example":[],"items":{"$ref":"#/components/schemas/AdvancedPaymentData"}},"paymentChannelToFundSourceMappings":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanPaymentChannelToFundSourceMappings"},"uniqueItems":true},"principal":{"type":"number","format":"double","example":10000},"principalThresholdForLastInstalment":{"type":"integer","format":"int32","example":50},"productsPrincipalVariationsForBorrowerCycle":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsPrincipalVariationsForBorrowerCycle"},"uniqueItems":true},"repaymentEvery":{"type":"integer","format":"int32","example":7},"repaymentFrequencyType":{"$ref":"#/components/schemas/GetLoanProductsRepaymentFrequencyType"},"repaymentStartDateType":{"$ref":"#/components/schemas/GetLoanProductsRepaymentStartDateType"},"shortName":{"type":"string","example":"ad11"},"status":{"type":"string","example":"loanProduct.active"},"supportedInterestRefundTypes":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"transactionProcessingStrategyCode":{"type":"string","example":"principal-interest-penalties-fees-order-strategy"},"transactionProcessingStrategyName":{"type":"string","example":"Principal, Interest, Penalties, Fees Order"},"useBorrowerCycle":{"type":"boolean","example":true},"writeOffReasonOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsWriteOffReasonOptions"}},"writeOffReasonsToExpenseMappings":{"type":"array","items":{"$ref":"#/components/schemas/GetChargeOffReasonToExpenseAccountMappings"}}}},"GetLoanProductsRepaymentFrequencyType":{"type":"object","properties":{"code":{"type":"string","example":"repaymentFrequency.periodFrequencyType.days"},"description":{"type":"string","example":"Days"},"id":{"type":"integer","format":"int64","example":0}}},"GetLoanProductsRepaymentStartDateType":{"type":"object","properties":{"code":{"type":"string","example":"repaymentStartDateType.disbursementDate"},"description":{"type":"string","example":"Disbursement Date"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoanProductsRepaymentTemplateFrequencyType":{"type":"object","properties":{"code":{"type":"string","example":"repaymentFrequency.periodFrequencyType.months"},"description":{"type":"string","example":"Months"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoanProductsRescheduleStrategyType":{"type":"object","properties":{"code":{"type":"string","example":"loanRescheduleStrategyMethod.reduce.number.of.installments"},"description":{"type":"string","example":"Reduce number of installments"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoanProductsResponse":{"type":"object","description":"GetLoanProductsResponse","properties":{"accountingRule":{"$ref":"#/components/schemas/GetLoanProductsAccountingRule"},"amortizationType":{"$ref":"#/components/schemas/GetLoanProductsAmortizationType"},"annualInterestRate":{"type":"number","format":"double","example":15},"buyDownFeeCalculationType":{"$ref":"#/components/schemas/StringEnumOptionData"},"buyDownFeeIncomeType":{"$ref":"#/components/schemas/StringEnumOptionData"},"buyDownFeeStrategy":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeCalculationType":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeStrategy":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeType":{"$ref":"#/components/schemas/StringEnumOptionData"},"chargeOffBehaviour":{"$ref":"#/components/schemas/StringEnumOptionData"},"currency":{"$ref":"#/components/schemas/GetLoanProductsCurrency"},"daysInMonthType":{"$ref":"#/components/schemas/GetLoanProductsDaysInMonthType"},"daysInYearCustomStrategy":{"$ref":"#/components/schemas/GetLoanProductsDaysInYearCustomStrategy"},"daysInYearType":{"$ref":"#/components/schemas/GetLoanProductsDaysInYearType"},"enableBuyDownFee":{"type":"boolean","example":false},"enableIncomeCapitalization":{"type":"boolean","example":false},"endDate":{"type":"string","format":"date"},"fixedLength":{"type":"integer","format":"int32","example":10},"fixedPrincipalPercentagePerInstallment":{"type":"number","example":5.5},"id":{"type":"integer","format":"int64","example":1},"includeInBorrowerCycle":{"type":"boolean","example":false},"interestCalculationPeriodType":{"$ref":"#/components/schemas/GetLoansProductsInterestCalculationPeriodType"},"interestRateFrequencyType":{"$ref":"#/components/schemas/GetLoanProductsInterestRateFrequencyType"},"interestRatePerPeriod":{"type":"number","format":"double","example":15},"interestRateVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"interestRecalculationData":{"$ref":"#/components/schemas/GetLoanProductsInterestRecalculationData"},"interestRecognitionOnDisbursementDate":{"type":"boolean","example":false},"interestType":{"$ref":"#/components/schemas/GetLoanProductsInterestType"},"isInterestRecalculationEnabled":{"type":"boolean","example":true},"maxNumberOfRepayments":{"type":"integer","format":"int32","example":15},"maxPrincipal":{"type":"number","format":"double","example":15000},"merchantBuyDownFee":{"type":"boolean","example":false},"minNumberOfRepayments":{"type":"integer","format":"int32","example":5},"minPrincipal":{"type":"number","format":"double","example":5000},"name":{"type":"string","example":"personal loan product"},"numberOfRepaymentVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"numberOfRepayments":{"type":"integer","format":"int32","example":10},"principal":{"type":"number","format":"double","example":10000},"principalThresholdForLastInstalment":{"type":"integer","format":"int32","example":0},"principalVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"repaymentEvery":{"type":"integer","format":"int32","example":7},"repaymentFrequencyType":{"$ref":"#/components/schemas/GetLoanProductsRepaymentFrequencyType"},"repaymentStartDateType":{"$ref":"#/components/schemas/GetLoanProductsRepaymentStartDateType"},"shortName":{"type":"string","example":"pe1"},"startDate":{"type":"string","format":"date"},"status":{"type":"string","example":"loanProduct.active"},"supportedInterestRefundTypes":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"transactionProcessingStrategy":{"type":"string","example":"principal-interest-penalties-fees-order-strategy"},"transactionProcessingStrategyName":{"type":"string","example":"Principal, Interest, Penalties, Fees Order"},"useBorrowerCycle":{"type":"boolean","example":false}}},"GetLoanProductsTemplateCurrency":{"type":"object","properties":{"code":{"type":"string","example":"USD"},"decimalPlaces":{"type":"integer","format":"int32","example":0},"displayLabel":{"type":"string","example":"[]"},"displaySymbol":{"type":"string","example":"$"},"inMultiplesOf":{"type":"integer","format":"int32","example":0},"name":{"type":"string","example":"Usa dollar"},"nameCode":{"type":"string","example":"USD"}}},"GetLoanProductsTemplateResponse":{"type":"object","description":"GetLoanProductsTemplateResponse","properties":{"accountingMappingOptions":{"$ref":"#/components/schemas/GetLoanProductsAccountingMappingOptions"},"accountingRule":{"$ref":"#/components/schemas/GetLoanProductsAccountingRule"},"accountingRuleOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsAccountingRule"},"uniqueItems":true},"advancedPaymentAllocationFutureInstallmentAllocationRules":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"advancedPaymentAllocationTransactionTypes":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"advancedPaymentAllocationTypes":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"amortizationType":{"$ref":"#/components/schemas/GetLoanProductsAmortizationType"},"amortizationTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsAmortizationType"},"uniqueItems":true},"buyDownFeeCalculationType":{"$ref":"#/components/schemas/StringEnumOptionData"},"buyDownFeeCalculationTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"buyDownFeeIncomeType":{"$ref":"#/components/schemas/StringEnumOptionData"},"buyDownFeeIncomeTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"buyDownFeeStrategy":{"$ref":"#/components/schemas/StringEnumOptionData"},"buyDownFeeStrategyOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"buydownFeeClassificationOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetCodeValuesDataResponse"}},"capitalizedIncomeCalculationType":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeCalculationTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"capitalizedIncomeClassificationOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetCodeValuesDataResponse"}},"capitalizedIncomeStrategy":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeStrategyOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"capitalizedIncomeType":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"chargeOffBehaviour":{"$ref":"#/components/schemas/StringEnumOptionData"},"chargeOffBehaviourOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"chargeOffReasonOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsChargeOffReasonOptions"}},"chargeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsChargeOptions"},"uniqueItems":true},"creditAllocationAllocationTypes":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"creditAllocationTransactionTypes":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"currency":{"$ref":"#/components/schemas/GetLoanProductsTemplateCurrency"},"currencyOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsCurrencyOptions"},"uniqueItems":true},"daysInMonthType":{"$ref":"#/components/schemas/GetLoanProductsDaysInMonthType"},"daysInMonthTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"},"uniqueItems":true},"daysInYearCustomStrategy":{"$ref":"#/components/schemas/StringEnumOptionData"},"daysInYearType":{"$ref":"#/components/schemas/GetLoanProductsDaysInYearType"},"daysInYearTypeCustomStrategyOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"},"uniqueItems":true},"daysInYearTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsInterestTemplateType"},"uniqueItems":true},"enableBuyDownFee":{"type":"boolean","example":false},"enableIncomeCapitalization":{"type":"boolean","example":false},"includeInBorrowerCycle":{"type":"boolean","example":false},"interestCalculationPeriodType":{"$ref":"#/components/schemas/GetLoansProductsInterestCalculationPeriodType"},"interestCalculationPeriodTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoansProductsInterestCalculationPeriodType"},"uniqueItems":true},"interestRateFrequencyType":{"$ref":"#/components/schemas/GetLoanProductsInterestRateTemplateFrequencyType"},"interestRateFrequencyTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsInterestRateTemplateFrequencyType"},"uniqueItems":true},"interestRateVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"interestRecalculationCompoundingTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsInterestRecalculationCompoundingType"},"uniqueItems":true},"interestRecalculationData":{"$ref":"#/components/schemas/GetLoanProductsInterestRecalculationTemplateData"},"interestRecalculationFrequencyTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsInterestRecalculationCompoundingFrequencyType"},"uniqueItems":true},"interestType":{"$ref":"#/components/schemas/GetLoanProductsInterestTemplateType"},"interestTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsInterestTemplateType"},"uniqueItems":true},"isInterestRecalculationEnabled":{"type":"boolean","example":false},"loanScheduleProcessingTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"loanScheduleTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"merchantBuyDownFee":{"type":"boolean","example":false},"numberOfRepaymentVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"paymentTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsPaymentTypeOptions"},"uniqueItems":true},"preClosureInterestCalculationStrategyOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsPreClosureInterestCalculationStrategy"},"uniqueItems":true},"principalVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"repaymentFrequencyType":{"$ref":"#/components/schemas/GetLoanProductsRepaymentTemplateFrequencyType"},"repaymentFrequencyTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsRepaymentTemplateFrequencyType"},"uniqueItems":true},"repaymentStartDateTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsRepaymentStartDateType"},"uniqueItems":true},"rescheduleStrategyTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsRescheduleStrategyType"},"uniqueItems":true},"supportedInterestRefundTypes":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"supportedInterestRefundTypesOptions":{"type":"array","items":{"$ref":"#/components/schemas/StringEnumOptionData"}},"transactionProcessingStrategyOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsTransactionProcessingStrategyOptions"},"uniqueItems":true},"useBorrowerCycle":{"type":"boolean","example":false},"valueConditionTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsValueConditionTypeOptions"},"uniqueItems":true},"writeOffReasonOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsWriteOffReasonOptions"}}}},"GetLoanProductsTransactionProcessingStrategyOptions":{"type":"object","properties":{"code":{"type":"string","example":"principal-interest-penalties-fees-order-strategy"},"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Penalties, Fees, Interest, Principal order"}}},"GetLoanProductsV2ProductIdResponse":{"type":"object","allOf":[{"$ref":"#/components/schemas/GetLoanProductsProductIdResponse"},{"type":"object","properties":{"beneficiaryType":{"$ref":"#/components/schemas/LoanProductV2CodeOption"},"bpiMethod":{"type":"string","description":"BPI treatment name; absent when unconfigured.","example":"EMI_PLUS_BPI"},"brokenPeriodDayCount":{"type":"string","description":"Broken-period convention name; absent means regular-period behaviour.","example":"ACT_360"},"charges":{"type":"array","description":"Charge entries with per-association flags (explicit booleans; old associations read false/false).","items":{"$ref":"#/components/schemas/LoanProductV2ChargeEntry"}},"coLendingEligible":{"type":"boolean","example":false},"collectBpiAtDisbursement":{"type":"boolean","example":false},"computeAprForKfs":{"type":"boolean","example":false},"dayCountConvention":{"type":"string","description":"Stable convention name; absent when the product was configured through raw axes only (a convention is never inferred backwards — 30/360 would be ambiguous between D30_360_US and D30E_360).","example":"ACT_365"},"defaultRoundingMode":{"type":"string","description":"RoundingMode NAME; absent when the product inherits tenant rounding. Internal profile identifiers are never exposed.","example":"HALF_UP"},"interestRateStep":{"type":"number","example":0.25},"maximumDaysBetweenDisbursalAndFirstRepayment":{"type":"integer","format":"int32","description":"First-repayment ceiling in days; absent when no ceiling is configured.","example":45},"pmtType":{"type":"string","example":"STANDARD_PMT"},"principalStep":{"type":"number","example":5000},"productCategoryTags":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductV2CodeOption"}},"productType":{"$ref":"#/components/schemas/LoanProductV2CodeOption"},"repayOnDay":{"type":"array","description":"Pinned monthly repayment day(s), sorted ascending; absent when none are configured. The internal recurrence rule is never exposed.","example":[5],"items":{"type":"integer","format":"int32","description":"Pinned monthly repayment day(s), sorted ascending; absent when none are configured. The internal recurrence rule is never exposed."}},"residualEnabled":{"type":"boolean","example":false},"scheduleSolver":{"type":"string","description":"Declarative solver selection — the canonical enum name when configured; ABSENT when not configured (nullable, no default: existing and V1-created products carry no value). Never an id, never a display label. Informational for the configurator/LOS only: no backend calculation reads it.","enum":["SOLVE_EMI","TARGET_EMI","MERCHANT_DISCOUNT","FLAT_RATE","TOTAL_INTEREST_PCT"],"example":"SOLVE_EMI"},"tenorStep":{"type":"integer","format":"int32","example":3}}}],"description":"V2 retrieve-one response — the V1 response plus the identity & classification fields. Code-backed fields are returned as {code, value}; absent configuration is omitted."},"GetLoanProductsV2Response":{"type":"object","allOf":[{"$ref":"#/components/schemas/GetLoanProductsResponse"},{"type":"object","properties":{"coLendingEligible":{"type":"boolean","example":false},"productType":{"$ref":"#/components/schemas/LoanProductV2CodeOption"}}}],"description":"V2 list response — the V1 list element plus productType {code,value} and coLendingEligible. Category tags and beneficiaryType are deliberately not part of the list shape; use retrieve-one."},"GetLoanProductsV2TemplateResponse":{"type":"object","allOf":[{"$ref":"#/components/schemas/GetLoanProductsTemplateResponse"},{"type":"object","properties":{"beneficiaryTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductV2CodeOption"}},"bpiMethodOptions":{"type":"array","description":"Allowed bpiMethod choices: stable code (the only value the write API accepts) + display name + one-line description.","items":{"$ref":"#/components/schemas/LoanProductV2EnumOption"}},"brokenPeriodDayCountOptions":{"type":"array","description":"Allowed brokenPeriodDayCount choices — identical to dayCountConventionOptions (parity by design).","items":{"$ref":"#/components/schemas/LoanProductV2EnumOption"}},"dayCountConventionOptions":{"type":"array","description":"Allowed dayCountConvention choices: stable code (the only value the write API accepts) + display name + one-line description.","items":{"$ref":"#/components/schemas/LoanProductV2EnumOption"}},"pmtTypeOptions":{"type":"array","description":"Allowed pmtType choices.","items":{"$ref":"#/components/schemas/LoanProductV2EnumOption"}},"productCategoryTagOptions":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductV2CodeOption"}},"productTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductV2CodeOption"}},"roundingModeOptions":{"type":"array","description":"The rounding-mode validation whitelist — java.math.RoundingMode names the backend accepts. No profile ids, codes or names exist externally.","example":["UP","DOWN","CEILING","FLOOR","HALF_UP","HALF_DOWN","HALF_EVEN"],"items":{"type":"string","description":"The rounding-mode validation whitelist — java.math.RoundingMode names the backend accepts. No profile ids, codes or names exist externally.","example":"[\"UP\",\"DOWN\",\"CEILING\",\"FLOOR\",\"HALF_UP\",\"HALF_DOWN\",\"HALF_EVEN\"]"}},"scheduleSolverOptions":{"type":"array","description":"Allowed scheduleSolver choices — exactly five, stable code (the only value the write API accepts) + display name + one-line description. All five are storable declarative configuration with no backend derivation; which values a client presents as engine-native is managed outside the backend. The backend never derives Loan terms from scheduleSolver.","items":{"$ref":"#/components/schemas/LoanProductV2EnumOption"}}}}],"description":"V2 template response — the V1 template plus the identity & classification option lists (active values only, stable code + display value). Exposes BOTH schedule types (CUMULATIVE and PROGRESSIVE). V2 is not progressive-only."},"GetLoanProductsValueConditionType":{"type":"object","properties":{"code":{"type":"string","example":"LoanProductValueConditionType.equal"},"description":{"type":"string","example":"equals"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoanProductsValueConditionTypeOptions":{"type":"object","properties":{"code":{"type":"string","example":"LoanProductValueConditionType.equal"},"description":{"type":"string","example":"equals"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoanProductsWriteOffReasonOptions":{"type":"object","description":"GetLoanProductsWriteOffReasonOptions","properties":{"active":{"type":"boolean","example":true},"description":{"type":"string","example":"Write-Off reason description"},"id":{"type":"integer","format":"int64","example":2},"mandatory":{"type":"boolean","example":false},"name":{"type":"string","example":"debit_card"},"position":{"type":"integer","format":"int32","example":2}}},"GetLoanTransactionRelation":{"type":"object","properties":{"amount":{"type":"number","format":"double","example":100},"fromLoanTransaction":{"type":"integer","format":"int64","example":1},"paymentType":{"type":"string","example":"Repayment Adjustment Chargeback"},"relationType":{"type":"string","example":"CHARGEBACK"},"toLoanCharge":{"type":"integer","format":"int64","example":10},"toLoanTransaction":{"type":"integer","format":"int64","example":10}}},"GetLoansApprovalTemplateResponse":{"type":"object","description":"GetLoansApprovalTemplateResponse","properties":{"approvalAmount":{"type":"number","example":200},"approvalDate":{"type":"string","format":"date"},"currency":{"$ref":"#/components/schemas/GetLoanCurrency"},"netDisbursalAmount":{"type":"number","example":200}}},"GetLoansChargePaymentMode":{"type":"object","properties":{"code":{"type":"string","example":"chargepaymentmode.regular"},"description":{"type":"string","example":"Regular"},"id":{"type":"integer","format":"int64","example":0}}},"GetLoansCurrency":{"type":"object","properties":{"code":{"type":"string","example":"USD"},"decimalPlaces":{"type":"integer","format":"int32","example":2},"displayLabel":{"type":"string","example":"US Dollar ($)"},"displaySymbol":{"type":"string","example":"$"},"name":{"type":"string","example":"US Dollar"},"nameCode":{"type":"string","example":"currency.USD"}}},"GetLoansLoanIdAmortizationType":{"type":"object","properties":{"code":{"type":"string","example":"amortizationType.equal.installments"},"description":{"type":"string","example":"Equal installments"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoansLoanIdChargeCalculationType":{"type":"object","properties":{"code":{"type":"string","example":"chargeCalculationType.percent.of.amount"},"description":{"type":"string","example":"% Amount"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoansLoanIdChargePaymentMode":{"type":"object","properties":{"code":{"type":"string","example":"chargepaymentmode.regular"},"description":{"type":"string","example":"Regular"},"id":{"type":"integer","format":"int64","example":0}}},"GetLoansLoanIdChargeTimeType":{"type":"object","properties":{"code":{"type":"string","example":"chargeTimeType.overdueInstallment"},"description":{"type":"string","example":"overdue fees"},"id":{"type":"integer","format":"int64","example":9}}},"GetLoansLoanIdCodeValueData":{"type":"object","description":"List of GetLoansLoanIdCodeValueData","properties":{"active":{"type":"boolean","example":true},"description":{"type":"string","example":"code description"},"id":{"type":"integer","format":"int64","example":1},"mandatory":{"type":"boolean","example":false},"name":{"type":"string","example":"code name"},"position":{"type":"integer","format":"int32","example":0}}},"GetLoansLoanIdCurrency":{"type":"object","description":"currency","properties":{"code":{"type":"string","example":"UGX"},"decimalPlaces":{"type":"integer","format":"int32","example":2},"displayLabel":{"type":"string","example":"Uganda Shilling (USh)"},"displaySymbol":{"type":"string","example":"USh"},"name":{"type":"string","example":"Uganda Shilling"},"nameCode":{"type":"string","example":"currency.UGX"}}},"GetLoansLoanIdDelinquencyPausePeriod":{"type":"object","description":"List of GetLoansLoanIdDelinquencyPausePeriod","properties":{"active":{"type":"boolean","example":true},"pausePeriodEnd":{"type":"string","format":"date"},"pausePeriodStart":{"type":"string","format":"date"}}},"GetLoansLoanIdDelinquencySummary":{"type":"object","description":"Delinquent data","properties":{"availableDisbursementAmount":{"type":"number","example":100},"availableDisbursementAmountWithOverApplied":{"type":"number","example":150},"delinquencyPausePeriods":{"type":"array","description":"List of GetLoansLoanIdDelinquencyPausePeriod","items":{"$ref":"#/components/schemas/GetLoansLoanIdDelinquencyPausePeriod"}},"delinquentAmount":{"type":"number","example":100},"delinquentDate":{"type":"string","format":"date"},"delinquentDays":{"type":"integer","format":"int32","example":4},"delinquentFee":{"type":"number","example":6},"delinquentInterest":{"type":"number","example":10},"delinquentPenalty":{"type":"number","example":4},"delinquentPrincipal":{"type":"number","example":80},"installmentLevelDelinquency":{"type":"array","description":"List of GetLoansLoanIdLoanInstallmentLevelDelinquency","items":{"$ref":"#/components/schemas/GetLoansLoanIdLoanInstallmentLevelDelinquency"}},"lastPaymentAmount":{"type":"number","example":100},"lastPaymentDate":{"type":"string","format":"date"},"lastRepaymentAmount":{"type":"number","example":100},"lastRepaymentDate":{"type":"string","format":"date"},"nextPaymentAmount":{"type":"number","example":123.23},"nextPaymentDueDate":{"type":"string","format":"date"},"pastDueDate":{"type":"string","format":"date"},"pastDueDays":{"type":"integer","format":"int32","example":12}}},"GetLoansLoanIdDisbursementDetails":{"type":"object","description":"Set of GetLoansLoanIdDisbursementDetails","properties":{"actualDisbursementDate":{"type":"string","format":"date"},"chargeAmount":{"type":"number","example":22000},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"expectedDisbursementDate":{"type":"string","format":"date"},"id":{"type":"integer","format":"int64","example":71},"loanChargeId":{"type":"string","example":"1"},"locale":{"type":"string","example":"de_DE"},"netDisbursalAmount":{"type":"number","example":22000},"note":{"type":"string","example":"some note"},"principal":{"type":"number","example":22000},"waivedChargeAmount":{"type":"number","example":22000}}},"GetLoansLoanIdEnumOptionData":{"type":"object","description":"Enum option data","properties":{"code":{"type":"string","example":"chargeTimeType.specifiedDueDate"},"id":{"type":"integer","format":"int64","example":2},"value":{"type":"string","example":"Specified due date"}}},"GetLoansLoanIdFeeFrequency":{"type":"object","properties":{"code":{"type":"string","example":"feeFrequencyperiodFrequencyType.weeks"},"description":{"type":"string","example":"Weeks"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoansLoanIdInterestCalculationPeriodType":{"type":"object","properties":{"code":{"type":"string","example":"interestCalculationPeriodType.same.as.repayment.period"},"description":{"type":"string","example":"Same as repayment period"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoansLoanIdInterestRateFrequencyType":{"type":"object","properties":{"code":{"type":"string","example":"interestRateFrequency.periodFrequencyType.years"},"description":{"type":"string","example":"Per year"},"id":{"type":"integer","format":"int64","example":3}}},"GetLoansLoanIdInterestType":{"type":"object","properties":{"code":{"type":"string","example":"interestType.flat"},"description":{"type":"string","example":"Flat"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoansLoanIdLinkedAccount":{"type":"object","properties":{"accountNo":{"type":"string","example":"000000001"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoansLoanIdLoanChargeData":{"type":"object","description":"Set of charges","properties":{"amount":{"type":"number","example":102},"amountOrPercentage":{"type":"number","example":102},"amountOutstanding":{"type":"number","example":102},"amountPaid":{"type":"number","example":12},"amountPercentageAppliedTo":{"type":"number","example":13.56},"amountWaived":{"type":"number","example":14},"amountWrittenOff":{"type":"number","example":102},"chargeCalculationType":{"$ref":"#/components/schemas/GetLoansLoanIdEnumOptionData"},"chargeId":{"type":"integer","format":"int64","example":5},"chargePayable":{"type":"boolean","example":false},"chargePaymentMode":{"$ref":"#/components/schemas/GetLoansLoanIdEnumOptionData"},"chargeTimeType":{"$ref":"#/components/schemas/GetLoansLoanIdEnumOptionData"},"currency":{"$ref":"#/components/schemas/GetLoansLoanIdCurrency"},"dueDate":{"type":"string","format":"date"},"id":{"type":"integer","format":"int64","example":3},"installmentChargeData":{"type":"array","description":"List of GetLoansLoanIdLoanInstallmentChargeData","items":{"$ref":"#/components/schemas/GetLoansLoanIdLoanInstallmentChargeData"}},"loanId":{"type":"integer","format":"int64","example":3},"maxCap":{"type":"number","example":30},"minCap":{"type":"number","example":30},"name":{"type":"string","example":"snooze fee"},"paid":{"type":"boolean","example":false},"penalty":{"type":"boolean","example":false},"percentage":{"type":"number","example":3.4},"waived":{"type":"boolean","example":false}}},"GetLoansLoanIdLoanChargePaidByData":{"type":"object","description":"List of GetLoansLoanIdLoanChargePaidByData","properties":{"amount":{"type":"number","example":100},"chargeId":{"type":"integer","format":"int64","example":1},"id":{"type":"integer","format":"int64","example":11},"installmentNumber":{"type":"integer","format":"int32","example":9679},"name":{"type":"string","example":"name"},"transactionId":{"type":"integer","format":"int64","example":636}}},"GetLoansLoanIdLoanInstallmentChargeData":{"type":"object","description":"List of GetLoansLoanIdLoanInstallmentChargeData","properties":{"amount":{"type":"number","example":13.56},"amountAccrued":{"type":"number","example":13.56},"amountOutstanding":{"type":"number","example":13.56},"amountUnrecognized":{"type":"number","example":13.56},"amountWaived":{"type":"number","example":13.56},"dueDate":{"type":"string","format":"date"},"installmentNumber":{"type":"integer","format":"int32","example":2},"paid":{"type":"boolean","example":false},"waived":{"type":"boolean","example":false}}},"GetLoansLoanIdLoanInstallmentLevelDelinquency":{"type":"object","description":"List of GetLoansLoanIdLoanInstallmentLevelDelinquency","properties":{"classification":{"type":"string","example":"Delinquency Range 3 to 5 days"},"delinquentAmount":{"type":"number","example":250},"maximumAgeDays":{"type":"integer","format":"int32","example":5},"minimumAgeDays":{"type":"integer","format":"int32","example":3},"rangeId":{"type":"integer","format":"int64","example":112}}},"GetLoansLoanIdLoanRepaymentScheduleInstallmentData":{"type":"object","description":"List of GetLoansLoanIdLoanRepaymentScheduleInstallmentData","properties":{"amount":{"type":"number","example":100},"date":{"type":"string","format":"date"},"id":{"type":"integer","format":"int64","example":1},"installmentId":{"type":"integer","format":"int32","example":11}}},"GetLoansLoanIdLoanTermEnumData":{"type":"object","description":"Enum option data","properties":{"code":{"type":"string","example":"loanTermType.emiAmount"},"id":{"type":"integer","format":"int64","example":1},"value":{"type":"string","example":"emiAmount"}}},"GetLoansLoanIdLoanTermVariations":{"type":"object","description":"List of GetLoansLoanIdLoanTermVariations","properties":{"dateValue":{"type":"string","format":"date"},"decimalValue":{"type":"number","example":200},"id":{"type":"integer","format":"int64","example":1},"isProcessed":{"type":"boolean","example":false},"isSpecificToInstallment":{"type":"boolean","example":false},"termType":{"$ref":"#/components/schemas/GetLoansLoanIdLoanTermEnumData"},"termVariationApplicableFrom":{"type":"string","format":"date"}}},"GetLoansLoanIdLoanTransactionEnumData":{"type":"object","description":"Transaction type","properties":{"accrual":{"type":"boolean","example":false},"approveTransfer":{"type":"boolean","example":false},"buyDownFee":{"type":"boolean","example":false},"buyDownFeeAdjustment":{"type":"boolean","example":false},"buyDownFeeAmortization":{"type":"boolean","example":false},"buyDownFeeAmortizationAdjustment":{"type":"boolean","example":false},"capitalizedIncome":{"type":"boolean","example":false},"capitalizedIncomeAdjustment":{"type":"boolean","example":false},"capitalizedIncomeAmortization":{"type":"boolean","example":false},"capitalizedIncomeAmortizationAdjustment":{"type":"boolean","example":false},"chargeAdjustment":{"type":"boolean","example":false},"chargePayment":{"type":"boolean","example":false},"chargeoff":{"type":"boolean","example":false},"code":{"type":"string","example":"loanTransactionType.repayment"},"contra":{"type":"boolean","example":false},"contractTermination":{"type":"boolean","example":false},"creditBalanceRefund":{"type":"boolean","example":false},"disbursement":{"type":"boolean","example":false},"goodwillCredit":{"type":"boolean","example":false},"id":{"type":"integer","format":"int64","example":1},"initiateTransfer":{"type":"boolean","example":false},"merchantIssuedRefund":{"type":"boolean","example":false},"payoutRefund":{"type":"boolean","example":false},"recoveryRepayment":{"type":"boolean","example":false},"refund":{"type":"boolean","example":false},"refundForActiveLoans":{"type":"boolean","example":false},"rejectTransfer":{"type":"boolean","example":false},"repayment":{"type":"boolean","example":true},"repaymentAtDisbursement":{"type":"boolean","example":false},"value":{"type":"string","example":"2"},"waiveCharges":{"type":"boolean","example":false},"waiveInterest":{"type":"boolean","example":false},"withdrawTransfer":{"type":"boolean","example":false},"writeOff":{"type":"boolean","example":false}}},"GetLoansLoanIdLoanTransactionRelation":{"type":"object","description":"List of GetLoansLoanIdLoanTransactionRelationData","properties":{"amount":{"type":"number","example":100},"fromLoanTransaction":{"type":"integer","format":"int64","example":1},"paymentType":{"type":"string","example":"Repayment Adjustment Chargeback"},"relationType":{"type":"string","example":"CHARGEBACK"},"toLoanCharge":{"type":"integer","format":"int64","example":10},"toLoanTransaction":{"type":"integer","format":"int64","example":10}}},"GetLoansLoanIdLoanType":{"type":"object","properties":{"code":{"type":"string","example":"loanType.individual"},"description":{"type":"string","example":"Individual"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoansLoanIdOriginatorData":{"type":"object","description":"Originator data associated with the loan","properties":{"channelTypeId":{"type":"integer","format":"int64","example":2},"channelTypeName":{"type":"string","example":"ONLINE"},"externalId":{"type":"string","example":"REV-SHARE-001"},"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"PP Merchant"},"originatorTypeId":{"type":"integer","format":"int64","example":1},"originatorTypeName":{"type":"string","example":"MERCHANT"},"status":{"type":"string","example":"ACTIVE"}}},"GetLoansLoanIdOverdueCharges":{"type":"object","properties":{"active":{"type":"boolean","example":true},"amount":{"type":"number","format":"float","example":3},"chargeAppliesTo":{"$ref":"#/components/schemas/GetLoanChargeTemplateChargeAppliesTo"},"chargeCalculationType":{"$ref":"#/components/schemas/GetLoansLoanIdChargeCalculationType"},"chargePaymentMode":{"$ref":"#/components/schemas/GetLoansLoanIdChargePaymentMode"},"chargeTimeType":{"$ref":"#/components/schemas/GetLoansLoanIdChargeTimeType"},"currency":{"$ref":"#/components/schemas/GetLoanChargeCurrency"},"feeFrequency":{"$ref":"#/components/schemas/GetLoansLoanIdFeeFrequency"},"feeInterval":{"type":"integer","format":"int32","example":2},"id":{"type":"integer","format":"int64","example":20},"name":{"type":"string","example":"overdraft penality"},"penalty":{"type":"boolean","example":true}}},"GetLoansLoanIdPaymentDetailData":{"type":"object","description":"Payment detail","properties":{"accountNumber":{"type":"string","example":"acc123"},"bankNumber":{"type":"string","example":"ban123"},"checkNumber":{"type":"string","example":"che123"},"id":{"type":"integer","format":"int64","example":62},"paymentType":{"$ref":"#/components/schemas/GetLoansLoanIdPaymentType"},"receiptNumber":{"type":"string","example":"rec123"},"routingCode":{"type":"string","example":"rou123"}}},"GetLoansLoanIdPaymentType":{"type":"object","description":"List of GetLoansLoanIdPaymentType","properties":{"description":{"type":"string","example":"Cash Payment"},"id":{"type":"integer","format":"int64","example":11},"isCashPayment":{"type":"boolean","example":true},"name":{"type":"string","example":"Cash"},"position":{"type":"integer","format":"int64","example":0}}},"GetLoansLoanIdRepaymentFrequencyType":{"type":"object","properties":{"code":{"type":"string","example":"repaymentFrequency.periodFrequencyType.months"},"description":{"type":"string","example":"Months"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoansLoanIdRepaymentPeriod":{"type":"object","properties":{"complete":{"type":"boolean","example":true},"daysInPeriod":{"type":"integer","format":"int64","example":30},"downPaymentPeriod":{"type":"boolean","example":true},"dueDate":{"type":"string","format":"date"},"feeChargesDue":{"type":"number","example":0},"feeChargesOutstanding":{"type":"number","example":20},"feeChargesPaid":{"type":"number","example":20},"feeChargesWaived":{"type":"number","example":20},"feeChargesWrittenOff":{"type":"number","example":20},"fromDate":{"type":"string","format":"date"},"interestDue":{"type":"number","example":0},"interestOriginalDue":{"type":"number","example":0},"interestOutstanding":{"type":"number","example":0},"interestPaid":{"type":"number","example":0},"interestWaived":{"type":"number","example":0},"interestWrittenOff":{"type":"number","example":0},"obligationsMetOnDate":{"type":"string","format":"date"},"penaltyChargesDue":{"type":"number","example":20},"penaltyChargesOutstanding":{"type":"number","example":20},"penaltyChargesPaid":{"type":"number","example":20},"penaltyChargesWaived":{"type":"number","example":20},"penaltyChargesWrittenOff":{"type":"number","example":20},"period":{"type":"integer","format":"int32","example":1},"principalDue":{"type":"number","example":200},"principalLoanBalanceOutstanding":{"type":"number","example":20},"principalOriginalDue":{"type":"number","example":200},"principalOutstanding":{"type":"number","example":20},"principalPaid":{"type":"number","example":200},"principalWrittenOff":{"type":"number","example":0},"totalActualCostOfLoanForPeriod":{"type":"number","example":20},"totalCredits":{"type":"number","example":2},"totalDueForPeriod":{"type":"number","example":20},"totalInstallmentAmountForPeriod":{"type":"number","example":200},"totalOriginalDueForPeriod":{"type":"number","example":20},"totalOutstandingForPeriod":{"type":"number","example":200},"totalPaidForPeriod":{"type":"number","example":20},"totalPaidInAdvanceForPeriod":{"type":"number","example":20},"totalPaidLateForPeriod":{"type":"number","example":20},"totalWaivedForPeriod":{"type":"number","example":20},"totalWrittenOffForPeriod":{"type":"number","example":20}}},"GetLoansLoanIdRepaymentSchedule":{"type":"object","properties":{"currency":{"$ref":"#/components/schemas/GetLoansLoanIdCurrency"},"loanTermInDays":{"type":"integer","format":"int64","example":30},"periods":{"type":"array","items":{"$ref":"#/components/schemas/GetLoansLoanIdRepaymentPeriod"}},"totalFeeChargesCharged":{"type":"number","example":0},"totalInterestCharged":{"type":"number","example":0},"totalOutstanding":{"type":"number","example":0},"totalPaidInAdvance":{"type":"number","example":200},"totalPaidLate":{"type":"number","example":0},"totalPenaltyChargesCharged":{"type":"number","example":0},"totalPrincipalDisbursed":{"type":"number","example":200},"totalPrincipalExpected":{"type":"number","example":200},"totalPrincipalPaid":{"type":"number","example":200},"totalRepaymentExpected":{"type":"number","example":200},"totalWaived":{"type":"number","example":0},"totalWrittenOff":{"type":"number","example":0}}},"GetLoansLoanIdResponse":{"type":"object","description":"GetLoansLoanIdResponse","properties":{"accountNo":{"type":"string","example":"000000001"},"actualNoTerm":{"type":"integer","format":"int32","example":6},"allowFullTermForTranche":{"type":"boolean","description":"Allow full term length for each tranche disbursement","example":false},"amortizationType":{"$ref":"#/components/schemas/GetLoansLoanIdAmortizationType"},"annualInterestRate":{"type":"number","example":24},"approvedPrincipal":{"type":"number","example":1000},"buyDownFeeCalculationType":{"$ref":"#/components/schemas/StringEnumOptionData"},"buyDownFeeIncomeType":{"$ref":"#/components/schemas/StringEnumOptionData"},"buyDownFeeStrategy":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeCalculationType":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeStrategy":{"$ref":"#/components/schemas/StringEnumOptionData"},"capitalizedIncomeType":{"$ref":"#/components/schemas/StringEnumOptionData"},"chargeOffBehaviour":{"$ref":"#/components/schemas/StringEnumOptionData"},"chargedOff":{"type":"boolean","example":false},"charges":{"type":"array","description":"Set of charges","items":{"$ref":"#/components/schemas/GetLoansLoanIdLoanChargeData"}},"clientExternalId":{"type":"string","example":"5e77989e-aa11-11bc-b109-0242ac120004"},"clientId":{"type":"integer","format":"int64","example":1},"clientName":{"type":"string","example":"Kampala first Client"},"clientOfficeId":{"type":"integer","format":"int64","example":2},"currency":{"$ref":"#/components/schemas/GetLoansLoanIdCurrency"},"delinquencyRange":{"$ref":"#/components/schemas/DelinquencyRangeData"},"delinquent":{"$ref":"#/components/schemas/GetLoansLoanIdDelinquencySummary"},"disallowExpectedDisbursements":{"type":"boolean","example":false},"disbursedAmountPercentageForDownPayment":{"type":"number","example":0},"disbursementDetails":{"type":"array","description":"Set of GetLoansLoanIdDisbursementDetails","items":{"$ref":"#/components/schemas/GetLoansLoanIdDisbursementDetails"},"uniqueItems":true},"emiAmountVariations":{"type":"array","description":"List of GetLoansLoanIdLoanTermVariations","items":{"$ref":"#/components/schemas/GetLoansLoanIdLoanTermVariations"}},"enableAutoRepaymentForDownPayment":{"type":"boolean","example":false},"enableBuyDownFee":{"type":"boolean","example":false},"enableDownPayment":{"type":"boolean","example":false},"enableIncomeCapitalization":{"type":"boolean","example":false},"enableInstallmentLevelDelinquency":{"type":"boolean","example":false},"externalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"fixedLength":{"type":"integer","format":"int32","example":1},"fixedPrincipalPercentagePerInstallment":{"type":"number","example":5.5},"fraud":{"type":"boolean","example":false},"graceOnArrearsAgeing":{"type":"integer","format":"int32","example":3},"graceOnInterestCharged":{"type":"integer","format":"int32","example":0},"graceOnInterestPayment":{"type":"integer","format":"int32","example":0},"graceOnPrincipalPayment":{"type":"integer","format":"int32","example":0},"id":{"type":"integer","format":"int64","example":1},"inArrearsTolerance":{"type":"integer","format":"int32","example":3},"interestCalculationPeriodType":{"$ref":"#/components/schemas/GetLoansLoanIdInterestCalculationPeriodType"},"interestRateFrequencyType":{"$ref":"#/components/schemas/GetLoansLoanIdInterestRateFrequencyType"},"interestRatePerPeriod":{"type":"number","example":24},"interestRecognitionOnDisbursementDate":{"type":"boolean","example":false},"interestType":{"$ref":"#/components/schemas/GetLoansLoanIdInterestType"},"isFloatingInterestRate":{"type":"boolean","example":false},"lastClosedBusinessDate":{"type":"string","format":"date"},"loanOfficerId":{"type":"integer","format":"int64","example":2},"loanOfficerName":{"type":"string","example":"LoanOfficer, Kampala"},"loanProductDescription":{"type":"string","example":"Typical Kampala loan product with cash accounting enabled for testing."},"loanProductId":{"type":"integer","format":"int64","example":1},"loanProductName":{"type":"string","example":"Kampala Product (with cash accounting)"},"loanPurposeId":{"type":"integer","format":"int64","example":22},"loanPurposeName":{"type":"string","example":"option.HousingImprovement"},"loanScheduleProcessingType":{"$ref":"#/components/schemas/EnumOptionData"},"loanScheduleType":{"$ref":"#/components/schemas/EnumOptionData"},"loanTermVariations":{"type":"array","description":"List of GetLoansLoanIdLoanTermVariations","items":{"$ref":"#/components/schemas/GetLoansLoanIdLoanTermVariations"}},"loanType":{"$ref":"#/components/schemas/GetLoansLoanIdLoanType"},"netDisbursalAmount":{"type":"number","example":200},"numberOfRepayments":{"type":"integer","format":"int32","example":12},"originators":{"type":"array","description":"List of originators associated with this loan","items":{"$ref":"#/components/schemas/GetLoansLoanIdOriginatorData"}},"overpaidOnDate":{"type":"string","format":"date"},"principal":{"type":"number","example":1000000},"proposedPrincipal":{"type":"number","example":1001},"repaymentEvery":{"type":"integer","format":"int32","example":1},"repaymentFrequencyType":{"$ref":"#/components/schemas/GetLoansLoanIdRepaymentFrequencyType"},"repaymentSchedule":{"$ref":"#/components/schemas/GetLoansLoanIdRepaymentSchedule"},"repaymentStartDateType":{"$ref":"#/components/schemas/EnumOptionData"},"status":{"$ref":"#/components/schemas/GetLoansLoanIdStatus"},"summary":{"$ref":"#/components/schemas/GetLoansLoanIdSummary"},"termFrequency":{"type":"integer","format":"int32","example":12},"termPeriodFrequencyType":{"$ref":"#/components/schemas/GetLoansLoanIdTermPeriodFrequencyType"},"timeline":{"$ref":"#/components/schemas/GetLoansLoanIdTimeline"},"totalOverpaid":{"type":"number","example":250},"transactionProcessingStrategyCode":{"type":"string","example":"principal-interest-penalties-fees-order-strategy"},"transactions":{"type":"array","description":"Set of GetLoansLoanIdTransactions","items":{"$ref":"#/components/schemas/GetLoansLoanIdTransactions"}}}},"GetLoansLoanIdStatus":{"type":"object","properties":{"active":{"type":"boolean","example":true},"closed":{"type":"boolean","example":false},"closedObligationsMet":{"type":"boolean","example":false},"closedRescheduled":{"type":"boolean","example":false},"closedWrittenOff":{"type":"boolean","example":false},"code":{"type":"string","example":"loanStatusType.active"},"description":{"type":"string","example":"Active"},"id":{"type":"integer","format":"int64","example":300},"overpaid":{"type":"boolean","example":false},"pendingApproval":{"type":"boolean","example":false},"waitingForDisbursal":{"type":"boolean","example":false}}},"GetLoansLoanIdSummary":{"type":"object","properties":{"allowFullTermForTranche":{"type":"boolean","description":"Allow full term length for each tranche disbursement","example":false},"canDisburse":{"type":"boolean","example":false},"chargeOffReason":{"type":"string","example":"reason"},"chargeOffReasonId":{"type":"integer","format":"int64","example":1},"currency":{"$ref":"#/components/schemas/GetLoansLoanIdCurrency"},"disbursementDetails":{"type":"array","items":{"$ref":"#/components/schemas/GetLoansLoanIdDisbursementDetails"},"uniqueItems":true},"feeAdjustments":{"type":"number","example":0},"feeChargesCharged":{"type":"number","example":18000},"feeChargesDueAtDisbursementCharged":{"type":"number","example":0},"feeChargesOutstanding":{"type":"number","example":18000},"feeChargesOverdue":{"type":"number","example":15000},"feeChargesPaid":{"type":"number","example":0},"feeChargesWaived":{"type":"number","example":0},"feeChargesWrittenOff":{"type":"number","example":0},"fixedEmiAmount":{"type":"number","example":1100},"inArrears":{"type":"boolean","example":true},"interestCharged":{"type":"number","example":240000},"interestOutstanding":{"type":"number","example":240000},"interestOverdue":{"type":"number","example":200000},"interestPaid":{"type":"number","example":0},"interestWaived":{"type":"number","example":0},"interestWrittenOff":{"type":"number","example":0},"isNPA":{"type":"boolean","example":false},"linkedAccount":{"$ref":"#/components/schemas/GetLoansLoanIdLinkedAccount"},"maxOutstandingLoanBalance":{"type":"number","example":35000},"overdueCharges":{"type":"array","items":{"$ref":"#/components/schemas/GetLoansLoanIdOverdueCharges"},"uniqueItems":true},"overdueSinceDate":{"type":"string","format":"date"},"penaltyAdjustments":{"type":"number","example":0},"penaltyChargesCharged":{"type":"number","example":0},"penaltyChargesOutstanding":{"type":"number","example":0},"penaltyChargesOverdue":{"type":"number","example":0},"penaltyChargesPaid":{"type":"number","example":0},"penaltyChargesWaived":{"type":"number","example":0},"penaltyChargesWrittenOff":{"type":"number","example":0},"principalAdjustments":{"type":"number","example":0},"principalDisbursed":{"type":"number","example":1000000},"principalOutstanding":{"type":"number","example":1000000},"principalOverdue":{"type":"number","example":833333.3},"principalPaid":{"type":"number","example":0},"principalWrittenOff":{"type":"number","example":0},"totalCapitalizedIncome":{"type":"number","example":1000000},"totalCapitalizedIncomeAdjustment":{"type":"number","example":0},"totalChargeAdjustment":{"type":"number","example":0},"totalChargeAdjustmentReversed":{"type":"number","example":0},"totalChargeback":{"type":"number","example":0},"totalCostOfLoan":{"type":"number","example":0},"totalCreditBalanceRefund":{"type":"number","example":0},"totalCreditBalanceRefundReversed":{"type":"number","example":0},"totalExpectedCostOfLoan":{"type":"number","example":258000},"totalExpectedRepayment":{"type":"number","example":1258000},"totalGoodwillCredit":{"type":"number","example":0},"totalGoodwillCreditReversed":{"type":"number","example":0},"totalInterestPaymentWaiver":{"type":"number","example":0},"totalInterestRefund":{"type":"number","example":0},"totalMerchantRefund":{"type":"number","example":0},"totalMerchantRefundReversed":{"type":"number","example":0},"totalOutstanding":{"type":"number","example":1258000},"totalOverdue":{"type":"number","example":1048333.3},"totalPayoutRefund":{"type":"number","example":0},"totalPayoutRefundReversed":{"type":"number","example":0},"totalPrincipal":{"type":"number","example":1000000},"totalRecovered":{"type":"number","example":2456.3},"totalRepayment":{"type":"number","example":0},"totalRepaymentTransaction":{"type":"number","example":0},"totalRepaymentTransactionReversed":{"type":"number","example":0},"totalUnpaidPayableDueInterest":{"type":"number","example":0},"totalUnpaidPayableNotDueInterest":{"type":"number","example":0},"totalWaived":{"type":"number","example":0},"totalWrittenOff":{"type":"number","example":0},"writeoffReason":{"type":"string","example":"reason"},"writeoffReasonId":{"type":"integer","format":"int64","example":1}}},"GetLoansLoanIdTermPeriodFrequencyType":{"type":"object","properties":{"code":{"type":"string","example":"termFrequency.periodFrequencyType.months"},"description":{"type":"string","example":"Months"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoansLoanIdTimeline":{"type":"object","properties":{"actualDisbursementDate":{"type":"string","format":"date"},"actualMaturityDate":{"type":"string","format":"date"},"approvedByFirstname":{"type":"string","example":"App"},"approvedByLastname":{"type":"string","example":"Administrator"},"approvedByUsername":{"type":"string","example":"admin"},"approvedOnDate":{"type":"string","format":"date"},"chargedOffByFirstname":{"type":"string","example":"App"},"chargedOffByLastname":{"type":"string","example":"Administrator"},"chargedOffByUsername":{"type":"string","example":"admin"},"chargedOffOnDate":{"type":"string","format":"date"},"closedOnDate":{"type":"string","format":"date"},"disbursedByFirstname":{"type":"string","example":"App"},"disbursedByLastname":{"type":"string","example":"Administrator"},"disbursedByUsername":{"type":"string","example":"admin"},"expectedDisbursementDate":{"type":"string","format":"date"},"expectedMaturityDate":{"type":"string","format":"date"},"submittedByFirstname":{"type":"string","example":"App"},"submittedByLastname":{"type":"string","example":"Administrator"},"submittedByUsername":{"type":"string","example":"admin"},"submittedOnDate":{"type":"string","format":"date"}}},"GetLoansLoanIdTransactions":{"type":"object","description":"Set of GetLoansLoanIdTransactions","properties":{"accountId":{"type":"integer","format":"int64","example":7327},"accountNumber":{"type":"string","example":"acct123"},"amount":{"type":"number","example":100},"bankNumber":{"type":"integer","format":"int32","example":34645568},"checkNumber":{"type":"integer","format":"int32","example":10001},"currency":{"$ref":"#/components/schemas/GetLoansLoanIdCurrency"},"date":{"type":"string","format":"date"},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"externalId":{"type":"string","example":"3"},"feeChargesPortion":{"type":"number","example":100},"fixedEmiAmount":{"type":"number","example":100},"id":{"type":"integer","format":"int64","example":1},"interestPortion":{"type":"number","example":100},"loanChargePaidByList":{"type":"array","description":"List of GetLoansLoanIdLoanChargePaidByData","items":{"$ref":"#/components/schemas/GetLoansLoanIdLoanChargePaidByData"}},"loanRepaymentScheduleInstallments":{"type":"array","description":"List of GetLoansLoanIdLoanRepaymentScheduleInstallmentData","items":{"$ref":"#/components/schemas/GetLoansLoanIdLoanRepaymentScheduleInstallmentData"}},"locale":{"type":"string","example":"de_DE"},"manuallyReversed":{"type":"boolean"},"netDisbursalAmount":{"type":"number","example":100},"numberOfRepayments":{"type":"integer","format":"int32","example":4},"officeId":{"type":"integer","format":"int64","example":1},"officeName":{"type":"string","example":"Head Office"},"outstandingLoanBalance":{"type":"number","example":100},"overpaymentPortion":{"type":"number","example":100},"paymentDetailData":{"$ref":"#/components/schemas/GetLoansLoanIdPaymentDetailData"},"paymentTypeId":{"type":"integer","format":"int32","example":101},"paymentTypeOptions":{"type":"array","description":"List of GetLoansLoanIdPaymentType","items":{"$ref":"#/components/schemas/GetLoansLoanIdPaymentType"}},"penaltyChargesPortion":{"type":"number","example":100},"possibleNextRepaymentDate":{"type":"string","format":"date"},"principalPortion":{"type":"number","example":100},"receiptNumber":{"type":"integer","format":"int32","example":67863},"reversalExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"reversedOnDate":{"type":"string","format":"date"},"routingCode":{"type":"integer","format":"int32","example":6337},"submittedOnDate":{"type":"string","format":"date"},"transactionAmount":{"type":"number","example":100},"transactionDate":{"type":"string","format":"date"},"transactionRelations":{"type":"array","description":"List of GetLoansLoanIdLoanTransactionRelationData","items":{"$ref":"#/components/schemas/GetLoansLoanIdLoanTransactionRelation"},"uniqueItems":true},"transactionType":{"type":"string","example":"repayment"},"type":{"$ref":"#/components/schemas/GetLoansLoanIdLoanTransactionEnumData"},"unrecognizedIncomePortion":{"type":"number","example":100},"writeOffReasonOptions":{"type":"array","description":"List of GetLoansLoanIdCodeValueData","items":{"$ref":"#/components/schemas/GetLoansLoanIdCodeValueData"}}}},"GetLoansLoanIdTransactionsResponse":{"type":"object","description":"GetLoansLoanIdTransactionsResponse","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/GetLoansLoanIdTransactionsTransactionIdResponse"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer","format":"int32"},"numberOfElements":{"type":"integer","format":"int32"},"pageable":{"$ref":"#/components/schemas/Pageable"},"size":{"type":"integer","format":"int32"},"sort":{"$ref":"#/components/schemas/Sort"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"}}},"GetLoansLoanIdTransactionsTemplateResponse":{"type":"object","description":"GetLoansLoanIdTransactionsTemplateResponse","properties":{"amount":{"type":"number","format":"double","example":200},"chargeOffReasonOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanProductsChargeOffReasonOptions"}},"classificationOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetCodeValuesDataResponse"}},"currency":{"$ref":"#/components/schemas/GetLoanCurrency"},"date":{"type":"string","format":"date"},"feeChargesPortion":{"type":"number","format":"double","example":20},"interestPortion":{"type":"number","format":"double","example":80},"netDisbursalAmount":{"type":"number","format":"double","example":200},"paymentTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetPaymentTypeOptions"}},"penaltyChargesPortion":{"type":"number","format":"double","example":20},"principalPortion":{"type":"number","format":"double","example":100},"total":{"$ref":"#/components/schemas/GetLoansTotal"},"type":{"$ref":"#/components/schemas/GetLoansTransactionType"}}},"GetLoansLoanIdTransactionsTransactionIdResponse":{"type":"object","description":"GetLoansLoanIdTransactionsTransactionIdResponse","properties":{"amount":{"type":"number","format":"double","example":559.88},"classification":{"$ref":"#/components/schemas/GetCodeValuesDataResponse"},"currency":{"$ref":"#/components/schemas/GetLoansCurrency"},"date":{"type":"string","format":"date"},"externalId":{"type":"string","example":"20120514"},"feeChargesPortion":{"type":"number","format":"double","example":23.9},"id":{"type":"integer","format":"int64","example":3},"interestPortion":{"type":"number","format":"double","example":559.88},"loanChargePaidByList":{"type":"array","items":{"$ref":"#/components/schemas/GetLoansLoanIdLoanChargePaidByData"},"uniqueItems":true},"manuallyReversed":{"type":"boolean","example":false},"netDisbursalAmount":{"type":"number","format":"double","example":1000},"outstandingLoanBalance":{"type":"number","format":"double","example":100},"overpaymentPortion":{"type":"number","format":"double","example":33},"paymentDetailData":{"$ref":"#/components/schemas/PaymentDetailData"},"penaltyChargesPortion":{"type":"number","format":"double","example":12.8},"possibleNextRepaymentDate":{"type":"string","format":"date"},"principalPortion":{"type":"number","format":"double","example":240},"reversalExternalId":{"type":"string","example":"20120514"},"reversedOnDate":{"type":"string","format":"date"},"submittedOnDate":{"type":"string","format":"date"},"transactionRelations":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanTransactionRelation"},"uniqueItems":true},"type":{"$ref":"#/components/schemas/GetLoansType"},"unrecognizedIncomePortion":{"type":"number","format":"double","example":55.5}}},"GetLoansProductsInterestCalculationPeriodType":{"type":"object","properties":{"code":{"type":"string","example":"interestCalculationPeriodType.same.as.repayment.period"},"description":{"type":"string","example":"Same as repayment period"},"id":{"type":"integer","format":"int64","example":1}}},"GetLoansResponse":{"type":"object","description":"GetLoansResponse","properties":{"pageItems":{"type":"array","items":{"$ref":"#/components/schemas/GetLoansLoanIdResponse"},"uniqueItems":true},"totalFilteredRecords":{"type":"integer","format":"int32","example":1}}},"GetLoansTemplateProductOptions":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Kampala Product (with cash accounting)"}}},"GetLoansTemplateResponse":{"type":"object","description":"GetLoansTemplateResponse","properties":{"clientId":{"type":"integer","format":"int64","example":1},"clientName":{"type":"string","example":"Kampala first Client"},"clientOfficeId":{"type":"integer","format":"int64","example":2},"productOptions":{"type":"array","items":{"$ref":"#/components/schemas/GetLoansTemplateProductOptions"},"uniqueItems":true},"timeline":{"$ref":"#/components/schemas/GetLoansTemplateTimeline"}}},"GetLoansTemplateTimeline":{"type":"object","properties":{"expectedDisbursementDate":{"type":"string","format":"date"}}},"GetLoansTotal":{"type":"object","properties":{"amount":{"type":"number","format":"float","example":471},"currencyCode":{"type":"string","example":"XOF"},"defaultName":{"type":"string","example":"CFA Franc BCEAO"},"digitsAfterDecimal":{"type":"integer","format":"int32","example":0},"displaySymbol":{"type":"string","example":"CFA"},"displaySymbolValue":{"type":"string","example":"471 CFA"},"greaterThanZero":{"type":"boolean","example":true},"inMultiplesOf":{"type":"integer","format":"int32","example":0},"nameCode":{"type":"string","example":"currency.XOF"},"zero":{"type":"boolean","example":false}}},"GetLoansTransactionType":{"type":"object","properties":{"code":{"type":"string","example":"loanTransactionType.repayment"},"description":{"type":"string","example":"Repayment"},"id":{"type":"integer","format":"int64","example":2}}},"GetLoansType":{"type":"object","properties":{"code":{"type":"string","example":"loanTransactionType.repayment"},"contra":{"type":"boolean","example":false},"description":{"type":"string","example":"Repayment"},"disbursement":{"type":"boolean","example":false},"externalId":{"type":"string","example":"3e7791ce-aa10-11ec-b909-0242ac120002"},"externalLoanId":{"type":"string","example":"3e7791ce-aa10-11ec-b909-0242ac120002"},"id":{"type":"integer","format":"int64","example":2},"loanId":{"type":"integer","format":"int64","example":2},"recoveryRepayment":{"type":"boolean","example":false},"repayment":{"type":"boolean","example":true},"repaymentAtDisbursement":{"type":"boolean","example":false},"waiveCharges":{"type":"boolean","example":false},"waiveInterest":{"type":"boolean","example":false},"writeOff":{"type":"boolean","example":false}}},"GetPaymentTypeOptions":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":10},"name":{"type":"string","example":"check"},"position":{"type":"integer","format":"int32","example":1}}},"GetPermissionsResponse":{"type":"object","description":"GetPermissionsResponse","properties":{"actionName":{"type":"string","example":"READ"},"code":{"type":"string","example":"READ_PERMISSION"},"entityName":{"type":"string","example":"PERMISSION"},"grouping":{"type":"string","example":"authorisation"},"selected":{"type":"boolean","example":true}}},"GetReportsResponse":{"type":"object","description":"GetReportsResponse","properties":{"coreReport":{"type":"boolean","example":true},"description":{"type":"string","example":"Individual Client Report Lists the small number of defined fields on the client table.  Would expect to copy this report and add any one to one additional data for specific tenant needs. Can be run for any size MFI but you expect it only to be run within a branch for larger ones.  Depending on how many columns are displayed, there is probably is a limit of about 20/50k clients returned for html display (export to excel doesnt have that client browser/memory impact)."},"id":{"type":"integer","format":"int64","example":1},"reportCategory":{"type":"string","example":"Client"},"reportName":{"type":"string","example":"Client Listing"},"reportParameters":{"type":"array","items":{"$ref":"#/components/schemas/ReportParameterData"}},"reportSql":{"type":"string"},"reportSubType":{"type":"string"},"reportType":{"type":"string","example":"Table"},"useReport":{"type":"boolean","example":true}}},"GetReportsTemplateResponse":{"type":"object","description":"GetReportsTemplateResponse","properties":{"allowedParameters":{"type":"array","items":{"$ref":"#/components/schemas/ReportParameterData"}},"allowedReportSubTypes":{"type":"array","items":{"type":"string"}},"allowedReportTypes":{"type":"array","items":{"type":"string"}}}},"GetRolesResponse":{"type":"object","description":"GetRolesResponse","properties":{"description":{"type":"string","example":"This role provides all application permissions."},"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Super Users"}}},"GetRolesRoleIdPermissionsResponse":{"type":"object","description":"GetRolesRoleIdPermissionsResponse","properties":{"description":{"type":"string","example":"This role provides all application permissions."},"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Super Users"},"permissionUsageData":{"type":"array","items":{"$ref":"#/components/schemas/GetRolesRoleIdPermissionsResponsePermissionData"}}}},"GetRolesRoleIdPermissionsResponsePermissionData":{"type":"object","properties":{"actionName":{"type":"string","example":"READ"},"code":{"type":"string","example":"READ_PERMISSION"},"entityName":{"type":"string","example":"PERMISSION"},"grouping":{"type":"string","example":"authorisation"},"selected":{"type":"boolean","example":false}}},"GetRolesRoleIdResponse":{"type":"object","description":"GetRolesRoleIdResponse","properties":{"description":{"type":"string","example":"This role provides all application permissions."},"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"Super Users"}}},"GetTaxesComponentsCreditAccount":{"type":"object","properties":{"glCode":{"type":"string","example":"LIABILITY_PA1460364665046"},"id":{"type":"integer","format":"int64","example":4},"name":{"type":"string","example":"ACCOUNT_NAME_7BR9C"}}},"GetTaxesComponentsCreditAccountType":{"type":"object","properties":{"code":{"type":"string","example":"accountType.liability"},"description":{"type":"string","example":"LIABILITY"},"id":{"type":"integer","format":"int32","example":2}}},"GetTaxesComponentsHistories":{"type":"object"},"GetTaxesComponentsResponse":{"type":"object","description":"GetTaxesComponentsResponse","properties":{"creditAccount":{"$ref":"#/components/schemas/GetTaxesComponentsCreditAccount"},"creditAccountType":{"$ref":"#/components/schemas/GetTaxesComponentsCreditAccountType"},"id":{"type":"integer","format":"int64","example":1},"name":{"type":"string","example":"tax component 1"},"percentage":{"type":"number","format":"float","example":10},"startDate":{"type":"string","format":"date"},"taxComponentsHistories":{"type":"array","items":{"$ref":"#/components/schemas/GetTaxesComponentsHistories"},"uniqueItems":true}}},"GetTaxesGroupResponse":{"type":"object","description":"GetTaxesGroupResponse","properties":{"id":{"type":"integer","format":"int64","example":7},"name":{"type":"string","example":"tax group 1"},"taxAssociations":{"type":"array","items":{"$ref":"#/components/schemas/GetTaxesGroupTaxAssociations"},"uniqueItems":true}}},"GetTaxesGroupTaxAssociations":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":7},"startDate":{"type":"string","format":"date"},"taxComponent":{"$ref":"#/components/schemas/GetTaxesGroupTaxComponent"}}},"GetTaxesGroupTaxComponent":{"type":"object","properties":{"id":{"type":"integer","format":"int64","example":7},"name":{"type":"string","example":"tax component 2"}}},"GetUsersResponse":{"type":"object","description":"GetUsersResponse","properties":{"email":{"type":"string","example":"demo@example.com"},"firstname":{"type":"string","example":"App"},"id":{"type":"integer","format":"int64","example":1},"lastname":{"type":"string","example":"Administrator"},"officeId":{"type":"integer","format":"int64","example":1},"officeName":{"type":"string","example":"Head Office"},"passwordNeverExpires":{"type":"boolean","example":false},"selectedRoles":{"type":"array","items":{"$ref":"#/components/schemas/RoleData"}},"staff":{"$ref":"#/components/schemas/StaffData"},"username":{"type":"string","example":"admin"}}},"GetUsersTemplateResponse":{"type":"object","description":"GetUsersTemplateResponse","properties":{"allowedOffices":{"type":"array","items":{"$ref":"#/components/schemas/OfficeData"}},"availableRoles":{"type":"array","items":{"$ref":"#/components/schemas/RoleData"}}}},"GetUsersUserIdResponse":{"type":"object","description":"GetUsersUserIdResponse","properties":{"availableRoles":{"type":"array","items":{"$ref":"#/components/schemas/RoleData"}},"email":{"type":"string","example":"demo@example.com"},"firstname":{"type":"string","example":"App"},"id":{"type":"integer","format":"int64","example":1},"lastname":{"type":"string","example":"Administrator"},"officeId":{"type":"integer","format":"int64","example":1},"officeName":{"type":"string","example":"Head Office"},"passwordNeverExpires":{"type":"boolean","example":false},"selectedRoles":{"type":"array","items":{"$ref":"#/components/schemas/RoleData"}},"staff":{"$ref":"#/components/schemas/StaffData"},"username":{"type":"string","example":"admin"}}},"LoanProductBasicDetailsData":{"type":"object","properties":{"currency":{"$ref":"#/components/schemas/CurrencyData"},"description":{"type":"string"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"productType":{"type":"string"},"shortName":{"type":"string"}}},"LoanProductChargeData":{"type":"object","description":"LoanProductChargeData","properties":{"amount":{"type":"number","example":60},"id":{"type":"integer","format":"int64","example":1}}},"LoanProductChargeToGLAccountMapper":{"type":"object","description":"LoanProductChargeToGLAccountMapper","properties":{"charge":{"$ref":"#/components/schemas/LoanProductChargeData"},"incomeAccount":{"$ref":"#/components/schemas/GLAccountData"}}},"LoanProductV2ChargeEntry":{"type":"object","description":"A charge entry in V2 requests/responses: the EXISTING charge id contract plus the per-association charge flags. mandatory: the charge cannot be removed at loan origination. amountLocked: the loan-level amount-or-percentage cannot override the product configuration. Both optional on write (create default false; update omission preserves survivors, defaults false for new associations; explicit null rejected — send false to unset). Both ACTIVELY enforced at origination; post-disbursal waiver/adjustment lifecycle is unchanged.","properties":{"amountLocked":{"type":"boolean","example":false},"id":{"type":"integer","format":"int64","example":5},"mandatory":{"type":"boolean","example":true}}},"LoanProductV2CodeOption":{"type":"object","description":"A code-backed value: `code` is the stable business identifier (supply THIS in write requests), `value` is the display label.","properties":{"code":{"type":"string","example":"PL"},"value":{"type":"string","example":"Personal Loan"}}},"LoanProductV2EnumOption":{"type":"object","description":"A domain-enum choice: `code` is the stable wire value (supply THIS in write requests), `value` is the display name, `description` explains the choice in one line.","properties":{"code":{"type":"string","example":"ACT_365"},"description":{"type":"string","example":"Actual days in each period over a 365-day year"},"value":{"type":"string","example":"ACT/365"}}},"LoanScheduleData":{"type":"object","properties":{"currency":{"$ref":"#/components/schemas/CurrencyData"},"futurePeriods":{"type":"array","items":{"$ref":"#/components/schemas/LoanSchedulePeriodData"}},"loanTermInDays":{"type":"integer","format":"int32"},"periods":{"type":"array","items":{"$ref":"#/components/schemas/LoanSchedulePeriodData"}},"totalCredits":{"type":"number"},"totalFeeChargesCharged":{"type":"number"},"totalInterestCharged":{"type":"number"},"totalOutstanding":{"type":"number"},"totalPaidInAdvance":{"type":"number"},"totalPaidLate":{"type":"number"},"totalPenaltyChargesCharged":{"type":"number"},"totalPrincipalDisbursed":{"type":"number"},"totalPrincipalExpected":{"type":"number"},"totalPrincipalPaid":{"type":"number"},"totalRepayment":{"type":"number"},"totalRepaymentExpected":{"type":"number"},"totalWaived":{"type":"number"},"totalWrittenOff":{"type":"number"}}},"LoanSchedulePeriodData":{"type":"object","properties":{"brokenPeriod":{"type":"boolean"},"complete":{"type":"boolean"},"daysInPeriod":{"type":"integer","format":"int32"},"downPaymentPeriod":{"type":"boolean"},"dueDate":{"type":"string","format":"date"},"feeChargesDue":{"type":"number"},"feeChargesOutstanding":{"type":"number"},"feeChargesPaid":{"type":"number"},"feeChargesWaived":{"type":"number"},"feeChargesWrittenOff":{"type":"number"},"fromDate":{"type":"string","format":"date"},"interestDue":{"type":"number"},"interestOriginalDue":{"type":"number"},"interestOutstanding":{"type":"number"},"interestPaid":{"type":"number"},"interestWaived":{"type":"number"},"interestWrittenOff":{"type":"number"},"obligationsMetOnDate":{"type":"string","format":"date"},"penaltyChargesDue":{"type":"number"},"penaltyChargesOutstanding":{"type":"number"},"penaltyChargesPaid":{"type":"number"},"penaltyChargesWaived":{"type":"number"},"penaltyChargesWrittenOff":{"type":"number"},"period":{"type":"integer","format":"int32"},"principalDisbursed":{"type":"number"},"principalDue":{"type":"number"},"principalLoanBalanceOutstanding":{"type":"number"},"principalOriginalDue":{"type":"number"},"principalOutstanding":{"type":"number"},"principalPaid":{"type":"number"},"principalWrittenOff":{"type":"number"},"totalAccruedInterest":{"type":"number"},"totalActualCostOfLoanForPeriod":{"type":"number"},"totalCredits":{"type":"number"},"totalDueForPeriod":{"type":"number"},"totalInstallmentAmountForPeriod":{"type":"number"},"totalOriginalDueForPeriod":{"type":"number"},"totalOutstandingForPeriod":{"type":"number"},"totalOverdue":{"type":"number"},"totalPaidForPeriod":{"type":"number"},"totalPaidInAdvanceForPeriod":{"type":"number"},"totalPaidLateForPeriod":{"type":"number"},"totalWaivedForPeriod":{"type":"number"},"totalWrittenOffForPeriod":{"type":"number"}}},"MediaType":{"type":"object","properties":{"parameters":{"type":"object","additionalProperties":{"type":"string"}},"subtype":{"type":"string"},"type":{"type":"string"},"wildcardSubtype":{"type":"boolean"},"wildcardType":{"type":"boolean"}}},"MessageBodyWorkers":{"type":"object"},"MultiPart":{"type":"object","properties":{"bodyParts":{"type":"array","items":{"$ref":"#/components/schemas/BodyPart"}},"contentDisposition":{"$ref":"#/components/schemas/ContentDisposition"},"entity":{"type":"object"},"headers":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"properties":{"empty":{"type":"boolean"}}},"mediaType":{"$ref":"#/components/schemas/MediaType"},"messageBodyWorkers":{"$ref":"#/components/schemas/MessageBodyWorkers"},"parameterizedHeaders":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/ParameterizedHeader"}},"properties":{"empty":{"type":"boolean"}}},"parent":{"$ref":"#/components/schemas/MultiPart"},"providers":{"$ref":"#/components/schemas/Providers"}}},"OfficeData":{"type":"object","properties":{"allowedParents":{"type":"array","items":{"$ref":"#/components/schemas/OfficeData"}},"dateFormat":{"type":"string"},"externalId":{"$ref":"#/components/schemas/ExternalId"},"hierarchy":{"type":"string"},"id":{"type":"integer","format":"int64"},"locale":{"type":"string"},"name":{"type":"string"},"nameDecorated":{"type":"string"},"openingDate":{"type":"string","format":"date"},"parentId":{"type":"integer","format":"int64"},"parentName":{"type":"string"},"rowIndex":{"type":"integer","format":"int32"}}},"PageClientSearchData":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/ClientSearchData"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer","format":"int32"},"numberOfElements":{"type":"integer","format":"int32"},"pageable":{"$ref":"#/components/schemas/Pageable"},"size":{"type":"integer","format":"int32"},"sort":{"$ref":"#/components/schemas/Sort"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"}}},"Pageable":{"type":"object","properties":{"offset":{"type":"integer","format":"int64"},"pageNumber":{"type":"integer","format":"int32"},"pageSize":{"type":"integer","format":"int32"},"paged":{"type":"boolean"},"sort":{"$ref":"#/components/schemas/Sort"},"unpaged":{"type":"boolean"}}},"PagedRequestClientTextSearch":{"type":"object","properties":{"page":{"type":"integer","format":"int32"},"request":{"$ref":"#/components/schemas/ClientTextSearch"},"size":{"type":"integer","format":"int32"},"sorts":{"type":"array","items":{"$ref":"#/components/schemas/SortOrder"}}}},"ParameterizedHeader":{"type":"object","properties":{"parameters":{"type":"object","additionalProperties":{"type":"string"}},"value":{"type":"string"}}},"PaymentAllocationOrder":{"type":"object","description":"PaymentAllocationOrder","properties":{"order":{"type":"integer","format":"int32","example":1},"paymentAllocationRule":{"type":"string","example":"PENALTY"}}},"PaymentDetailData":{"type":"object","properties":{"accountNumber":{"type":"string"},"bankNumber":{"type":"string"},"checkNumber":{"type":"string"},"id":{"type":"integer","format":"int64"},"paymentType":{"$ref":"#/components/schemas/PaymentTypeData"},"receiptNumber":{"type":"string"},"routingCode":{"type":"string"}}},"PaymentTypeCreateRequest":{"type":"object","properties":{"codeName":{"type":"string","maxLength":100,"minLength":0},"description":{"type":"string","maxLength":500,"minLength":0},"isCashPayment":{"type":"boolean"},"isSystemDefined":{"type":"boolean"},"name":{"type":"string","minLength":1},"position":{"type":"integer","format":"int64","minimum":0}},"required":["isSystemDefined","name"]},"PaymentTypeCreateResponse":{"type":"object","properties":{"resourceId":{"type":"integer","format":"int64"}}},"PaymentTypeData":{"type":"object","properties":{"codeName":{"type":"string"},"description":{"type":"string"},"id":{"type":"integer","format":"int64"},"isCashPayment":{"type":"boolean"},"isSystemDefined":{"type":"boolean"},"name":{"type":"string"},"position":{"type":"integer","format":"int64"}}},"PaymentTypeDeleteResponse":{"type":"object","properties":{"resourceId":{"type":"integer","format":"int64"}}},"PaymentTypeUpdateRequest":{"type":"object","properties":{"codeName":{"type":"string","maxLength":100,"minLength":0},"description":{"type":"string","maxLength":500,"minLength":0},"isCashPayment":{"type":"boolean"},"isSystemDefined":{"type":"boolean"},"name":{"type":"string","minLength":1},"position":{"type":"integer","format":"int64","minimum":0}},"required":["isSystemDefined","name"]},"PaymentTypeUpdateResponse":{"type":"object","properties":{"resourceId":{"type":"integer","format":"int64"}}},"PostAuthenticationRequest":{"type":"object","description":"PostAuthenticationRequest","properties":{"password":{"type":"string","example":"password"},"username":{"type":"string","example":"admin"}},"required":["password","username"]},"PostAuthenticationResponse":{"type":"object","description":"PostAuthenticationResponse","properties":{"authenticated":{"type":"boolean","example":true},"base64EncodedAuthenticationKey":{"type":"string","example":"bWlmb3M6cGFzc3dvcmQ="},"officeId":{"type":"integer","format":"int64","example":1},"officeName":{"type":"string","example":"Head Office"},"organisationalRole":{"$ref":"#/components/schemas/EnumOptionData"},"permissions":{"type":"array","example":"ALL_FUNCTIONS","items":{"type":"string","example":"ALL_FUNCTIONS"}},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleData"}},"staffDisplayName":{"type":"string","example":"Director, Program"},"staffId":{"type":"integer","format":"int64","example":1},"userId":{"type":"integer","format":"int64","example":1},"username":{"type":"string","example":"admin"}}},"PostChargeOffReasonToExpenseAccountMappings":{"type":"object","properties":{"chargeOffReasonCodeValueId":{"type":"integer","format":"int64","example":1},"expenseAccountId":{"type":"integer","format":"int64","example":1}}},"PostChargesResponse":{"type":"object","description":"PostChargesResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":1}}},"PostClassificationToIncomeAccountMappings":{"type":"object","properties":{"classificationCodeValueId":{"type":"integer","format":"int64","example":1},"incomeAccountId":{"type":"integer","format":"int64","example":1}}},"PostClientClientIdAddressesResponse":{"type":"object","description":"PostClientClientIdAddressesResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":15}}},"PostClientsClientIdIdentifiersRequest":{"type":"object","description":"PostClientsClientIdIdentifiersRequest","properties":{"description":{"type":"string","example":"Document has been verified"},"documentKey":{"type":"string","example":"KA-54677"},"documentTypeId":{"type":"integer","format":"int64","example":1},"status":{"type":"string","example":"Active"}}},"PostClientsClientIdIdentifiersResponse":{"type":"object","description":"PostClientsClientIdIdentifiersResponse","properties":{"clientId":{"type":"integer","format":"int64","example":1},"officeId":{"type":"integer","format":"int64","example":1},"resourceId":{"type":"integer","format":"int64","example":3}}},"PostClientsDatatable":{"type":"object","description":"List of PostClientsDatatable","properties":{"data":{"type":"object","additionalProperties":{"type":"object","example":"data"},"example":"data"},"registeredTableName":{"type":"string","example":"Client Beneficiary information"}}},"PostClientsRequest":{"type":"object","description":"PostClientsRequest","properties":{"activationDate":{"type":"string","example":"04 March 2009"},"active":{"type":"boolean","example":true},"address":{"type":"array","description":"Address requests","items":{"$ref":"#/components/schemas/ClientAddressRequest"}},"datatables":{"type":"array","description":"List of PostClientsDatatable","items":{"$ref":"#/components/schemas/PostClientsDatatable"}},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"dateOfBirth":{"type":"string","format":"date"},"emailAddress":{"type":"string","example":"test@test.com"},"externalId":{"type":"string","example":"123"},"firstname":{"type":"string","example":"Client_FirstName"},"fullname":{"type":"string","example":"Client of group"},"groupId":{"type":"integer","format":"int64","example":1},"lastname":{"type":"string","example":"Client_LastName"},"legalFormId":{"type":"integer","format":"int64","example":1},"locale":{"type":"string","example":"en"},"middlename":{"type":"string","example":"Client_MiddleName"},"mobileNo":{"type":"string","example":"+353851239876"},"officeId":{"type":"integer","format":"int64","example":1},"submittedOnDate":{"type":"string","example":"04 March 2009"}}},"PostClientsResponse":{"type":"object","description":"PostClientsResponse","properties":{"clientId":{"type":"integer","format":"int64","example":2},"groupId":{"type":"integer","format":"int64","example":1},"officeId":{"type":"integer","format":"int64","example":1},"resourceExternalId":{"type":"string","example":"123-456"},"resourceId":{"type":"integer","format":"int64","example":2}}},"PostCodesRequest":{"type":"object","description":"PostCodesRequest","properties":{"name":{"type":"string","example":"MyNewCode"}}},"PostCodesResponse":{"type":"object","description":"PostCodesResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":4}}},"PostLoanProductsRequest":{"type":"object","description":"PostLoanProductsRequest","properties":{"accountMovesOutOfNPAOnlyOnArrearsCompletion":{"type":"boolean","example":false},"accountingRule":{"type":"integer","format":"int32","example":3},"allowApprovedDisbursedAmountsOverApplied":{"type":"boolean","example":true},"allowAttributeOverrides":{"$ref":"#/components/schemas/AllowAttributeOverrides"},"allowCompoundingOnEod":{"type":"boolean","example":false},"allowFullTermForTranche":{"type":"boolean","description":"Allow full term length for each tranche disbursement. Only available for PROGRESSIVE schedule type with multi-disbursement enabled.","example":false},"allowPartialPeriodInterestCalculation":{"type":"boolean","example":true},"allowVariableInstallments":{"type":"boolean","example":false},"amortizationType":{"type":"integer","format":"int32","example":1},"buyDownExpenseAccountId":{"type":"integer","format":"int64","example":27},"buyDownFeeCalculationType":{"type":"string","enum":["FLAT"],"example":"FLAT"},"buyDownFeeIncomeType":{"type":"string","enum":["FEE","INTEREST"],"example":"FEE"},"buyDownFeeStrategy":{"type":"string","enum":["EQUAL_AMORTIZATION"],"example":"EQUAL_AMORTIZATION"},"buydownfeeClassificationToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/PostClassificationToIncomeAccountMappings"}},"canDefineInstallmentAmount":{"type":"boolean","example":true},"canUseForTopup":{"type":"boolean","example":false},"capitalizedIncomeCalculationType":{"type":"string","enum":["FLAT"],"example":"FLAT"},"capitalizedIncomeClassificationToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/PostClassificationToIncomeAccountMappings"}},"capitalizedIncomeStrategy":{"type":"string","enum":["EQUAL_AMORTIZATION"],"example":"EQUAL_AMORTIZATION"},"capitalizedIncomeType":{"type":"string","enum":["FEE","INTEREST"],"example":"FEE"},"chargeOffBehaviour":{"type":"string","example":"REGULAR"},"chargeOffExpenseAccountId":{"type":"integer","format":"int64","example":12},"chargeOffFraudExpenseAccountId":{"type":"integer","format":"int64","example":13},"chargeOffReasonToExpenseAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/PostChargeOffReasonToExpenseAccountMappings"}},"charges":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductChargeData"}},"closeDate":{"type":"string","example":"10 July 2022"},"creditAllocation":{"type":"array","items":{"$ref":"#/components/schemas/CreditAllocationData"}},"currencyCode":{"type":"string","example":"USD"},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"daysInMonthType":{"type":"integer","format":"int32","example":1},"daysInYearCustomStrategy":{"type":"string","example":"FULL_LEAP_YEAR"},"daysInYearType":{"type":"integer","format":"int32","example":1},"deferredFeeIncomeAccountId":{"type":"integer","format":"int64","example":26},"deferredIncomeLiabilityAccountId":{"type":"integer","format":"int64","example":25},"delinquencyBucketId":{"type":"integer","format":"int64","example":1},"description":{"type":"string","example":"non-interest bearing product"},"digitsAfterDecimal":{"type":"integer","format":"int32","example":2},"disallowExpectedDisbursements":{"type":"boolean","example":true},"disallowInterestCalculationOnPastDue":{"type":"boolean","example":false},"disbursedAmountPercentageForDownPayment":{"type":"number","example":5.5},"dueDaysForRepaymentEvent":{"type":"integer","format":"int32","example":3},"enableAccrualActivityPosting":{"type":"boolean","example":false},"enableAutoRepaymentForDownPayment":{"type":"boolean","example":false},"enableBuyDownFee":{"type":"boolean","example":false},"enableDownPayment":{"type":"boolean","example":false},"enableIncomeCapitalization":{"type":"boolean","example":false},"enableInstallmentLevelDelinquency":{"type":"boolean","example":false},"externalId":{"type":"string","example":"2075e308-d4a8-44d9-8203-f5a947b8c2f4"},"feeToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductChargeToGLAccountMapper"}},"fixedLength":{"type":"integer","format":"int32","example":10},"fixedPrincipalPercentagePerInstallment":{"type":"number","example":5.5},"fundId":{"type":"integer","format":"int64","example":3},"fundSourceAccountId":{"type":"integer","format":"int64","example":4},"goodwillCreditAccountId":{"type":"integer","format":"int64","example":48},"graceOnArrearsAgeing":{"type":"integer","format":"int32","example":3},"graceOnInterestPayment":{"type":"integer","format":"int32","example":3},"graceOnPrincipalPayment":{"type":"integer","format":"int32","example":3},"holdGuaranteeFunds":{"type":"boolean","example":false},"inArrearsTolerance":{"type":"integer","format":"int32","example":90},"inMultiplesOf":{"type":"integer","format":"int32","example":1},"includeInBorrowerCycle":{"type":"boolean","example":false},"incomeFromBuyDownAccountId":{"type":"integer","format":"int64","example":38},"incomeFromCapitalizationAccountId":{"type":"integer","format":"int64","example":37},"incomeFromChargeOffFeesAccountId":{"type":"integer","format":"int64","example":11},"incomeFromChargeOffInterestAccountId":{"type":"integer","format":"int64","example":20},"incomeFromChargeOffPenaltyAccountId":{"type":"integer","format":"int64","example":11},"incomeFromFeeAccountId":{"type":"integer","format":"int64","example":37},"incomeFromGoodwillCreditFeesAccountId":{"type":"integer","format":"int64","example":11},"incomeFromGoodwillCreditInterestAccountId":{"type":"integer","format":"int64","example":20},"incomeFromGoodwillCreditPenaltyAccountId":{"type":"integer","format":"int64","example":11},"incomeFromPenaltyAccountId":{"type":"integer","format":"int64","example":35},"incomeFromRecoveryAccountId":{"type":"integer","format":"int64","example":15},"installmentAmountInMultiplesOf":{"type":"integer","format":"int32","example":1},"interestCalculationPeriodType":{"type":"integer","format":"int32","example":1},"interestOnLoanAccountId":{"type":"integer","format":"int64","example":34},"interestRateFrequencyType":{"type":"integer","format":"int32","example":2},"interestRatePerPeriod":{"type":"number","format":"double","example":1.75},"interestRateVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"interestRecalculationCompoundingMethod":{"type":"integer","format":"int32","example":1},"interestRecognitionOnDisbursementDate":{"type":"boolean","example":false},"interestType":{"type":"integer","format":"int32","example":0},"isArrearsBasedOnOriginalSchedule":{"type":"boolean","example":false},"isCompoundingToBePostedAsTransaction":{"type":"boolean","example":false},"isEqualAmortization":{"type":"boolean","example":false},"isInterestRecalculationEnabled":{"type":"boolean","example":false},"isLinkedToFloatingInterestRates":{"type":"boolean","example":false},"loanPortfolioAccountId":{"type":"integer","format":"int64","example":8},"loanScheduleProcessingType":{"type":"string","example":"HORIZONTAL"},"loanScheduleType":{"type":"string","example":"CUMULATIVE"},"locale":{"type":"string","example":"en_GB"},"maxInterestRatePerPeriod":{"type":"number","format":"double","example":23.4},"maxNumberOfRepayments":{"type":"integer","format":"int32","example":1},"maxPrincipal":{"type":"number","format":"double","example":15000},"maxTrancheCount":{"type":"integer","format":"int32","example":3},"merchantBuyDownFee":{"type":"boolean","example":false},"minInterestRatePerPeriod":{"type":"number","format":"double","example":0},"minNumberOfRepayments":{"type":"integer","format":"int32","example":1},"minPrincipal":{"type":"number","format":"double","example":5000},"minimumDaysBetweenDisbursalAndFirstRepayment":{"type":"integer","format":"int32","example":30},"multiDisburseLoan":{"type":"boolean","example":true},"name":{"type":"string","example":"LP Accrual Accounting"},"numberOfRepaymentVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"numberOfRepayments":{"type":"integer","format":"int32","example":12},"outstandingLoanBalance":{"type":"number","format":"double","example":36000},"overAppliedCalculationType":{"type":"string","example":"percentage"},"overAppliedNumber":{"type":"integer","format":"int32","example":50},"overDueDaysForRepaymentEvent":{"type":"integer","format":"int32","example":3},"overdueDaysForNPA":{"type":"integer","format":"int32","example":179},"overpaymentLiabilityAccountId":{"type":"integer","format":"int64","example":2},"paymentAllocation":{"type":"array","items":{"$ref":"#/components/schemas/AdvancedPaymentData"}},"paymentChannelToFundSourceMappings":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanPaymentChannelToFundSourceMappings"}},"penaltyToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductChargeToGLAccountMapper"}},"preClosureInterestCalculationStrategy":{"type":"integer","format":"int32","example":1},"principal":{"type":"number","format":"double","example":10000},"principalThresholdForLastInstallment":{"type":"integer","format":"int32","example":50},"principalVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"rates":{"type":"array","items":{"$ref":"#/components/schemas/RateData"}},"recalculationCompoundingFrequencyInterval":{"type":"integer","format":"int32","example":1},"recalculationCompoundingFrequencyOnDayType":{"type":"integer","format":"int32","example":1},"recalculationCompoundingFrequencyType":{"type":"integer","format":"int32","example":1},"recalculationRestFrequencyInterval":{"type":"integer","format":"int32","example":1},"recalculationRestFrequencyType":{"type":"integer","format":"int32","example":50},"receivableFeeAccountId":{"type":"integer","format":"int64","example":11},"receivableInterestAccountId":{"type":"integer","format":"int64","example":9},"receivablePenaltyAccountId":{"type":"integer","format":"int64","example":10},"repaymentEvery":{"type":"integer","format":"int32","example":1},"repaymentFrequencyType":{"type":"integer","format":"int64","example":2},"repaymentStartDateType":{"type":"integer","format":"int32","example":1},"rescheduleStrategyMethod":{"type":"integer","format":"int32","example":2},"shortName":{"type":"string","example":"LPAA"},"startDate":{"type":"string","example":"10 July 2022"},"supportedInterestRefundTypes":{"type":"array","items":{"type":"string"}},"transactionProcessingStrategyCode":{"type":"string","example":"principal-interest-penalties-fees-order-strategy"},"transfersInSuspenseAccountId":{"type":"integer","format":"int64","example":5},"useBorrowerCycle":{"type":"boolean","example":false},"writeOffAccountId":{"type":"integer","format":"int64","example":41},"writeOffReasonsToExpenseMappings":{"type":"array","items":{"$ref":"#/components/schemas/PostWriteOffReasonToExpenseAccountMappings"}}}},"PostLoanProductsResponse":{"type":"object","description":"PostLoanProductsResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":3}}},"PostLoanProductsV2Request":{"type":"object","allOf":[{"$ref":"#/components/schemas/PostLoanProductsRequest"},{"type":"object","properties":{"beneficiaryType":{"type":"string","description":"System-defined disbursement payee category. Optional; product-type applicability is a client-side concern until the parameter-metadata framework serves it.","enum":["BORROWER","MERCHANT","DEALER","BUILDER","PRIOR_LENDER"],"example":"BORROWER"},"bpiMethod":{"type":"string","description":"how the stub between disbursement and the first instalment is billed. Priced by the CONTRACTUAL schedule type; refused for the others.","enum":["EMI_PLUS_BPI","PRE_EMI_INTEREST","BPI_WITHIN_EMI","CAPITALIZE_BPI"],"example":"EMI_PLUS_BPI"},"brokenPeriodDayCount":{"type":"string","description":"day-count convention for broken (stub) periods — same choices as dayCountConvention (parity). Null = regular-period behaviour. Declarative product configuration: stored as sent; the broken-period interest engine consumes it in a later phase.","enum":["ACT_365","ACT_360","D30_360_US","D30E_360","ACT_ACT"],"example":"ACT_365"},"charges":{"type":"array","description":"Charge entries — existing charge ids plus optional per-association flags.","items":{"$ref":"#/components/schemas/LoanProductV2ChargeEntry"}},"coLendingEligible":{"type":"boolean","description":"Whether the product may participate in a co-lending arrangement. Optional; defaults to false.","example":false},"collectBpiAtDisbursement":{"type":"boolean","description":"whether broken-period interest is collected at disbursement. Refused for a schedule type that prices no broken period. Not yet consumed: no transaction or journal entry nets it from the proceeds (mock-up term preEmi). Defaults to false; explicit null is rejected. Declarative: stored as sent; the BPI engine consumes it in a later phase.","example":false},"computeAprForKfs":{"type":"boolean","description":"whether APR should be computed for KFS disclosures. Optional; defaults to false. Declarative: stored as sent; the APR/KFS engine consumes it in a later phase.","example":false},"createAsDraft":{"type":"boolean","description":"Create the product as a DRAFT: it cannot originate loans whatever its start and close dates say, and appears in no product selection list, until POST /v2/loanproducts/{productId}/activate releases it. Optional; defaults to false, in which case the product has no activation lifecycle at all and behaves exactly as it does today. TRANSITIONAL — this exists so the activation flow can be exercised before clients integrate the activate call; drafting becomes the V2 default once they do.","example":false},"dayCountConvention":{"type":"string","description":"stable day-count convention name — the V2-only ALTERNATIVE way to fulfil the mandatory daysInMonthType/daysInYearType axes (the backend derives and persists both). Supplying the raw axes alone remains valid (convention stays null); supplying both requires consistency with the derivation (ACT_365→1/365, ACT_360→1/360, ACT_ACT→1/1, D30_360_US and D30E_360→30/360 — stored distinctly; the engine-level US-vs-30E distinction is deferred).","enum":["ACT_365","ACT_360","D30_360_US","D30E_360","ACT_ACT"],"example":"ACT_365"},"defaultRoundingMode":{"type":"string","description":"product-level java.math.RoundingMode NAME (never an ordinal or any internal identifier). Null inherits tenant rounding. Declarative: persisted via the shared rounding profile; engine wiring consumes it in a later phase.","enum":["UP","DOWN","CEILING","FLOOR","HALF_UP","HALF_DOWN","HALF_EVEN"],"example":"HALF_UP"},"interestRateStep":{"type":"number","description":"fixed nominal rate increment in percentage points per annum. Fixed-rate products only — must be null/omitted for floating products. Null = continuous.","example":0.25},"maximumDaysBetweenDisbursalAndFirstRepayment":{"type":"integer","format":"int32","description":"maximum calendar days between disbursement and the first repayment — the ceiling sibling of minimumDaysBetweenDisbursalAndFirstRepayment (must be >= the floor). ACTIVELY enforced at loan origination for both schedule types. Null/omitted = no ceiling.","example":45},"pmtType":{"type":"string","description":"payment-formula variant. Optional; defaults to STANDARD_PMT (current engine behaviour). PRECISE_PMT is stored as declarative configuration; the precise-PMT engine consumes it in a later phase. Explicit null is rejected — send STANDARD_PMT to reset.","enum":["STANDARD_PMT","PRECISE_PMT"],"example":"STANDARD_PMT"},"principalStep":{"type":"number","description":"principal increment anchored at minimumPrincipal. Null/omitted = continuous band. Requires the complete principal band when supplied; the default principal must sit on the grid.","example":5000},"productCategoryTags":{"type":"array","description":"Stable category-tag codes from code group LoanProductCategory. Optional; duplicates rejected.","example":["UNSECURED","RETAIL"],"items":{"type":"string","description":"Stable category-tag codes from code group LoanProductCategory. Optional; duplicates rejected.","example":"[\"UNSECURED\",\"RETAIL\"]"}},"productType":{"type":"string","description":"Stable product-type code from code group LoanProductType (see productTypeOptions in the template). Optional.","example":"PL"},"repayOnDay":{"type":"array","description":"pinned monthly repayment day(s), 1-31, unique — monthly-frequency products only. The ONLY external recurrence representation (the internal rule string is never exposed). Exactly ONE day is active: derived first repayment dates snap forward to it and supplied dates must fall on it (days 29-31 follow the existing short-month clamping). More than one day is rejected until the semi-monthly engine is delivered. Null clears; returned sorted ascending.","example":[5],"items":{"type":"integer","format":"int32","description":"pinned monthly repayment day(s), 1-31, unique — monthly-frequency products only. The ONLY external recurrence representation (the internal rule string is never exposed). Exactly ONE day is active: derived first repayment dates snap forward to it and supplied dates must fall on it (days 29-31 follow the existing short-month clamping). More than one day is rejected until the semi-monthly engine is delivered. Null clears; returned sorted ascending."}},"residualEnabled":{"type":"boolean","description":"residual (balloon) schedule eligibility flag. Declarative: stored as sent; the residual schedule engine consumes it in a later phase.","example":false},"scheduleSolver":{"type":"string","description":"declarative input-mode selection for a configurator/LOS (D-27). Optional and NULLABLE — omitted or null means \"not configured\"; there is no server default. All five values are storable and none changes backend behaviour. The backend never derives Loan terms from scheduleSolver: Loan Product and Loan APIs always receive fully determined Principal, tenor and interest-rate values regardless of the configured solver.","enum":["SOLVE_EMI","TARGET_EMI","MERCHANT_DISCOUNT","FLAT_RATE","TOTAL_INTEREST_PCT"],"example":"SOLVE_EMI"},"tenorStep":{"type":"integer","format":"int32","description":"increment in NUMBER OF INSTALLMENTS over the repayment-count band (never a calendar duration). Null/omitted = continuous.","example":3}}}],"description":"V2 create request. The full V1 create contract plus the V2-only identity & classification parameters (all optional, stable string codes — never database ids) and a shortName of up to 8 characters. One further divergence: loanScheduleType (CUMULATIVE, PROGRESSIVE or CONTRACTUAL) is mandatory and must be supplied explicitly — V1 silently defaults it to CUMULATIVE.","required":["loanScheduleType"]},"PostLoanProductsV2Response":{"type":"object","allOf":[{"$ref":"#/components/schemas/PostLoanProductsResponse"}],"description":"V2 create response — identical to V1."},"PostLoansDataTable":{"type":"object","example":"List of PostLoansDataTable","properties":{"data":{"type":"object","additionalProperties":{"type":"object","example":"Datatable data"},"example":"Datatable data"},"registeredTableName":{"type":"string","example":"m_loan"}}},"PostLoansDisbursementData":{"type":"object","description":"List of PostLoansDisbursementData","properties":{"expectedDisbursementDate":{"type":"string","example":"1 November 2023"},"principal":{"type":"number","example":1000}}},"PostLoansLoanIdChanges":{"type":"object","description":"PostLoansLoanIdChanges","properties":{"approvedOnDate":{"type":"string","example":"28 June 2022"},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"locale":{"type":"string","example":"en"},"note":{"type":"string","example":"Loan approval note"},"status":{"$ref":"#/components/schemas/PostLoansLoanIdStatus"}}},"PostLoansLoanIdDisbursementData":{"type":"object","description":"List of PostLoansLoanIdDisbursementData","properties":{"expectedDisbursementDate":{"type":"string","format":"date"},"principal":{"type":"number","example":22000}}},"PostLoansLoanIdRequest":{"type":"object","description":"PostLoansLoanIdRequest","properties":{"actualDisbursementDate":{"type":"string","example":"28 June 2022"},"adjustRepaymentDate":{"type":"string","example":"28 July 2022"},"approvedLoanAmount":{"type":"number","example":1000},"approvedOnDate":{"type":"string","example":"28 June 2022"},"assignmentDate":{"type":"string","example":"02 September 2014"},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"disbursementData":{"type":"array","description":"List of PostLoansLoanIdDisbursementData","items":{"$ref":"#/components/schemas/PostLoansLoanIdDisbursementData"}},"expectedDisbursementDate":{"type":"string","example":"28 June 2022"},"externalId":{"type":"string","example":"3e7791ce-aa10-11ec-b909-0242ac120002"},"fixedEmiAmount":{"type":"number","example":500},"fromLoanOfficerId":{"type":"integer","format":"int64"},"locale":{"type":"string","example":"en"},"note":{"type":"string","example":"Description of disbursement details."},"paymentTypeId":{"type":"integer","format":"int32","example":3},"rejectedOnDate":{"type":"string","example":"28 June 2022"},"toLoanOfficerId":{"type":"integer","format":"int64","example":2},"transactionAmount":{"type":"number","example":5000.33},"unassignedDate":{"type":"string","example":"02 September 2014"},"withdrawnOnDate":{"type":"string","example":"28 June 2022"}}},"PostLoansLoanIdResponse":{"type":"object","description":"PostLoansLoanIdResponse","properties":{"changes":{"$ref":"#/components/schemas/PostLoansLoanIdChanges"},"clientId":{"type":"integer","format":"int64","example":6},"loanId":{"type":"integer","format":"int64","example":3},"officeId":{"type":"integer","format":"int64","example":2},"resourceExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"resourceId":{"type":"integer","format":"int64","example":3},"subResourceExternalId":{"type":"string","example":"b4f8fefd-a14d-4487-8d80-6f2fb0e07836"},"subResourceId":{"type":"integer","format":"int64","example":22}}},"PostLoansLoanIdStatus":{"type":"object","description":"PostLoansLoanIdStatus","properties":{"active":{"type":"boolean","example":true},"closed":{"type":"boolean","example":false},"closedObligationsMet":{"type":"boolean","example":false},"closedRescheduled":{"type":"boolean","example":false},"closedWrittenOff":{"type":"boolean","example":false},"code":{"type":"string","example":"loanStatusType.approved"},"id":{"type":"integer","format":"int64","example":300},"overpaid":{"type":"boolean","example":false},"pendingApproval":{"type":"boolean","example":false},"value":{"type":"string","example":"Approved"},"waitingForDisbursal":{"type":"boolean","example":false}}},"PostLoansLoanIdTransactionsRequest":{"type":"object","description":"PostLoansLoanIdTransactionsRequest","properties":{"accountNumber":{"type":"string","example":"acc123"},"bankNumber":{"type":"string","example":"ban123"},"chargeOffReasonId":{"type":"integer","format":"int64","example":1},"checkNumber":{"type":"string","example":"che123"},"classificationId":{"type":"integer","format":"int64","example":1},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"dueDate":{"type":"string","example":"28 June 2022"},"externalId":{"type":"string","example":"3e7791ce-aa10-11ec-b909-0242ac120002"},"frequencyNumber":{"type":"integer","format":"int32"},"frequencyType":{"type":"string","example":"frequencyType"},"interestRefundCalculation":{"type":"boolean","description":"Optional. Controls whether Interest Refund transaction should be created for this refund. If not provided, loan product config is used.","example":false},"loanChargeId":{"type":"integer","format":"int64","example":3},"locale":{"type":"string","example":"en_GB"},"note":{"type":"string","example":"An optional note about why your adjusting or changing the transaction."},"numberOfInstallments":{"type":"integer","format":"int32"},"paymentTypeId":{"type":"integer","format":"int64","example":3},"reAgeInterestHandling":{"type":"string","example":"DEFAULT"},"reAmortizationInterestHandling":{"type":"string","example":"DEFAULT"},"reasonCodeValueId":{"type":"integer","format":"int64","example":1},"receiptNumber":{"type":"string","example":"rec123"},"reversalExternalId":{"type":"string","example":"3f7791cf-bb10-11ec-b909-0242ac120012"},"routingCode":{"type":"string","example":"rou123"},"startDate":{"type":"string","example":"startDate"},"transactionAmount":{"type":"number","format":"double","example":50000},"transactionDate":{"type":"string","example":"28 June 2022"},"writeoffReasonId":{"type":"integer","format":"int64","example":1}}},"PostLoansLoanIdTransactionsResponse":{"type":"object","description":"PostLoansLoanIdTransactionsResponse","properties":{"changes":{"$ref":"#/components/schemas/PostLoansLoanIdTransactionsResponseChanges"},"clientId":{"type":"integer","format":"int64","example":1},"loanId":{"type":"integer","format":"int64","example":1},"officeId":{"type":"integer","format":"int64","example":1},"resourceExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"resourceId":{"type":"integer","format":"int64","example":22},"subResourceExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"subResourceId":{"type":"integer","format":"int64","example":22}}},"PostLoansLoanIdTransactionsResponseChanges":{"type":"object","properties":{"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"externalId":{"type":"string","example":"4ff9b1cb988b7"},"locale":{"type":"string","example":"en_GB"},"note":{"type":"string","example":"An optional note about why your adjusting or changing the transaction."},"paymentTypeId":{"type":"integer","format":"int64","example":1},"reversalExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"transactionAmount":{"type":"string","example":"50,000.00"},"transactionDate":{"type":"string","example":"28 June 2022"}}},"PostLoansLoanIdTransactionsTransactionIdRequest":{"type":"object","description":"PostLoansLoanIdTransactionsTransactionIdRequest","properties":{"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"externalId":{"type":"string","example":"4ff9b1cb988b7"},"locale":{"type":"string","example":"en_GB"},"note":{"type":"string","example":"An optional note about why your adjusting or changing the transaction."},"paymentTypeId":{"type":"integer","format":"int64","example":1},"reversalExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"transactionAmount":{"type":"number","format":"double"},"transactionDate":{"type":"string","example":"28 June 2022"}}},"PostLoansOriginatorData":{"type":"object","description":"Originator data for loan creation request","properties":{"channelTypeId":{"type":"integer","format":"int64","description":"Code value ID for channel type (from LoanOriginationChannelType code)","example":2},"externalId":{"type":"string","description":"Originator external ID (use this OR id, not both)","example":"REV-SHARE-001"},"id":{"type":"integer","format":"int64","description":"Originator internal ID (use this OR externalId, not both)","example":1},"name":{"type":"string","description":"Originator name (used when creating new originator if config enabled)","example":"PP Merchant"},"typeId":{"type":"integer","format":"int64","description":"Code value ID for originator type (from LoanOriginatorType code)","example":1}}},"PostLoansRepaymentSchedulePeriods":{"type":"object","properties":{"dueDate":{"type":"string","format":"date"},"feeChargesDue":{"type":"integer","format":"int64","example":0},"feeChargesOutstanding":{"type":"integer","format":"int64","example":0},"period":{"type":"integer","format":"int32","example":0},"principalDisbursed":{"type":"integer","format":"int64","example":100000},"principalLoanBalanceOutstanding":{"type":"integer","format":"int64","example":100000},"totalActualCostOfLoanForPeriod":{"type":"integer","format":"int64","example":0},"totalDueForPeriod":{"type":"integer","format":"int64","example":0},"totalOriginalDueForPeriod":{"type":"integer","format":"int64","example":0},"totalOutstandingForPeriod":{"type":"integer","format":"int64","example":0},"totalOverdue":{"type":"integer","format":"int64","example":0}}},"PostLoansRequest":{"type":"object","description":"PostLoansRequest","properties":{"allowFullTermForTranche":{"type":"boolean","description":"Allow full term length for each tranche disbursement","example":false},"amortizationType":{"type":"integer","format":"int32","example":1},"buyDownFeeCalculationType":{"type":"string","enum":["FLAT"],"example":"FLAT"},"buyDownFeeIncomeType":{"type":"string","enum":["FEE","INTEREST"],"example":"FEE"},"buyDownFeeStrategy":{"type":"string","enum":["EQUAL_AMORTIZATION"],"example":"EQUAL_AMORTIZATION"},"capitalizedIncomeCalculationType":{"type":"string","enum":["FLAT"],"example":"FLAT"},"capitalizedIncomeStrategy":{"type":"string","enum":["EQUAL_AMORTIZATION"],"example":"EQUAL_AMORTIZATION"},"capitalizedIncomeType":{"$ref":"#/components/schemas/StringEnumOptionData"},"charges":{"type":"array","items":{"$ref":"#/components/schemas/PostLoansRequestChargeData"}},"clientId":{"type":"integer","format":"int64","example":1},"datatables":{"type":"array","example":"List of PostLoansDataTable","items":{"$ref":"#/components/schemas/PostLoansDataTable"}},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"daysInYearCustomStrategy":{"type":"string","enum":["FULL_LEAP_YEAR, FEB_29_PERIOD_ONLY"],"example":"FULL_LEAP_YEAR"},"daysInYearType":{"type":"integer","format":"int32"},"disbursedAmountPercentageForDownPayment":{"type":"number","example":0},"disbursementData":{"type":"array","description":"List of PostLoansDisbursementData","items":{"$ref":"#/components/schemas/PostLoansDisbursementData"}},"enableAutoRepaymentForDownPayment":{"type":"boolean","example":false},"enableBuyDownFee":{"type":"boolean","example":false},"enableDownPayment":{"type":"boolean","example":false},"enableIncomeCapitalization":{"type":"boolean","example":false},"enableInstallmentLevelDelinquency":{"type":"boolean","example":false},"expectedDisbursementDate":{"type":"string","example":"20 September 2011"},"externalId":{"type":"string","example":"786444UUUYYH7"},"fixedEmiAmount":{"type":"number","example":10},"fixedLength":{"type":"integer","format":"int32","example":1},"fixedPrincipalPercentagePerInstallment":{"type":"number","example":5.5},"graceOnArrearsAgeing":{"type":"integer","format":"int32","example":1},"graceOnInterestCharged":{"type":"integer","format":"int32","example":1},"graceOnInterestPayment":{"type":"integer","format":"int32","example":1},"graceOnPrincipalPayment":{"type":"integer","format":"int32","example":1},"inArrearsTolerance":{"type":"number","example":10},"interestCalculationPeriodType":{"type":"integer","format":"int32","example":1},"interestRateFrequencyType":{"type":"integer","format":"int32","example":3},"interestRatePerPeriod":{"type":"number","example":2},"interestRecognitionOnDisbursementDate":{"type":"boolean","example":false},"interestType":{"type":"integer","format":"int32","example":0},"linkAccountId":{"type":"integer","format":"int64","example":1},"loanScheduleProcessingType":{"type":"string","example":"HORIZONTAL"},"loanTermFrequency":{"type":"integer","format":"int32","example":12},"loanTermFrequencyType":{"type":"integer","format":"int32","example":2},"loanType":{"type":"string","example":"individual"},"locale":{"type":"string","example":"en_GB"},"maxOutstandingLoanBalance":{"type":"number","description":"Maximum allowed outstanding balance"},"numberOfRepayments":{"type":"integer","format":"int32","example":12},"originators":{"type":"array","description":"Optional array of originators to associate with this loan. Each entry can reference an existing originator by 'id' or 'externalId'. If the global config 'enable_originator_creation_during_loan_application' is enabled, non-existing originators will be auto-created using the provided details (name, typeId, channelTypeId).","items":{"$ref":"#/components/schemas/PostLoansOriginatorData"}},"principal":{"type":"number","example":1000},"productId":{"type":"integer","format":"int64","example":1},"repaymentEvery":{"type":"integer","format":"int32","example":1},"repaymentFrequencyType":{"type":"integer","format":"int32","example":2},"repaymentStartDateType":{"type":"integer","format":"int32","example":1},"repaymentsStartingFromDate":{"type":"string","format":"date"},"submittedOnDate":{"type":"string","example":"20 September 2011"},"transactionProcessingStrategyCode":{"type":"string","example":"principal-interest-penalties-fees-order-strategy"}}},"PostLoansRequestChargeData":{"type":"object","properties":{"amount":{"type":"number","example":1},"chargeId":{"type":"integer","format":"int64","example":1}}},"PostLoansResponse":{"type":"object","description":"PostLoansResponse","properties":{"clientId":{"type":"integer","format":"int64","example":1},"currency":{"$ref":"#/components/schemas/GetLoansLoanIdCurrency"},"loanId":{"type":"integer","format":"int64","example":1},"loanTermInDays":{"type":"integer","format":"int32","example":366},"officeId":{"type":"integer","format":"int64","example":2},"periods":{"type":"array","items":{"$ref":"#/components/schemas/PostLoansRepaymentSchedulePeriods"},"uniqueItems":true},"resourceExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"resourceId":{"type":"integer","format":"int64","example":1},"totalFeeChargesCharged":{"type":"integer","format":"int64","example":0},"totalInterestCharged":{"type":"number","example":13471.52},"totalOutstanding":{"type":"integer","format":"int64","example":0},"totalPenaltyChargesCharged":{"type":"integer","format":"int64","example":0},"totalPrincipalDisbursed":{"type":"integer","format":"int64","example":100000},"totalPrincipalExpected":{"type":"integer","format":"int64","example":100000},"totalPrincipalPaid":{"type":"integer","format":"int64","example":0},"totalRepayment":{"type":"integer","format":"int64","example":0},"totalRepaymentExpected":{"type":"number","example":113471.52},"totalWaived":{"type":"integer","format":"int64","example":0},"totalWrittenOff":{"type":"integer","format":"int64","example":0}}},"PostReportsResponse":{"type":"object","description":"PostReportsResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":132}}},"PostRepostRequest":{"type":"object","description":"PostRepostRequest","properties":{"description":{"type":"string","example":"Just An Example"},"reportCategory":{"type":"string","example":"Loan"},"reportName":{"type":"string","example":"Completely New Report"},"reportParameters":{"type":"array","items":{"$ref":"#/components/schemas/ReportParameterData"}},"reportSql":{"type":"string","example":"select 'very good sql' as AComment"},"reportSubType":{"type":"string"},"reportType":{"type":"string","example":"Table"}}},"PostRolesRequest":{"type":"object","description":"PostRolesRequest","properties":{"description":{"type":"string","example":"A description outlining the purpose of this role in relation to the application."},"name":{"type":"string","example":"Another Role Name"}}},"PostRolesResponse":{"type":"object","description":"PostRolesResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":1}}},"PostTaxesComponentsRequest":{"type":"object","description":"PostTaxesComponentsRequest","properties":{"creditAccountId":{"type":"integer","format":"int64","example":4},"creditAccountType":{"type":"integer","format":"int32","example":4},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"debitAccountId":{"type":"integer","format":"int64","example":4},"debitAccountType":{"type":"integer","format":"int32","example":2},"locale":{"type":"string","example":"en"},"name":{"type":"string","example":"tax component 1"},"percentage":{"type":"number","format":"float","example":10},"startDate":{"type":"string","example":"11 April 2016"}}},"PostTaxesComponentsResponse":{"type":"object","description":"PostTaxesComponentsResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":1}}},"PostTaxesGroupRequest":{"type":"object","description":"PostTaxesGroupRequest","properties":{"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"locale":{"type":"string","example":"en"},"name":{"type":"string","example":"tax group 1"},"taxComponents":{"type":"array","items":{"$ref":"#/components/schemas/PostTaxesGroupTaxComponents"},"uniqueItems":true}}},"PostTaxesGroupResponse":{"type":"object","description":"PostTaxesGroupResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":1}}},"PostTaxesGroupTaxComponents":{"type":"object","properties":{"startDate":{"type":"string","example":"11 April 2016"},"taxComponentId":{"type":"integer","format":"int64","example":7}}},"PostUsersRequest":{"type":"object","description":"PostUsersRequest","properties":{"clients":{"type":"array","example":[2,3],"items":{"type":"integer","format":"int64"}},"email":{"type":"string","example":"user@example.com"},"firstname":{"type":"string","example":"Test"},"isLoginRetriesEnabled":{"type":"boolean","example":true},"isPasswordResetAllowed":{"type":"boolean"},"lastname":{"type":"string","example":"User"},"officeId":{"type":"integer","format":"int64","example":1},"password":{"type":"string","example":"password"},"passwordNeverExpires":{"type":"boolean","example":true},"repeatPassword":{"type":"string","example":"repeatPassword"},"roles":{"type":"array","example":[2,3],"items":{"type":"integer","format":"int64"}},"sendPasswordToEmail":{"type":"boolean","example":true},"staffId":{"type":"integer","format":"int64","example":1},"username":{"type":"string","example":"newuser"}}},"PostUsersResponse":{"type":"object","description":"PostUsersResponse","properties":{"officeId":{"type":"integer","format":"int64","example":1},"resourceId":{"type":"integer","format":"int64","example":11}}},"PostWriteOffReasonToExpenseAccountMappings":{"type":"object","description":"PostWriteOffReasonToExpenseAccountMappings","properties":{"expenseAccountId":{"type":"string","example":"1"},"writeOffReasonCodeValueId":{"type":"string","example":"1"}}},"Providers":{"type":"object"},"PutChargeTransactionChangesRequest":{"type":"object","description":"PutChargeTransactionChangesRequest","properties":{"id":{"type":"integer","format":"int64","example":1},"loanId":{"type":"integer","format":"int64","example":2}}},"PutChargeTransactionChangesResponse":{"type":"object","description":"PutChargeTransactionChangesResponse","properties":{"changes":{"$ref":"#/components/schemas/PutChargeTransactionChangesResponseChanges"},"clientId":{"type":"integer","format":"int64","example":1},"loanId":{"type":"integer","format":"int64","example":1},"officeId":{"type":"integer","format":"int64","example":1},"resourceExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"resourceId":{"type":"integer","format":"int64","example":22},"subResourceExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"subResourceId":{"type":"integer","format":"int64","example":22}}},"PutChargeTransactionChangesResponseChanges":{"type":"object","properties":{"amount":{"type":"number","format":"double","example":10},"date":{"type":"string","format":"date"},"externalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"feeChargesPortion":{"type":"number","format":"double","example":10},"id":{"type":"integer","format":"int64","example":1},"interestPortion":{"type":"number","format":"double","example":10},"outstandingLoanBalance":{"type":"number","format":"double","example":10},"penaltyChargesPortion":{"type":"number","format":"double","example":10},"principalPortion":{"type":"number","format":"double","example":10}}},"PutChargesChargeIdRequest":{"type":"object","description":"PutChargesChargeIdRequest","properties":{"active":{"type":"boolean","example":true},"amount":{"type":"number","format":"double","example":230.56},"chargeAppliesTo":{"type":"integer","format":"int32","example":1},"chargeCalculationType":{"type":"integer","format":"int32","example":1},"chargePaymentMode":{"type":"integer","format":"int32","example":1},"chargeTimeType":{"type":"integer","format":"int32","example":1},"countFrequencyType":{"type":"integer","format":"int32","example":1},"currencyCode":{"type":"string","example":"USD"},"enableFreeWithdrawalCharge":{"type":"boolean","example":true},"enablePaymentType":{"type":"boolean","example":true},"feeFrequency":{"type":"string","example":"1"},"feeInterval":{"type":"integer","format":"int32","example":1},"feeOnMonthDay":{"type":"string","example":"01 March"},"freeWithdrawalFrequency":{"type":"integer","format":"int32","example":1},"locale":{"type":"string","example":"en"},"maxCap":{"type":"number","example":120},"minCap":{"type":"number","example":10},"monthDayFormat":{"type":"string","example":"dd MMMM"},"name":{"type":"string","example":"Loan service fee(changed)"},"paymentTypeId":{"type":"integer","format":"int64","example":1},"penalty":{"type":"boolean","example":false},"restartCountFrequency":{"type":"integer","format":"int32","example":10},"taxGroupId":{"type":"integer","format":"int64","example":1}}},"PutChargesChargeIdResponse":{"type":"object","description":"PutChargesChargeIdResponse","properties":{"changes":{"$ref":"#/components/schemas/PutChargesChargeIdRequest"},"resourceId":{"type":"integer","format":"int64","example":1}}},"PutClientClientIdAddressesResponse":{"type":"object","description":"PutClientClientIdAddressesResponse","properties":{"resourceId":{"type":"integer","format":"int64","example":67}}},"PutClientsClientIdIdentifiersIdentifierIdResponse":{"type":"object","description":"PutClientsClientIdIdentifiersIdentifierIdResponse","properties":{"changes":{"$ref":"#/components/schemas/ClientIdentifierRequest"},"clientId":{"type":"integer","format":"int64","example":1},"officeId":{"type":"integer","format":"int64","example":1},"resourceId":{"type":"integer","format":"int64","example":3}}},"PutClientsClientIdRequest":{"type":"object","description":"PutClientsClientIdRequest","properties":{"externalId":{"type":"string","example":"786444UUUYYH7"},"firstname":{"type":"string","example":"Client_FirstName"},"lastname":{"type":"string","example":"Client_LastName"},"resourceExternalId":{"type":"string","example":"123-456"}}},"PutClientsClientIdResponse":{"type":"object","description":"PutClientsClientIdResponse","properties":{"changes":{"$ref":"#/components/schemas/PutClientsClientIdRequest"},"clientId":{"type":"integer","format":"int64","example":1},"officeId":{"type":"integer","format":"int64","example":1},"resourceExternalId":{"type":"string","example":"123-456"},"resourceId":{"type":"integer","format":"int64","example":1}}},"PutCodesApichangesSwagger":{"type":"object","properties":{"name":{"type":"string","example":"MyNewCode(changed)"}}},"PutCodesRequest":{"type":"object","description":"PutCodesRequest","properties":{"name":{"type":"string","example":"MyNewCode(changed)"}}},"PutCodesResponse":{"type":"object","description":"PutCodesResponse","properties":{"changes":{"$ref":"#/components/schemas/PutCodesApichangesSwagger"},"resourceId":{"type":"integer","format":"int64","example":4}}},"PutLoanChanges":{"type":"object","properties":{"locale":{"type":"string","example":"en_GB"},"principal":{"type":"number","format":"double"}}},"PutLoanProductsProductIdRequest":{"type":"object","description":"PutLoanProductsProductIdRequest","properties":{"accountMovesOutOfNPAOnlyOnArrearsCompletion":{"type":"boolean","example":false},"accountingRule":{"type":"integer","format":"int32","example":3},"allowApprovedDisbursedAmountsOverApplied":{"type":"boolean","example":true},"allowAttributeOverrides":{"$ref":"#/components/schemas/AllowAttributeOverrides"},"allowCompoundingOnEod":{"type":"boolean","example":false},"allowFullTermForTranche":{"type":"boolean","description":"Allow full term length for each tranche disbursement. Only available for PROGRESSIVE schedule type with multi-disbursement enabled.","example":false},"allowPartialPeriodInterestCalculation":{"type":"boolean","example":true},"allowVariableInstallments":{"type":"boolean","example":false},"amortizationType":{"type":"integer","format":"int32","example":1},"buyDownExpenseAccountId":{"type":"integer","format":"int64","example":27},"buyDownFeeCalculationType":{"type":"string","enum":["FLAT"],"example":"FLAT"},"buyDownFeeIncomeType":{"type":"string","enum":["FEE","INTEREST"],"example":"FEE"},"buyDownFeeStrategy":{"type":"string","enum":["EQUAL_AMORTIZATION"],"example":"EQUAL_AMORTIZATION"},"buydownfeeClassificationToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/PostClassificationToIncomeAccountMappings"}},"canDefineInstallmentAmount":{"type":"boolean","example":true},"canUseForTopup":{"type":"boolean","example":false},"capitalizedIncomeCalculationType":{"type":"string","enum":["FLAT"],"example":"FLAT"},"capitalizedIncomeClassificationToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/PostClassificationToIncomeAccountMappings"}},"capitalizedIncomeStrategy":{"type":"string","enum":["EQUAL_AMORTIZATION"],"example":"EQUAL_AMORTIZATION"},"capitalizedIncomeType":{"type":"string","enum":["FEE","INTEREST"],"example":"FEE"},"chargeOffBehaviour":{"type":"string","example":"REGULAR"},"chargeOffExpenseAccountId":{"type":"integer","format":"int64","example":12},"chargeOffFraudExpenseAccountId":{"type":"integer","format":"int64","example":13},"chargeOffReasonToExpenseAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/PostChargeOffReasonToExpenseAccountMappings"}},"charges":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductChargeData"}},"closeDate":{"type":"string","example":"10 July 2022"},"creditAllocation":{"type":"array","example":[],"items":{"$ref":"#/components/schemas/CreditAllocationData"}},"currencyCode":{"type":"string","example":"USD"},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"daysInMonthType":{"type":"integer","format":"int64","example":1},"daysInYearCustomStrategy":{"type":"string","example":"FULL_LEAP_YEAR"},"daysInYearType":{"type":"integer","format":"int64","example":1},"deferredFeeIncomeAccountId":{"type":"integer","format":"int64","example":26},"deferredIncomeLiabilityAccountId":{"type":"integer","format":"int64","example":25},"delinquencyBucketId":{"type":"integer","format":"int64","example":1},"description":{"type":"string","example":"non-interest bearing product"},"digitsAfterDecimal":{"type":"integer","format":"int32","example":2},"disallowExpectedDisbursements":{"type":"boolean","example":true},"disallowInterestCalculationOnPastDue":{"type":"boolean","example":false},"disbursedAmountPercentageForDownPayment":{"type":"number","example":5.5},"dueDaysForRepaymentEvent":{"type":"integer","format":"int32","example":3},"enableAccrualActivityPosting":{"type":"boolean","example":false},"enableAutoRepaymentForDownPayment":{"type":"boolean","example":false},"enableBuyDownFee":{"type":"boolean","example":false},"enableDownPayment":{"type":"boolean","example":false},"enableIncomeCapitalization":{"type":"boolean","example":false},"enableInstallmentLevelDelinquency":{"type":"boolean","example":false},"feeToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductChargeToGLAccountMapper"}},"fixedLength":{"type":"integer","format":"int32"},"fixedPrincipalPercentagePerInstallment":{"type":"number","example":5.5},"fundId":{"type":"integer","format":"int64","example":3},"fundSourceAccountId":{"type":"integer","format":"int64","example":4},"goodwillCreditAccountId":{"type":"integer","format":"int64","example":48},"graceOnArrearsAgeing":{"type":"integer","format":"int32","example":3},"graceOnInterestPayment":{"type":"integer","format":"int32","example":3},"graceOnPrincipalPayment":{"type":"integer","format":"int32","example":3},"holdGuaranteeFunds":{"type":"boolean","example":false},"inArrearsTolerance":{"type":"integer","format":"int32","example":90},"inMultiplesOf":{"type":"integer","format":"int32","example":1},"includeInBorrowerCycle":{"type":"boolean","example":false},"incomeFromBuyDownAccountId":{"type":"integer","format":"int64","example":38},"incomeFromCapitalizationAccountId":{"type":"integer","format":"int64","example":37},"incomeFromChargeOffFeesAccountId":{"type":"integer","format":"int64","example":11},"incomeFromChargeOffInterestAccountId":{"type":"integer","format":"int64","example":20},"incomeFromChargeOffPenaltyAccountId":{"type":"integer","format":"int64","example":11},"incomeFromFeeAccountId":{"type":"integer","format":"int64","example":37},"incomeFromGoodwillCreditFeesAccountId":{"type":"integer","format":"int64","example":11},"incomeFromGoodwillCreditInterestAccountId":{"type":"integer","format":"int64","example":20},"incomeFromGoodwillCreditPenaltyAccountId":{"type":"integer","format":"int64","example":11},"incomeFromPenaltyAccountId":{"type":"integer","format":"int64","example":35},"incomeFromRecoveryAccountId":{"type":"integer","format":"int64","example":15},"installmentAmountInMultiplesOf":{"type":"integer","format":"int32","example":1},"interestCalculationPeriodType":{"type":"integer","format":"int32","example":1},"interestOnLoanAccountId":{"type":"integer","format":"int64","example":34},"interestRateFrequencyType":{"type":"integer","format":"int32","example":2},"interestRatePerPeriod":{"type":"number","format":"double","example":1.75},"interestRateVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"interestRecalculationCompoundingMethod":{"type":"integer","format":"int32","example":1},"interestRecognitionOnDisbursementDate":{"type":"boolean","example":false},"interestType":{"type":"integer","format":"int32","example":0},"isArrearsBasedOnOriginalSchedule":{"type":"boolean","example":false},"isCompoundingToBePostedAsTransaction":{"type":"boolean","example":false},"isEqualAmortization":{"type":"boolean","example":false},"isInterestRecalculationEnabled":{"type":"boolean","example":false},"isLinkedToFloatingInterestRates":{"type":"boolean","example":false},"loanPortfolioAccountId":{"type":"integer","format":"int64","example":8},"loanScheduleProcessingType":{"type":"string","example":"HORIZONTAL"},"loanScheduleType":{"type":"string","example":"CUMULATIVE"},"locale":{"type":"string","example":"en_GB"},"maxInterestRatePerPeriod":{"type":"number","format":"double","example":23.4},"maxNumberOfRepayments":{"type":"integer","format":"int32","example":1},"maxPrincipal":{"type":"number","format":"double","example":15000},"maxTrancheCount":{"type":"integer","format":"int32","example":3},"merchantBuyDownFee":{"type":"boolean","example":false},"minInterestRatePerPeriod":{"type":"number","format":"double","example":0},"minNumberOfRepayments":{"type":"integer","format":"int32","example":1},"minPrincipal":{"type":"number","format":"double","example":5000},"minimumDaysBetweenDisbursalAndFirstRepayment":{"type":"integer","format":"int32","example":30},"multiDisburseLoan":{"type":"boolean","example":true},"name":{"type":"string","example":"LP Accrual Accounting"},"numberOfRepaymentVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"numberOfRepayments":{"type":"integer","format":"int32","example":12},"outstandingLoanBalance":{"type":"number","format":"double","example":36000},"overAppliedCalculationType":{"type":"string","example":"percentage"},"overAppliedNumber":{"type":"integer","format":"int32","example":50},"overDueDaysForRepaymentEvent":{"type":"integer","format":"int32","example":3},"overdueDaysForNPA":{"type":"integer","format":"int32","example":179},"overpaymentLiabilityAccountId":{"type":"integer","format":"int64","example":2},"paymentAllocation":{"type":"array","example":[],"items":{"$ref":"#/components/schemas/AdvancedPaymentData"}},"paymentChannelToFundSourceMappings":{"type":"array","items":{"$ref":"#/components/schemas/GetLoanPaymentChannelToFundSourceMappings"}},"penaltyToIncomeAccountMappings":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductChargeToGLAccountMapper"}},"preClosureInterestCalculationStrategy":{"type":"integer","format":"int32","example":1},"principal":{"type":"number","format":"double","example":10000},"principalThresholdForLastInstallment":{"type":"integer","format":"int32","example":50},"principalVariationsForBorrowerCycle":{"type":"array","example":[],"items":{"type":"integer","format":"int32"}},"rates":{"type":"array","items":{"$ref":"#/components/schemas/RateData"}},"recalculationCompoundingFrequencyInterval":{"type":"integer","format":"int32","example":1},"recalculationCompoundingFrequencyOnDayType":{"type":"integer","format":"int32","example":1},"recalculationCompoundingFrequencyType":{"type":"integer","format":"int32","example":1},"recalculationRestFrequencyInterval":{"type":"integer","format":"int32","example":1},"recalculationRestFrequencyType":{"type":"integer","format":"int32","example":50},"receivableFeeAccountId":{"type":"integer","format":"int64","example":11},"receivableInterestAccountId":{"type":"integer","format":"int64","example":9},"receivablePenaltyAccountId":{"type":"integer","format":"int64","example":10},"repaymentEvery":{"type":"integer","format":"int32","example":1},"repaymentFrequencyType":{"type":"integer","format":"int32","example":2},"repaymentStartDateType":{"type":"integer","format":"int32","example":1},"rescheduleStrategyMethod":{"type":"integer","format":"int32","example":2},"shortName":{"type":"string","example":"LPAA"},"startDate":{"type":"string","example":"10 July 2022"},"supportedInterestRefundTypes":{"type":"array","items":{"type":"string"}},"transactionProcessingStrategyCode":{"type":"string","example":"principal-interest-penalties-fees-order-strategy"},"transfersInSuspenseAccountId":{"type":"integer","format":"int64","example":5},"useBorrowerCycle":{"type":"boolean","example":false},"writeOffAccountId":{"type":"integer","format":"int64","example":41},"writeOffReasonsToExpenseMappings":{"type":"array","items":{"$ref":"#/components/schemas/PostWriteOffReasonToExpenseAccountMappings"}}}},"PutLoanProductsProductIdResponse":{"type":"object","description":"PutLoanProductsProductIdResponse","properties":{"changes":{"$ref":"#/components/schemas/PutLoanChanges"},"resourceId":{"type":"integer","format":"int64","example":1}}},"PutLoanProductsV2ProductIdRequest":{"type":"object","allOf":[{"$ref":"#/components/schemas/PutLoanProductsProductIdRequest"},{"type":"object","properties":{"beneficiaryType":{"type":"string","description":"System-defined disbursement payee category; null clears.","enum":["BORROWER","MERCHANT","DEALER","BUILDER","PRIOR_LENDER"],"example":"BUILDER"},"bpiMethod":{"type":"string","description":"BPI treatment; explicit null clears; omitted preserves. Refused for a schedule type that prices no broken period.","enum":["EMI_PLUS_BPI","PRE_EMI_INTEREST","BPI_WITHIN_EMI","CAPITALIZE_BPI"],"example":"BPI_WITHIN_EMI"},"brokenPeriodDayCount":{"type":"string","description":"broken-period day-count convention — same choices as dayCountConvention (parity). Explicit null clears; omitted preserves. Declarative product configuration: stored as sent; the broken-period interest engine consumes it in a later phase.","enum":["ACT_365","ACT_360","D30_360_US","D30E_360","ACT_ACT"],"example":"ACT_360"},"charges":{"type":"array","description":"Replace-all charge entries; omitting the array preserves associations AND flags; flags omitted on surviving entries are preserved, on new entries default false.","items":{"$ref":"#/components/schemas/LoanProductV2ChargeEntry"}},"coLendingEligible":{"type":"boolean","description":"Co-lending eligibility flag.","example":true},"collectBpiAtDisbursement":{"type":"boolean","description":"BPI-at-disbursement flag. Omitted preserves; explicit null is rejected — send false to disable. Refused for a schedule type that prices no broken period, and not yet consumed: no transaction or journal entry nets it from the proceeds.","example":false},"computeAprForKfs":{"type":"boolean","description":"APR-for-KFS flag. Omitted preserves; explicit null is rejected — send false to disable. Declarative: stored as sent; the APR/KFS engine consumes it in a later phase.","example":false},"dayCountConvention":{"type":"string","description":"stable day-count convention name. Supplying it re-derives and updates the raw axes; explicit null clears ONLY the stored convention (axes untouched); omitted preserves. Updating either raw axis WITHOUT a convention in the same request clears the stored convention (drift prevention). Supplying both requires consistency.","enum":["ACT_365","ACT_360","D30_360_US","D30E_360","ACT_ACT"],"example":"ACT_360"},"defaultRoundingMode":{"type":"string","description":"product-level java.math.RoundingMode NAME (never an ordinal or any internal identifier). Null inherits tenant rounding. Declarative: persisted via the shared rounding profile; engine wiring consumes it in a later phase.","enum":["UP","DOWN","CEILING","FLOOR","HALF_UP","HALF_DOWN","HALF_EVEN"],"example":"HALF_UP"},"interestRateStep":{"type":"number","description":"fixed nominal rate increment in percentage points per annum. Fixed-rate products only — must be null/omitted for floating products. Null = continuous.","example":0.25},"maximumDaysBetweenDisbursalAndFirstRepayment":{"type":"integer","format":"int32","description":"first-repayment ceiling in days. Explicit null clears; omitted preserves; the combined final state must keep ceiling >= floor.","example":45},"pmtType":{"type":"string","description":"payment-formula variant. Omitted preserves; explicit null is rejected — send STANDARD_PMT to reset. PRECISE_PMT is stored as declarative configuration; the precise-PMT engine consumes it in a later phase.","enum":["STANDARD_PMT","PRECISE_PMT"],"example":"STANDARD_PMT"},"principalStep":{"type":"number","description":"principal increment anchored at minimumPrincipal. Explicit null clears the step (band returns to CONTINUOUS); omitted preserves. Requires the complete principal band when supplied; the default principal must sit on the grid.","example":5000},"productCategoryTags":{"type":"array","description":"Replace-all list of stable category-tag codes (code group LoanProductCategory).","example":["SECURED","GREEN"],"items":{"type":"string","description":"Replace-all list of stable category-tag codes (code group LoanProductCategory).","example":"[\"SECURED\",\"GREEN\"]"}},"productType":{"type":"string","description":"Stable product-type code (code group LoanProductType); null clears.","example":"HL"},"repayOnDay":{"type":"array","description":"replacement pinned-day set (monthly products only; exactly one day active). Explicit null clears the recurrence; omitted preserves. Changing repayment frequency away from monthly requires clearing repayOnDay in the same request.","example":[5],"items":{"type":"integer","format":"int32","description":"replacement pinned-day set (monthly products only; exactly one day active). Explicit null clears the recurrence; omitted preserves. Changing repayment frequency away from monthly requires clearing repayOnDay in the same request."}},"residualEnabled":{"type":"boolean","description":"residual (balloon) schedule eligibility flag. Declarative: stored as sent; the residual schedule engine consumes it in a later phase.","example":false},"scheduleSolver":{"type":"string","description":"declarative input-mode selection (D-27). Omitted preserves; explicit null CLEARS the value back to \"not configured\" (nullable, no default). All five values are storable and none changes backend behaviour; changing the solver changes no other product field. The backend never derives Loan terms from scheduleSolver.","enum":["SOLVE_EMI","TARGET_EMI","MERCHANT_DISCOUNT","FLAT_RATE","TOTAL_INTEREST_PCT"],"example":"TARGET_EMI"},"tenorStep":{"type":"integer","format":"int32","description":"increment in NUMBER OF INSTALLMENTS over the repayment-count band (never a calendar duration). Explicit null clears; omitted preserves.","example":3}}}],"description":"V2 update request — the V1 update contract plus the V2-only identity & classification parameters, with partial-update semantics throughout: omitted fields leave the existing configuration unchanged; explicit null clears productType/beneficiaryType; productCategoryTags is replace-all when present (empty array or null clears)."},"PutLoanProductsV2ProductIdResponse":{"type":"object","allOf":[{"$ref":"#/components/schemas/PutLoanProductsProductIdResponse"}],"description":"V2 update response — identical to V1; the changes map reports the new stable codes for changed identity & classification fields."},"PutLoansLoanIdChanges":{"type":"object","properties":{"fraud":{"type":"boolean","example":false},"locale":{"type":"string","example":"en"},"principal":{"type":"integer","format":"int64","example":5000}}},"PutLoansLoanIdChargeData":{"type":"object","properties":{"amount":{"type":"number","example":1},"chargeCalculationType":{"type":"integer","format":"int32","example":1},"chargeId":{"type":"integer","format":"int64","example":1},"chargePaymentMode":{"type":"integer","format":"int32","example":1},"chargeTimeType":{"type":"integer","format":"int32","example":1},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"dueDate":{"type":"string"},"id":{"type":"integer","format":"int64","example":1},"locale":{"type":"string","example":"en"}}},"PutLoansLoanIdCollateral":{"type":"object","properties":{"clientCollateralId":{"type":"integer","format":"int64","example":1},"quantity":{"type":"number","example":1}}},"PutLoansLoanIdDisbursementData":{"type":"object","properties":{"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"expectedDisbursementDate":{"type":"string"},"interestType":{"type":"integer","format":"int32","example":1},"isEqualAmortization":{"type":"boolean","example":true},"locale":{"type":"string","example":"en"},"netDisbursalAmount":{"type":"number","example":1},"principal":{"type":"number","example":1}}},"PutLoansLoanIdRequest":{"type":"object","description":"PutLoansLoanIdRequest","properties":{"allowFullTermForTranche":{"type":"boolean","description":"Allow full term length for each tranche disbursement","example":false},"amortizationType":{"type":"integer","format":"int32","example":1},"charges":{"type":"array","items":{"$ref":"#/components/schemas/PutLoansLoanIdChargeData"}},"clientId":{"type":"integer","format":"int64","example":1},"collateral":{"type":"array","items":{"$ref":"#/components/schemas/PutLoansLoanIdCollateral"}},"createStandingInstructionAtDisbursement":{"type":"boolean","example":true},"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"disbursedAmountPercentageForDownPayment":{"type":"number","example":0},"disbursementData":{"type":"array","items":{"$ref":"#/components/schemas/PutLoansLoanIdDisbursementData"}},"enableAutoRepaymentForDownPayment":{"type":"boolean","example":false},"enableDownPayment":{"type":"boolean","example":false},"enableInstallmentLevelDelinquency":{"type":"boolean","example":false},"expectedDisbursementDate":{"type":"string","example":"04 March 2014"},"fixedLength":{"type":"integer","format":"int32","example":1},"fixedPrincipalPercentagePerInstallment":{"type":"number","example":5.5},"fraud":{"type":"boolean","example":true},"graceOnArrearsAgeing":{"type":"integer","format":"int32","example":1},"interestCalculationPeriodType":{"type":"integer","format":"int32","example":0},"interestChargedFromDate":{"type":"string"},"interestRateFrequencyType":{"type":"integer","format":"int32","example":3},"interestRatePerPeriod":{"type":"number","example":2},"interestRecognitionOnDisbursementDate":{"type":"boolean","example":false},"interestType":{"type":"integer","format":"int32","example":0},"isEqualAmortization":{"type":"boolean","example":true},"isTopup":{"type":"boolean","example":true},"linkAccountId":{"type":"integer","format":"int64","example":1},"loanIdToClose":{"type":"integer","format":"int64","example":1},"loanScheduleProcessingType":{"type":"string","example":"HORIZONTAL"},"loanTermFrequency":{"type":"integer","format":"int32","example":10},"loanTermFrequencyType":{"type":"integer","format":"int32","example":0},"loanType":{"type":"string","example":"individual"},"locale":{"type":"string","example":"en"},"maxOutstandingLoanBalance":{"type":"integer","format":"int64","example":1},"numberOfRepayments":{"type":"integer","format":"int32","example":10},"principal":{"type":"integer","format":"int64","example":5000},"productId":{"type":"integer","format":"int64","example":1},"repaymentEvery":{"type":"integer","format":"int32","example":1},"repaymentFrequencyDayOfWeekType":{"type":"integer","format":"int32","example":1},"repaymentFrequencyNthDayType":{"type":"integer","format":"int32","example":1},"repaymentFrequencyType":{"type":"integer","format":"int32","example":0},"repaymentsStartingFromDate":{"type":"string"},"submittedOnDate":{"type":"string"},"transactionProcessingStrategyCode":{"type":"string","example":"principal-interest-penalties-fees-order-strategy"}}},"PutLoansLoanIdResponse":{"type":"object","description":"PutLoansLoanIdResponse","properties":{"changes":{"$ref":"#/components/schemas/PutLoansLoanIdChanges"},"clientId":{"type":"integer","format":"int64","example":1},"loanId":{"type":"integer","format":"int64","example":1},"officeId":{"type":"integer","format":"int64","example":2},"resourceExternalId":{"type":"string","example":"95174ff9-1a75-4d72-a413-6f9b1cb988b7"},"resourceId":{"type":"integer","format":"int64","example":1}}},"PutReportRequest":{"type":"object","description":"PutReportRequest","properties":{"reportName":{"type":"string","example":"Completely New Report"},"reportParameters":{"type":"array","items":{"$ref":"#/components/schemas/ReportParameterData"}}}},"PutReportResponse":{"type":"object","description":"PutReportResponse","properties":{"changes":{"$ref":"#/components/schemas/PutReportResponseChanges"},"resourceId":{"type":"integer","format":"int64","example":132}}},"PutReportResponseChanges":{"type":"object","properties":{"reportName":{"type":"string","example":"Changed New Report"},"reportParameters":{"type":"array","items":{"$ref":"#/components/schemas/ReportParameterData"}}}},"PutRolesRoleIdPermissionsRequest":{"type":"object","description":"PutRolesRoleIdPermissionsRequest","properties":{"permissions":{"type":"object","additionalProperties":{"type":"boolean","example":false},"example":"\"CREATE_GUARANTOR\":true,\n    \"CREATE_CLIENT\":true"}}},"PutRolesRoleIdPermissionsResponse":{"type":"object","description":"PutRolesRoleIdPermissionsResponse","properties":{"changes":{"$ref":"#/components/schemas/PutRolesRoleIdPermissionsResponsePermissionsChanges"},"resourceId":{"type":"integer","format":"int64","example":8}}},"PutRolesRoleIdPermissionsResponsePermissionsChanges":{"type":"object","properties":{"permissions":{"type":"object","additionalProperties":{"type":"boolean","example":false},"example":"\"CREATE_GUARANTOR\":true,\n    \"CREATE_CLIENT\":true"}}},"PutRolesRoleIdRequest":{"type":"object","description":"PutRolesRoleIdRequest","properties":{"description":{"type":"string","example":"some description(changed)"}}},"PutRolesRoleIdResponse":{"type":"object","description":"PutRolesRoleIdResponse","properties":{"changes":{"$ref":"#/components/schemas/PutRolesRoleIdResponseChanges"},"resourceId":{"type":"integer","format":"int64","example":1}}},"PutRolesRoleIdResponseChanges":{"type":"object","properties":{"description":{"type":"string","example":"some description(changed)"}}},"PutTaxesComponentsChanges":{"type":"object","properties":{"name":{"type":"string","example":"tax component 2"},"percentage":{"type":"number","format":"float","example":15},"startDate":{"type":"string","format":"date"}}},"PutTaxesComponentsTaxComponentIdRequest":{"type":"object","description":"PutTaxesComponentsTaxComponentIdRequest","properties":{"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"locale":{"type":"string","example":"en"},"name":{"type":"string","example":"tax component 2"},"percentage":{"type":"number","format":"float","example":15},"startDate":{"type":"string","example":"15 April 2016"}}},"PutTaxesComponentsTaxComponentIdResponse":{"type":"object","description":"PutTaxesComponentsTaxComponentIdResponse","properties":{"changes":{"$ref":"#/components/schemas/PutTaxesComponentsChanges"},"resourceId":{"type":"integer","format":"int64","example":1}}},"PutTaxesGroupChanges":{"type":"object","properties":{"addComponents":{"type":"array","example":[6],"items":{"type":"integer","format":"int64"}},"modifiedComponents":{"type":"array","items":{"$ref":"#/components/schemas/PutTaxesGroupModifiedComponents"},"uniqueItems":true},"name":{"type":"string","example":"tax group 2"}}},"PutTaxesGroupModifiedComponents":{"type":"object","properties":{"endDate":{"type":"string","example":"Apr 22, 2016 12:00:00 AM"},"taxComponentId":{"type":"integer","format":"int64","example":7}}},"PutTaxesGroupTaxComponents":{"type":"object","properties":{"endDate":{"type":"string","example":"22 April 2016"},"id":{"type":"integer","format":"int64","example":7},"taxComponentId":{"type":"integer","format":"int64","example":7}}},"PutTaxesGroupTaxGroupIdRequest":{"type":"object","description":"PutTaxesGroupTaxGroupIdRequest","properties":{"dateFormat":{"type":"string","example":"dd MMMM yyyy"},"locale":{"type":"string","example":"en"},"name":{"type":"string","example":"tax group 2"},"taxComponents":{"type":"array","items":{"$ref":"#/components/schemas/PutTaxesGroupTaxComponents"},"uniqueItems":true}}},"PutTaxesGroupTaxGroupIdResponse":{"type":"object","description":"PutTaxesGroupTaxGroupIdResponse","properties":{"changes":{"$ref":"#/components/schemas/PutTaxesGroupChanges"},"resourceId":{"type":"integer","format":"int64","example":7}}},"PutUsersUserIdRequest":{"type":"object","description":"PutUsersUserIdRequest","properties":{"clients":{"type":"array","example":[2,3],"items":{"type":"integer","format":"int64"}},"email":{"type":"string","example":"user@example.com"},"firstname":{"type":"string","example":"Test"},"isLoginRetriesEnabled":{"type":"boolean","example":true},"isPasswordResetAllowed":{"type":"boolean"},"lastname":{"type":"string","example":"User"},"officeId":{"type":"integer","format":"int64","example":1},"password":{"type":"string","example":"password"},"repeatPassword":{"type":"string","example":"repeatPassword"},"roles":{"type":"array","example":[2,3],"items":{"type":"integer","format":"int64"}},"sendPasswordToEmail":{"type":"boolean","example":true},"staffId":{"type":"integer","format":"int64","example":1}}},"PutUsersUserIdResponse":{"type":"object","description":"PutUsersUserIdResponse","properties":{"changes":{"$ref":"#/components/schemas/PutUsersUserIdResponseChanges"},"officeId":{"type":"integer","format":"int64","example":1},"resourceId":{"type":"integer","format":"int64","example":11}}},"PutUsersUserIdResponseChanges":{"type":"object","properties":{"firstname":{"type":"string","example":"Test"}}},"RateData":{"type":"object","properties":{"active":{"type":"boolean"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"percentage":{"type":"number"},"productApply":{"$ref":"#/components/schemas/EnumOptionData"}}},"ReportParameterData":{"type":"object"},"ResultsetColumnHeaderData":{"type":"object","properties":{"booleanDisplayType":{"type":"boolean"},"codeLookupDisplayType":{"type":"boolean"},"codeValueDisplayType":{"type":"boolean"},"columnCode":{"type":"string"},"columnDisplayType":{"type":"string","enum":["TEXT","STRING","INTEGER","FLOAT","DECIMAL","DATE","TIME","DATETIME","BOOLEAN","BINARY","CODELOOKUP","CODEVALUE"]},"columnLength":{"type":"integer","format":"int64"},"columnName":{"type":"string"},"columnType":{"type":"string","enum":["BIT","BOOLEAN","SMALLINT","TINYINT","INTEGER","MEDIUMINT","BIGINT","REAL","FLOAT","DOUBLE","NUMERIC","DECIMAL","SERIAL","SMALLSERIAL","BIGSERIAL","MONEY","CHAR","VARCHAR","LONGVARCHAR","TEXT","TINYTEXT","MEDIUMTEXT","LONGTEXT","JSON","DATE","TIME","TIME_WITH_TIMEZONE","TIMESTAMP","DATETIME","TIMESTAMP_WITH_TIMEZONE","INTERVAL","BINARY","VARBINARY","LONGVARBINARY","BYTEA","BLOB","TINYBLOB","MEDIUMBLOB","LONGBLOB"]},"columnValues":{"type":"array","items":{"$ref":"#/components/schemas/ResultsetColumnValueData"}},"dateDisplayType":{"type":"boolean"},"dateTimeDisplayType":{"type":"boolean"},"decimalDisplayType":{"type":"boolean"},"integerDisplayType":{"type":"boolean"},"isColumnIndexed":{"type":"boolean"},"isColumnNullable":{"type":"boolean"},"isColumnPrimaryKey":{"type":"boolean"},"isColumnUnique":{"type":"boolean"},"mandatory":{"type":"boolean"},"stringDisplayType":{"type":"boolean"},"textDisplayType":{"type":"boolean"},"timeDisplayType":{"type":"boolean"}}},"ResultsetColumnValueData":{"type":"object"},"ResultsetRowData":{"type":"object","properties":{"row":{"type":"array","items":{"type":"object"}}}},"RoleData":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"RunReportsResponse":{"type":"object","properties":{"columnHeaders":{"type":"array","items":{"$ref":"#/components/schemas/ResultsetColumnHeaderData"}},"data":{"type":"array","items":{"$ref":"#/components/schemas/ResultsetRowData"}}}},"Sort":{"type":"object","properties":{"empty":{"type":"boolean"},"sorted":{"type":"boolean"},"unsorted":{"type":"boolean"}}},"SortOrder":{"type":"object","properties":{"direction":{"type":"string","enum":["ASC","DESC"]},"property":{"type":"string"}}},"StaffCreateRequest":{"type":"object","properties":{"dateFormat":{"type":"string"},"emailAddress":{"type":"string"},"externalId":{"type":"string"},"firstname":{"type":"string"},"forceStatus":{"type":"boolean"},"isActive":{"type":"boolean"},"isLoanOfficer":{"type":"boolean"},"joiningDate":{"type":"string"},"lastname":{"type":"string"},"locale":{"type":"string"},"mobileNo":{"type":"string","pattern":"^\\+?[0-9]{7,15}$"},"officeId":{"type":"integer","format":"int64"}},"required":["firstname","lastname","officeId"]},"StaffCreateResponse":{"type":"object","properties":{"officeId":{"type":"integer","format":"int64"},"resourceId":{"type":"integer","format":"int64"}}},"StaffData":{"type":"object","properties":{"allowedOffices":{"type":"array","items":{"$ref":"#/components/schemas/OfficeData"}},"dateFormat":{"type":"string"},"displayName":{"type":"string"},"externalId":{"type":"string"},"firstname":{"type":"string"},"id":{"type":"integer","format":"int64"},"isActive":{"type":"boolean"},"isLoanOfficer":{"type":"boolean"},"joiningDate":{"type":"string","format":"date"},"lastname":{"type":"string"},"locale":{"type":"string"},"mobileNo":{"type":"string"},"officeId":{"type":"integer","format":"int64"},"officeName":{"type":"string"},"rowIndex":{"type":"integer","format":"int32"}}},"StaffUpdateRequest":{"type":"object","properties":{"emailAddress":{"type":"string"},"externalId":{"type":"string"},"firstname":{"type":"string"},"forceStatus":{"type":"boolean"},"isActive":{"type":"boolean"},"isLoanOfficer":{"type":"boolean"},"joiningDate":{"type":"string"},"lastname":{"type":"string"},"mobileNo":{"type":"string","pattern":"^\\+?[0-9]{7,15}$"},"officeId":{"type":"integer","format":"int64"}}},"StaffUpdateResponse":{"type":"object","properties":{"changes":{"type":"object","additionalProperties":{"type":"object"}},"officeId":{"type":"integer","format":"int64"},"resourceId":{"type":"integer","format":"int64"}}},"StringEnumOptionData":{"type":"object","properties":{"code":{"type":"string"},"id":{"type":"string"},"value":{"type":"string"}}},"TaxComponentData":{"type":"object","properties":{"creditAccount":{"$ref":"#/components/schemas/GLAccountData"},"creditAccountType":{"$ref":"#/components/schemas/EnumOptionData"},"debitAccount":{"$ref":"#/components/schemas/GLAccountData"},"debitAccountType":{"$ref":"#/components/schemas/EnumOptionData"},"glAccountOptions":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/GLAccountData"}}},"glAccountTypeOptions":{"type":"array","items":{"$ref":"#/components/schemas/EnumOptionData"}},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"percentage":{"type":"number"},"startDate":{"type":"string","format":"date"},"taxComponentHistories":{"type":"array","items":{"$ref":"#/components/schemas/TaxComponentHistoryData"}}}},"TaxComponentHistoryData":{"type":"object","properties":{"endDate":{"type":"string","format":"date"},"percentage":{"type":"number"},"startDate":{"type":"string","format":"date"}}},"TaxGroupData":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"taxAssociations":{"type":"array","items":{"$ref":"#/components/schemas/TaxGroupMappingsData"}},"taxComponents":{"type":"array","items":{"$ref":"#/components/schemas/TaxComponentData"}}}},"TaxGroupMappingsData":{"type":"object","properties":{"endDate":{"type":"string","format":"date"},"id":{"type":"integer","format":"int64"},"startDate":{"type":"string","format":"date"},"taxComponent":{"$ref":"#/components/schemas/TaxComponentData"}}},"TransactionType":{"type":"string","enum":["disbursement","repayment","waiver","repaymentAtDisbursement","writeOff","markedForRescheduling","recoveryRepayment","waiveCharges","accrual","initiateTransfer","approveTransfer","withdrawTransfer","rejectTransfer","refund","chargePayment","incomePosting","creditBalanceRefund","merchantIssuedRefund","payoutRefund","goodwillCredit","chargeRefund","chargeback","chargeAdjustment","chargeOff","downPayment","reAge","reAmortize","interestPaymentWaiver","accrualActivity","interestRefund","accrualAdjustment","capitalizedIncome","capitalizedIncomeAmortization","capitalizedIncomeAdjustment","contractTermination","capitalizedIncomeAmortizationAdjustment","buyDownFeeAmortization","buyDownFeeAmortizationAdjustment"]}},"securitySchemes":{"TenantIdentifier":{"in":"header","name":"Tenant-Identifier","type":"apiKey"},"basicAuth":{"scheme":"basic","type":"http"}}},"x-tagGroups":[{"name":"Non-functional","tags":["Authentication","User Management","Roles & Permissions","Staff","Codes & Code Values"]},{"name":"Functional","tags":["Customers","Loan Accounts","Loan Transactions","Loan Products","Charges","Tax on Charges","Documents","Payment Types","Reports"]}]}