{
  "openapi": "3.0.3",
  "info": {
    "contact": { "email": "dev@kike.group" },
    "description": "KiKé Group is a secure, multi-tenanted banking platform.\nThe goal of the KiKé Group API is to empower developers to build apps on top of the KiKé Group Platform.\nThe [reference app](https://cockpit.kike.group/) (username: admin, password: password) works on the same demo tenant as the interactive links in this documentation.",
    "title": "KiKé Group REST API",
    "version": "1.16.0-SNAPSHOT"
  },
  "servers": [
    { "url": "/fineract-provider/api" },
    { "url": "https://demo.fineract.dev/fineract-provider/api" }
  ],
  "security": [{ "basicAuth": [], "tenantid": [] }],
  "tags": [
    {
      "description": "Periodic Accrual is to accrue the loan income till the specific date or till batch job scheduled time.\n",
      "name": "Periodic Accrual Accounting"
    },
    {
      "description": "An accounting closure indicates that no more journal entries may be logged (or reversed) in the system, either manually or via the portfolio with an entry date prior to the defined closure date\n\nField Descriptions\nclosingDate\nThe date for which the accounting closure is defined\nofficeId\nThe identifier of the branch for which accounting has been closed\ncomments\nDescription associated with an Accounting closure\n",
      "name": "Accounting Closure"
    },
    {
      "description": "Organization Level Financial Activities like Asset and Liability Transfer can be mapped to GL Account. Integrated accounting takes these accounts into consideration when an Account transfer is made between a savings to loan/savings account and vice-versa\n\nField Descriptions\nfinancialActivityId\nThe identifier of the Financial Activity\nglAccountId\nThe identifier of a GL Account ( Ledger Account) which shall be used as the default account for the selected Financial Activity\n",
      "name": "Mapping Financial Activities to Accounts"
    },
    {
      "description": "Ledger accounts represent an Individual account within an Organizations Chart Of Accounts(COA) and are assigned a name and unique number by which they can be identified.\nAll transactions relating to a company's assets, liabilities, owners' equity, revenue and expenses are recorded against these accounts\n",
      "name": "General Ledger Account"
    },
    {
      "description": "A journal entry refers to the logging of transactions against general ledger accounts. A journal entry may consist of several line items, each of which is either a \"debit\" or a \"credit\". The total amount of the debits must equal the total amount of the credits or the journal entry is said to be \"unbalanced\" \n\nA journal entry directly changes the account balances on the general ledger",
      "name": "Journal Entries"
    },
    {
      "description": "This defines the Provisioning Entries for all active loan products\n\nField Descriptions\ndate\nDate on which day provisioning entries should be created\ncreatejournalentries\nBoolean variable whether to add journal entries for generated provisioning entries\n",
      "name": "Provisioning Entries"
    },
    {
      "description": "It is typical scenario in MFI's that non accountants pass journal entries on a regular basis. For Ex: A branch office might deposit their entire cash at hand to their Bank account at the end of a working day. The branch office users might not understand enough of accounting to figure out which account needs to get credited and which account needs to be debited to represent this transaction.\n\nEnter accounting rules, an abstraction on top of manual journal entries for enabling simpler data entry. An accounting rule can define any of the following abstractions\n\nA Simple journal entry where both the credit and debit account have been preselected\nA Simple journal entry where either credit or debit accounts have been limited to a pre-selected list of accounts (Ex: Debit account should be one of \"Bank of America\" of \"JP Morgan\" and credit account should be \"Cash\")\nA Compound journal entry where multiple debits and / or multiple credits may be made amongst a set of preselected list of accounts (Ex: Credit account should be either \"Bank Of America\" or \"Cash\" and debit account can be \"Employee Salary\" and/or \"Miscellenous Expenses\")\nAn accounting rule can also be optionally associated with a branch, so that only a particular Branch's users have access to the rule",
      "name": "Accounting Rules"
    },
    {
      "description": "The KiKé Group Batch API enables a consumer to access significant amounts of data in a single call or to make changes to several objects at once. Batching allows a consumer to pass instructions for several operations in a single HTTP request. A consumer can also specify dependencies between related operations. Once all operations have been completed, a consolidated response will be passed back and the HTTP connection will be closed.\n\nThe Batch API takes in an array of logical HTTP requests represented as JSON arrays - each request has a requestId (the id of a request used to specify the sequence and as a dependency between requests), a method (corresponding to HTTP method GET/PUT/POST/DELETE etc.), a relativeUrl (the portion of the URL after https://example.org/api/v2/), optional headers array (corresponding to HTTP headers), optional reference parameter if a request is dependent on another request and an optional body (for POST and PUT requests). The Batch API returns an array of logical HTTP responses represented as JSON arrays - each response has a requestId, a status code, an optional headers array and an optional body (which is a JSON encoded string).\n\nBatch API uses Json Path to handle dependent parameters. For example, if request '2' is referencing request '1' and in the \"body\" or in \"relativeUrl\" of request '2', there is a dependent parameter (which will look like \"$.parameter_name\"), then Batch API will internally substitute this dependent parameter from the response body of request '1'.\n\nBatch API is able to handle deeply nested dependent requests as well nested parameters. As shown in the example, requests are dependent on each other as, 1<--2<--6, i.e a nested dependency, where request '6' is not directly dependent on request '1' but still it is one of the nested child of request '1'. In the same way Batch API could handle a deeply nested dependent value, such as {..[..{..,$.parameter_name,..}..]}.",
      "name": "Batch API"
    },
    { "description": "Internal COB api for testing purpose", "name": "Internal COB" },
    {
      "description": "Every non-read Mifos API request is audited. A fully processed request can not be changed or deleted. See maker checker api for situations where an audit is not fully processed.\n\nPermissions: To search and look at audit entries a user needs to be attached to a role that has one of the ALL_FUNCTIONS, ALL_FUNCTIONS_READ or READ_AUDIT permissions.\n\nData Scope: A user can only see audits that are within their data scope. However, 'head office' users can see all audits including those that aren't office/branch related e.g. Loan Product changes.\")",
      "name": "Audits"
    },
    {
      "description": "V2 endpoint that always returns a paged response (totalFilteredRecords + pageItems) for audits, removing the ambiguous paged response typing of the v1 endpoint.",
      "name": "AuditsV2"
    },
    {
      "description": "Account number preferences are used to describe custom formats for account numbers associated with Customer, Loan and Savings accounts.",
      "name": "Account number format"
    },
    {
      "description": "Business date management enables you to set up, fetch and adjust organisation business dates",
      "name": "Business Date Management"
    },
    {
      "description": "The following settings are possible for cache:\n\nNo Caching: caching turned off\n\nSingle node: caching on for single instance deployments of platorm (works for multiple tenants but only one tomcat).\nBy default caching is set to No Caching. Switching between caches results in the cache been clear e.g. from single\nnode to no cache and back again would clear down the single node cache.\n",
      "name": "Cache"
    },
    {
      "description": "Code and code values: Codes represent a specific category of data, their code values are a specific instance of that category.\n\nCodes are mostly system defined which means the code itself comes out of the box and cannot be modified however its code values can be. e.g. 'Customer Identifier', it defaults to a code value of 'Passport' but could be 'Drivers License, National Id' etc",
      "name": "Code Values"
    },
    {
      "description": "Code and code values: Codes represent a specific category of data, their code values are a specific instance of that category.\n\nCodes are mostly system defined which means the code itself comes out of the box and cannot be modified however its code values can be. e.g. 'Customer Identifier', it defaults to a code value of 'Passport' but could be 'Drivers License, National Id' etc",
      "name": "Codes"
    },
    {
      "description": "External Services Configuration related to set of supported configurations for third party services like Amazon S3 and SMTP:\n\nS3 (Amazon S3):\ns3_access_key -\ns3_bucket_name -\ns3_secret_key -\n\n\nSMTP (Email Service):\nusername -\npassword -\nhost -\nport -\nuseTLS -",
      "name": "External Services"
    },
    {
      "description": "Global configuration related to set of supported enable/disable configurations:\n\nmaker-checker - defaults to false - if true turns on maker-checker functionality\nreschedule-future-repayments - defaults to false - if true reschedules repayemnts which falls on a non-working day to configured repayment rescheduling rule\nallow-transactions-on-non-workingday - defaults to false - if true allows transactions on non-working days\nreschedule-repayments-on-holidays - defaults to false - if true reschedules repayemnts which falls on a non-working day to defined reschedule date\nallow-transactions-on-holiday - defaults to false - if true allows transactions on holidays\nsavings-interest-posting-current-period-end - Set it at the database level before any savings interest is posted. When set as false(default), interest will be posted on the first date of next period. If set as true, interest will be posted on last date of current period. There is no difference in the interest amount posted.\nfinancial-year-beginning-month - Set it at the database level before any savings interest is posted. Allowed values 1 - 12 (January - December). Interest posting periods are evaluated based on this configuration.\nmeetings-mandatory-for-jlg-loans - if set to true, enforces all JLG loans to follow a meeting schedule belonging to either the parent group or Center.",
      "name": "Global Configuration"
    },
    {
      "description": "The datatables API allows you to plug-in your own tables (MySql) that have a relationship to a KiKé Group core table. For example, you might want to add some extra client fields and record information about each of the clients' family members. Via the API you can create, read, update and delete entries for each 'plugged-in' table. The API checks for permission and for 'data scoping' (only data within the users' office hierarchy can be managed by the user).\n\nThe KiKé Group Reference App uses a JQuery plug-in called stretchydatatables (which in turn uses this datatables resource) to provide a pretty flexible CRUD (Create, Read, Update, Delete) User Interface.",
      "name": "Data Tables"
    },
    { "description": "This defines Entity-Datatable Check.", "name": "Entity Data Table" },
    { "description": "Non-core reports can be added, updated and deleted.", "name": "Reports" },
    {
      "description": "API for executing predefined reports with dynamic parameters",
      "name": "Run Reports"
    },
    {
      "description": "Multiple Documents (a combination of a name, description and a file) may be attached to different entities like clients, groups, staff, loans, savings and client identifiers in the system\n\nNote: the currently allowed entities are\n\n- clients: URL pattern as clients\n- staff: URL pattern as staff\n- loans: URL pattern as loans\n- savings: URL pattern as savings\n- client identifiers: URL pattern as client_identifiers\n- groups: URL pattern as groups\n",
      "name": "Documents"
    },
    {
      "description": "External event configuration enables user to enable/disable event posting to downstream message channel",
      "name": "External event configuration"
    },
    {
      "description": "Hooks are a mechanism to trigger custom code on the occurence of events. ",
      "name": "Hooks"
    },
    { "description": "Instance mode changing API", "name": "Instance Mode" },
    {
      "description": "Batch jobs (also known as cron jobs on Unix-based systems) are a series of back-end jobs executed on a computer at a particular time defined in job's cron expression.\n\n At any point, you can view the list of batch jobs scheduled to run along with other details specific to each job. Manually you can execute the jobs at any point of time.\n\n The scheduler status can be either \"Active\" or \"Standby\". If the scheduler status is Active, it indicates that all batch jobs are running/ will run as per the specified schedule.If the scheduler status is Standby, it will ensure all scheduled batch runs are suspended.",
      "name": "SCHEDULER JOB"
    },
    {
      "description": "This resource allows you to create a scheduled job that runs a report and sents it by email to specified email addresses.\n\nThe scheduled job can be configured to run once or on a regular basis (once a day, twice a week, etc)",
      "name": "Report Mailing Jobs"
    },
    {
      "description": "An API capability that allows client applications to verify authentication details using HTTP Basic Authentication.",
      "name": "Authentication HTTP Basic"
    },
    {
      "description": "Manage per-tenant OIDC/IdP configuration stored in the master database. Each tenant can have exactly one IdP configured (Keycloak, Google, Azure AD, Okta, etc.). The issuerUri is matched against the JWT 'iss' claim for automatic tenant resolution.",
      "name": "Tenant OIDC Configuration"
    },
    {
      "description": "External Asset Owner Loan Product Attributes",
      "name": "External Asset Owner Loan Product Attributes"
    },
    { "description": "External Asset Owners", "name": "External Asset Owners" },
    { "description": "Notification API resources", "name": "Notification" },
    {
      "description": "Some MFI's span large regions where different branch offices might observe different holidays. They need the ability to define holidays for specific branch offices and be able to set the repayment rule to follow during those holidays.\n\nThe reschedule of repayments to repaymentsRescheduledTo date during defined holidays is turned on/off by enabling/disabling reschedule-repayments-on-holidays in Global configurations.\n\nAllow Repayment transactions on a defined holidays is turned on/off by enabling/disabling allow-transactions-on-holiday in Global configurations.",
      "name": "Holidays"
    },
    {
      "description": "Application related configuration around viewing/updating the currencies permitted for use within the MFI.",
      "name": "Currency"
    },
    {
      "description": "Offices are used to model an MFIs structure. A hierarchical representation of offices is supported. There will always be at least one office (which represents the MFI or an MFIs head office). All subsequent offices added must have a parent office.",
      "name": "Offices"
    },
    { "description": "This defines the Provisioning Criteria", "name": "Provisioning Criteria" },
    {
      "description": "Allows you to model staff members. At present the key role of significance is whether this staff member is a loan officer or not.",
      "name": "Staff"
    },
    {
      "description": "Teller cash management which will allow an organization to manage their cash transactions at branches or head office more effectively.",
      "name": "Teller Cash Management"
    },
    {
      "description": "The days of the week that are workdays.\n\nRescheduling of repayments when it falls on a non-working is turned on /off by enable/disable reschedule-future-repayments parameter in Global configurations\n\nAllow transactions on non-working days is configurable by enabling/disbaling the allow-transactions-on-non-workingday parameter in Global configurations.",
      "name": "Working days"
    },
    {
      "description": "Ability to be able to transfer monetary funds from one account to another.\n\nNote: At present only savings account to savings account transfers are supported.",
      "name": "Account Transfers"
    },
    {
      "description": "Standing instructions (or standing orders) refer to instructions a bank account holder (\"the payer\") gives to his or her bank to pay a set amount at regular intervals to another's (\"the payee's\") account.\n\nNote: At present only savings account to savings account and savings account to Loan account transfers are permitted.",
      "name": "Standing Instructions"
    },
    {
      "description": "The list capability of history can support pagination and sorting.",
      "name": "Standing Instructions History"
    },
    {
      "description": "Share accounts are instances of a praticular share product created for an individual. An application process around the creation of accounts is also supported.",
      "name": "Share Account"
    },
    {
      "description": "Entity Field configuration API is a generic and extensible \nwherein various entities and subentities can be related.\nAlso it gives the user an ability to enable/disable fields,\nadd regular expression for validation",
      "name": "Entity Field Configuration"
    },
    {
      "description": "Its typical for MFIs to add extra costs for their financial products. These are typically Fees or Penalties.\n\nA Charge on fineract platform is what we use to model both Fees and Penalties.\n\nAt present we support defining charges for use with Client accounts and both loan and saving products.",
      "name": "Charges"
    },
    {
      "description": "Address module is an optional module and can be configured into the system by using GlobalConfiguration setting: enable-address. In order to activate Address module, we need to enable the configuration, enable-address by setting its value to true.",
      "name": "Clients Address"
    },
    {
      "description": "It is typical for MFI's to directly associate charges with an implicit Client account. These can be either fees or penalties\n\nClient Charges are client specific instances of Charges. Refer Charges for documentation of the various properties of a charge, Only additional properties ( specific to the context of a Charge being associated with a Client account) are described here",
      "name": "Client Charges"
    },
    {
      "description": "Client Identifiers refer to documents that are used to uniquely identify a customer\nEx: Drivers License, Passport, Ration card etc ",
      "name": "Client Identifier"
    },
    {
      "description": "Client Transactions refer to transactions made directly against a Client's internal account. Currently, these transactions are only created as a result of charge payments/waivers. You are allowed to undo a transaction, however you cannot explicitly create one. ",
      "name": "Client Transaction"
    },
    {
      "description": "Clients are people and businesses that have applied (or may apply) to an MFI for loans.\n\nClients can be created in Pending or straight into Active state.",
      "name": "Client"
    },
    {
      "description": "In lending agreements, collateral is a borrower's pledge of specific property to a lender, to secure repayment of a loan. The collateral serves as protection for a lender against a borrower's default - that is, any borrower failing to pay the principal and interest under the terms of a loan obligation. If a borrower does default on a loan (due to insolvency or other event), that borrower forfeits (gives up) the property pledged as collateral - and the lender then becomes the owner of the collateral",
      "name": "Loan Collateral"
    },
    {
      "description": "Client Collateral Management is for managing collateral operations",
      "name": "Client Collateral Management"
    },
    {
      "description": "Collateral Management is for managing collateral operations",
      "name": "Collateral Management"
    },
    {
      "description": "Loan Collateral Management is for managing collateral operations",
      "name": "Loan Collateral Management"
    },
    {
      "description": "Delinquency Range and Buckets management enables you to set up, fetch and adjust Delinquency overdue ranges",
      "name": "Delinquency Range and Buckets Management"
    },
    {
      "description": "It lets you create, list, retrieve and upload the floating rates",
      "name": "Floating Rates"
    },
    {
      "description": "Centers along with Groups are used to provided a distinctive banking distribution channel used in banking. Its common in areas such as Southern Asia to use Centers and Group as administrative units in grameen style lending. Typically groups will contain one to five people and centers themselves will be made of anywhere between 2-10 groups.",
      "name": "Centers"
    },
    {
      "description": "Groups are used to provide a distinctive banking distribution channel used in banking throughout the world. The Group is an administrative unit. It can contain as few as 5 people or as many as 40 depending on how its used.\n\nDifferent styles of group lending - Joint-Liability Group, Grameen Model (Center-Group), Self-Help Groups, Village/Communal Banks)",
      "name": "Groups"
    },
    {
      "description": "V2 endpoint that always returns a paged response (totalFilteredRecords + pageItems) for centers, removing the ambiguous paged response typing of the v1 endpoint. The non-paged meeting-date lookup branch of the v1 endpoint is intentionally omitted.",
      "name": "CentersV2"
    },
    {
      "description": "V2 endpoint that always returns a paged response (totalFilteredRecords + pageItems) for groups, removing the ambiguous paged response typing of the v1 endpoint.",
      "name": "GroupsV2"
    },
    {
      "description": "APIs for managing interest pause periods on loans.",
      "name": "Loan Interest Pause"
    },
    {
      "description": "The slabs a.k.a interest bands are associated with Interest Rate Chart. These bands allow to define different interest\nrates for different deposit term periods.\n",
      "name": "Interest Rate Slab (A.K.A interest bands)"
    },
    {
      "description": "This defines an interest rate scheme that can be associated to a term deposit product. This will have a slab (band or range) of deposit periods and the associated interest rates applicable along with incentives for each band.",
      "name": "Interest Rate Chart"
    },
    { "description": "Loan Buy Down Fees", "name": "Loan Buy Down Fees" },
    {
      "description": "Fetch the Loan capitalized income related informations",
      "name": "Loan Capitalized Income"
    },
    {
      "description": "Its typical for MFIs to add extra costs for their loan products. They can be either Fees or Penalties.\n\nLoan Charges are instances of Charges and represent either fees and penalties for loan products. Refer Charges for documentation of the various properties of a charge, Only additional properties ( specific to the context of a Charge being associated with a Loan) are described here",
      "name": "Loan Charges"
    },
    {
      "description": "Loan Term Variations provides the ability to change due dates, amounts and number of instalments before loan approval.",
      "name": "Loan Rescheduling"
    },
    {
      "description": "Capabilities include loan repayment's, interest waivers and the ability to 'adjust' an existing transaction. An 'adjustment' of a transaction is really a 'reversal' of existing transaction followed by creation of a new transaction with the provided details.",
      "name": "Loan Transactions"
    },
    {
      "description": "The API concept of loans models the loan application process and the loan contract/monitoring process.\n\nField Descriptions\naccountNo\nThe account no. associated with this loan. Is auto generated if not provided at loan application creation time.\nexternalId\nA place to put an external reference for this loan e.g. The ID another system uses.\nIf provided, it must be unique.\nfundId\nOptional: For associating a loan with a given fund.\nloanOfficerId\nOptional: For associating a loan with a given staff member who is a loan officer.\nloanPurposeId\nOptional: For marking a loan with a given loan purpose option. Loan purposes are configurable and can be setup by system admin through code/code values screens.\nprincipal\nThe loan amount to be disbursed to through loan.\nloanTermFrequency\nThe length of loan term\nUsed like: loanTermFrequency loanTermFrequencyType\ne.g. 12 Months\nloanTermFrequencyType\nThe loan term period to use. Used like: loanTermFrequency loanTermFrequencyType\ne.g. 12 Months Example Values: 0=Days, 1=Weeks, 2=Months, 3=Years\nnumberOfRepayments\nNumber of installments to repay.\nUsed like: numberOfRepayments Every repaymentEvery repaymentFrequencyType\ne.g. 10 (repayments) Every 12 Weeks\nrepaymentEvery\nUsed like: numberOfRepayments Every repaymentEvery repaymentFrequencyType\ne.g. 10 (repayments) Every 12 Weeks\nrepaymentFrequencyType\nUsed like: numberOfRepayments Every repaymentEvery repaymentFrequencyType\ne.g. 10 (repayments) Every 12 Weeks \nExample Values: 0=Days, 1=Weeks, 2=Months\ninterestRatePerPeriod\nInterest Rate.\nUsed like: interestRatePerPeriod % interestRateFrequencyType - interestType\ne.g. 12.0000% Per year - Declining Balance\ninterestRateFrequencyType\nUsed like: interestRatePerPeriod% interestRateFrequencyType - interestType\ne.g. 12.0000% Per year - Declining Balance \nExample Values: 2=Per month, 3=Per year\ngraceOnPrincipalPayment\nOptional: Integer - represents the number of repayment periods that grace should apply to the principal component of a repayment period.\ngraceOnInterestPayment\nOptional: Integer - represents the number of repayment periods that grace should apply to the interest component of a repayment period. Interest is still calculated but offset to later repayment periods.\ngraceOnInterestCharged\nOptional: Integer - represents the number of repayment periods that should be interest-free.\ngraceOnArrearsAgeing\nOptional: Integer - Used in Arrears calculation to only take into account loans that are more than graceOnArrearsAgeing days overdue.\ninterestChargedFromDate\nOptional: Date - The date from with interest is to start being charged.\nexpectedDisbursementDate\nThe proposed disbursement date of the loan so a proposed repayment schedule can be provided.\nsubmittedOnDate\nThe date the loan application was submitted by applicant.\nlinkAccountId\nThe Savings Account id for linking with loan account for payments.\namortizationType\nExample Values: 0=Equal principle payments, 1=Equal installments\ninterestType\nUsed like: interestRatePerPeriod% interestRateFrequencyType - interestType\ne.g. 12.0000% Per year - Declining Balance \nExample Values: 0=Declining Balance, 1=Flat\ninterestCalculationPeriodType\nExample Values: 0=Daily, 1=Same as repayment period\nallowPartialPeriodInterestCalculation\nThis value will be supported along with interestCalculationPeriodType as Same as repayment period to calculate interest for partial periods. Example: Interest charged from is 5th of April , Principal is 10000 and interest is 1% per month then the interest will be (10000 * 1%)* (25/30) , it calculates for the month first then calculates exact periods between start date and end date(can be a decimal)\ninArrearsTolerance\nThe amount that can be 'waived' at end of all loan payments because it is too small to worry about.\nThis is also the tolerance amount assessed when determining if a loan is in arrears.\ntransactionProcessingStrategyCode\nAn enumeration that indicates the type of transaction processing strategy to be used. This relates to functionality that is also known as Payment Application Logic.\nA number of out of the box approaches exist, some are custom to specific MFIs, some are more general and indicate the order in which payments are processed.\n\nRefer to the Payment Application Logic / Transaction Processing Strategy section in the appendix for more detailed overview of each available payment application logic provided out of the box.\n\nList of current approaches:\n1 = Mifos style (Similar to Old Mifos)\n2 = Heavensfamily (Custom MFI approach)\n3 = Creocore (Custom MFI approach)\n4 = RBI (India)\n5 = Principal Interest Penalties Fees Order\n6 = Interest Principal Penalties Fees Order\n7 = Early Payment Strategy\nloanType\nTo represent different type of loans.\nAt present there are three type of loans are supported. \nAvailable loan types:\nindividual: Loan given to individual member\ngroup: Loan given to group as a whole\njlg: Joint liability group loan given to members in a group on individual basis. JLG loan can be given to one or more members in a group.\nrecalculationRestFrequencyDate\nSpecifies rest frequency start date for interest recalculation. This date must be before or equal to disbursement date\nrecalculationCompoundingFrequencyDate\nSpecifies compounding frequency start date for interest recalculation. This date must be equal to disbursement date",
      "name": "Loans"
    },
    {
      "description": "API to enable clients to retrieve Loan states in a specific point in time",
      "name": "LoansPointInTime"
    },
    {
      "description": "internal loan testing API. This API should be disabled in production!!!",
      "name": "Progressive Loan"
    },
    {
      "description": "Manage loan originator details for revenue sharing and reporting",
      "name": "Loan Originators"
    },
    {
      "description": "Fetch loan originator details for a specific working capital loan",
      "name": "Working Capital Loan Originators"
    },
    {
      "description": "A Loan product is a template that is used when creating a loan. Much of the template definition can be overridden during loan creation.",
      "name": "Loan Products"
    },
    { "description": "Loan product basic details to be listed", "name": "Loan Products Details" },
    {
      "description": "Notes API allows to enter notes for supported resources.\n",
      "name": "Notes"
    },
    { "description": "This defines the payment type", "name": "Payment Type" },
    { "description": "Repay with post dated checks", "name": "repayment with post dated checks" },
    {
      "description": "Fixed Deposit accounts are instances of a praticular fixed deposit product created. An application process around the creation of accounts is also supported.",
      "name": "Fixed Deposit Account"
    },
    {
      "description": "This is one of the advanced term deposit product offered by MFI's. The Fixed Deposit Products (aka FD) product offerings are modeled using this API.\n\nThe FD products are deposit accounts which are held for a fixed term – like 1 year, 2 years etc.\n\nWhen creating fixed deposit accounts, the details from the fixed deposit product are used to auto fill details of the fixed deposit account application process.",
      "name": "Fixed Deposit Product"
    },
    {
      "description": "Transactions possible on a recurring deposit account.",
      "name": "Recurring Deposit Account Transactions"
    },
    {
      "description": "Recurring Deposit accounts are instances of a praticular recurring deposit product created. An application process around the creation of accounts is also supported.",
      "name": "Recurring Deposit Account"
    },
    {
      "description": "Recurring Deposits are a special kind of Term Deposits offered by MFI's. The Recurring Deposit Products (aka RD) product offerings are modeled using this API.\n\nRecurring Deposits help people with regular incomes to deposit a fixed amount every month (specified recurring frequency) into their Recurring Deposit account.\n\nWhen creating recurring deposit accounts, the details from the recurring deposit product are used to auto fill details of the recurring deposit account application process.",
      "name": "Recurring Deposit Product"
    },
    {
      "description": "Its typical for MFIs to add maintenance and operating charges. They can be either Fees or Penalties.\n\nSavings Charges are instances of Charges and represent either fees and penalties for savings products. Refer Charges for documentation of the various properties of a charge, Only additional properties ( specific to the context of a Charge being associated with a Savings account) are described here",
      "name": "Savings Charges"
    },
    {
      "description": "Savings accounts are instances of a particular savings product created for an individual or group. An application process around the creation of accounts is also supported.",
      "name": "Savings Account"
    },
    {
      "description": "An MFIs savings product offerings are modeled using this API.\nWhen creating savings accounts, the details from the savings product are used to auto fill details of the savings account application process.",
      "name": "Savings Product"
    },
    {
      "description": "V2 endpoint that always returns a paged response (totalFilteredRecords + pageItems) for fixed deposit accounts, removing the ambiguous paged response typing of the v1 endpoint.",
      "name": "FixedDepositAccountsV2"
    },
    {
      "description": "V2 endpoint that always returns a paged response (totalFilteredRecords + pageItems) for recurring deposit accounts, removing the ambiguous paged response typing of the v1 endpoint.",
      "name": "RecurringDepositAccountsV2"
    },
    {
      "description": "Search API allows to search scoped resources clients, loans and groups on specified fields.",
      "name": "Search API"
    },
    { "description": "This defines the Tax Components", "name": "Tax Components" },
    { "description": "This defines the Tax Group", "name": "Tax Group" },
    {
      "description": "Internal WCL testing API. This API should be disabled in production!",
      "name": "Working Capital Loans"
    },
    {
      "description": "Manages breach pause, resume, reschedule, reset, undo reset, disable and enable actions for Working Capital loans",
      "name": "Working Capital Loan Breach Actions"
    },
    {
      "description": "Manages breach schedule periods for Working Capital loans",
      "name": "Working Capital Loan Breach Schedule"
    },
    {
      "description": "Manages Charges for Working Capital loans",
      "name": "Working Capital Loan Charges"
    },
    {
      "description": "Manages delinquency pause, resume, reschedule, disable and enable actions for Working Capital loans",
      "name": "Working Capital Loan Delinquency Actions"
    },
    {
      "description": "Manages delinquency range schedule periods for Working Capital loans",
      "name": "Working Capital Loan Delinquency Range Schedule"
    },
    {
      "description": "Manages near breach actions for Working Capital loans",
      "name": "Working Capital Loan Near Breach Actions"
    },
    {
      "description": "Working Capital Loan Transactions (e.g. disbursements).",
      "name": "Working Capital Loan Transactions"
    },
    { "description": "Working Capital Breach", "name": "Working Capital Breach" },
    { "description": "Working Capital Near Breach", "name": "Working Capital Near Breach" },
    {
      "description": "A Working Capital Loan Product is a template that is used when creating a Working Capital loan. This is a separate product type from standard loan products.",
      "name": "Working Capital Loan Products"
    },
    {
      "description": "The KiKé Group SPM API provides the ability to create custom surveys to collect social performance measurentment data or any additional questionnaire a financial institute want to collect.",
      "name": "SPM API - LookUp Table"
    },
    {
      "description": "User Generated Documents(alternatively, Templates) are used for end-user features such as custom user defined document generation (AKA UGD). They are based on {{ moustache }} templates. Think of them as a sort of built-in 'mail merge' functionality\nUser Generated Documents (and other types of templates) can aggregate data from several KiKé Group back-end API calls via mappers. Mappers can even access non-KiKé Group REST services from other servers. UGDs can render such data in tables, show images, etc. TBD: Please have a look at some of the Example UGDs included in KiKé Group (or the Wiki page, for now.).\nUGDs can be assigned to an entity like client or loan and be of a type like Document or SMS. The entity and type of a UGD is only there for the convenience of user agents (UIs), in order to know where to show UGDs for the user (i.e. which tab). The Template Engine back-end runner does not actually need this metadata.",
      "name": "templates"
    },
    {
      "description": "APIs for password management operations including forgot password functionality.",
      "name": "Password Management"
    },
    {
      "description": "This API enables management of password policy for user administration.\n\nThere is no KiKé Group functionality for creating a validation policy. The validation policies come pre-installed.\n\nValidation policies may be updated",
      "name": "Password preferences"
    },
    {
      "description": "An API capability to support management of application permissions for user administration.\n\nThere is no KiKé Group functionality for creating or deleting permissions. Permissions come pre-installed.\n\nPermissions are not updated, except in the case of enabling or disabling non-read transactions for Maker Checker functionality",
      "name": "Permissions"
    },
    {
      "description": "An API capability to support management of application roles for user administration.",
      "name": "Roles"
    },
    {
      "description": "An API capability to support administration of application users.",
      "name": "Users"
    }
  ],
  "paths": {
    "/application.wadl": {
      "get": {
        "operationId": "getWadl",
        "responses": {
          "default": {
            "content": { "application/vnd.sun.wadl+xml": {}, "application/xml": {} },
            "description": "default response"
          }
        }
      }
    },
    "/application.wadl/{path}": {
      "get": {
        "operationId": "getExternalGrammar",
        "parameters": [
          { "in": "path", "name": "path", "required": true, "schema": { "type": "string" } }
        ],
        "responses": {
          "default": { "content": { "application/xml": {} }, "description": "default response" }
        }
      }
    },
    "/v1/CreditBureauConfiguration": {
      "get": {
        "operationId": "getCreditBureau",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      }
    },
    "/v1/CreditBureauConfiguration/config/{organisationCreditBureauId}": {
      "get": {
        "operationId": "getConfiguration",
        "parameters": [
          {
            "in": "path",
            "name": "organisationCreditBureauId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      }
    },
    "/v1/CreditBureauConfiguration/configuration/{configurationId}": {
      "put": {
        "operationId": "updateCreditBureauConfiguration",
        "parameters": [
          {
            "in": "path",
            "name": "configurationId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      }
    },
    "/v1/CreditBureauConfiguration/configuration/{creditBureauId}": {
      "post": {
        "operationId": "createCreditBureauConfiguration",
        "parameters": [
          {
            "in": "path",
            "name": "creditBureauId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      }
    },
    "/v1/CreditBureauConfiguration/loanProduct": {
      "get": {
        "operationId": "fetchLoanProducts",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      }
    },
    "/v1/CreditBureauConfiguration/loanProduct/{loanProductId}": {
      "get": {
        "operationId": "fetchMappingByLoanProductId",
        "parameters": [
          {
            "in": "path",
            "name": "loanProductId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      }
    },
    "/v1/CreditBureauConfiguration/mappings": {
      "get": {
        "operationId": "getCreditBureauLoanProductMapping",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      },
      "put": {
        "operationId": "updateCreditBureauLoanProductMapping",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      }
    },
    "/v1/CreditBureauConfiguration/mappings/{organisationCreditBureauId}": {
      "post": {
        "operationId": "createCreditBureauLoanProductMapping",
        "parameters": [
          {
            "in": "path",
            "name": "organisationCreditBureauId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      }
    },
    "/v1/CreditBureauConfiguration/organisationCreditBureau": {
      "get": {
        "operationId": "getOrganisationCreditBureau",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      },
      "put": {
        "operationId": "updateCreditBureau",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      }
    },
    "/v1/CreditBureauConfiguration/organisationCreditBureau/{organisationCreditBureauId}": {
      "post": {
        "operationId": "addOrganisationCreditBureau",
        "parameters": [
          {
            "in": "path",
            "name": "organisationCreditBureauId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Configuration"]
      }
    },
    "/v1/accountingrules": {
      "get": {
        "description": "Returns the list of defined accounting rules.\n\nExample Requests:\n\naccountingrules",
        "operationId": "retrieveAllAccountingRules",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/AccountingRuleData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Accounting Rules",
        "tags": ["Accounting Rules"]
      },
      "post": {
        "description": "Define a new Accounting rule.\n\nMandatory Fields\nname, officeId,\naccountToDebit OR debitTags,\naccountToCredit OR creditTags.\n\nOptional Fields\ndescription",
        "operationId": "createAccountingRule",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/AccountRuleRequest" } }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostAccountingRulesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create/Define a Accounting rule",
        "tags": ["Accounting Rules"]
      }
    },
    "/v1/accountingrules/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\nExample Request:\n\naccountingrules/template",
        "operationId": "retrieveTemplateAccountingRule",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/AccountingRuleData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Accounting Rule Details Template",
        "tags": ["Accounting Rules"],
        "x-alternative-operation-id": "retrieveTemplate_1"
      }
    },
    "/v1/accountingrules/{accountingRuleId}": {
      "delete": {
        "description": "Deletes a Accounting rule.",
        "operationId": "deleteAccountingRule",
        "parameters": [
          {
            "description": "accountingRuleId",
            "in": "path",
            "name": "accountingRuleId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteAccountingRulesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Accounting Rule",
        "tags": ["Accounting Rules"]
      },
      "get": {
        "description": "Returns the details of a defined Accounting rule.\n\nExample Requests:\n\naccountingrules/1",
        "operationId": "retrieveOneAccountingRule",
        "parameters": [
          {
            "description": "accountingRuleId",
            "in": "path",
            "name": "accountingRuleId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/AccountingRuleData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a Accounting rule",
        "tags": ["Accounting Rules"],
        "x-alternative-operation-id": "retreiveAccountingRule"
      },
      "put": {
        "description": "Updates the details of a Accounting rule.",
        "operationId": "updateAccountingRule",
        "parameters": [
          {
            "description": "accountingRuleId",
            "in": "path",
            "name": "accountingRuleId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/AccountRuleRequest" } }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutAccountingRulesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Accounting Rule",
        "tags": ["Accounting Rules"]
      }
    },
    "/v1/accountnumberformats": {
      "get": {
        "description": "Example Requests:\n\naccountnumberformats\n\n\naccountnumberformats?fields=accountType,prefixType",
        "operationId": "retrieveAllAccountNumberFormats",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetAccountNumberFormatsIdResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Account number formats",
        "tags": ["Account number format"],
        "x-alternative-operation-id": "retrieveAll_3"
      },
      "post": {
        "description": "Note: You may associate a single Account number format for a given account type\nMandatory Fields for Account number formats\naccountType",
        "operationId": "createAccountNumberFormat",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostAccountNumberFormatsRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostAccountNumberFormatsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create an Account number format",
        "tags": ["Account number format"],
        "x-alternative-operation-id": "create"
      }
    },
    "/v1/accountnumberformats/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\naccountnumberformats/template",
        "operationId": "retrieveTemplateAccountNumberFormat",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetAccountNumberFormatsResponseTemplate" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Account number format Template",
        "tags": ["Account number format"],
        "x-alternative-operation-id": "retrieveTemplate_2"
      }
    },
    "/v1/accountnumberformats/{accountNumberFormatId}": {
      "delete": {
        "description": "Note: Account numbers created while this format was active would remain unchanged.",
        "operationId": "deleteAccountNumberFormat",
        "parameters": [
          {
            "description": "accountNumberFormatId",
            "in": "path",
            "name": "accountNumberFormatId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteAccountNumberFormatsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete an Account number format",
        "tags": ["Account number format"],
        "x-alternative-operation-id": "delete"
      },
      "get": {
        "description": "Example Requests:\n\naccountnumberformats/1\n\n\naccountnumberformats/1?template=true\n\n\naccountnumberformats/1?fields=accountType,prefixType",
        "operationId": "retrieveOneAccountNumberFormat",
        "parameters": [
          {
            "description": "accountNumberFormatId",
            "in": "path",
            "name": "accountNumberFormatId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetAccountNumberFormatsIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve an Account number format",
        "tags": ["Account number format"],
        "x-alternative-operation-id": "retrieveOne"
      },
      "put": {
        "operationId": "updateAccountNumberFormat",
        "parameters": [
          {
            "description": "accountNumberFormatId",
            "in": "path",
            "name": "accountNumberFormatId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutAccountNumberFormatsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutAccountNumberFormatsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update an Account number format",
        "tags": ["Account number format"],
        "x-alternative-operation-id": "update_1"
      }
    },
    "/v1/accounts/{type}": {
      "get": {
        "description": "Lists share applications/accounts\n\nExample Requests:\n\nshareaccount",
        "operationId": "retrieveAllShareAccounts",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetAccountsTypeResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List share applications/accounts",
        "tags": ["Share Account"],
        "x-alternative-operation-id": "retrieveAllAccounts_1"
      },
      "post": {
        "description": "Submits new share application\n\nMandatory Fields: clientId, productId, submittedDate, savingsAccountId, requestedShares, applicationDate\n\nOptional Fields: accountNo, externalId\n\nInherited from Product (if not provided): minimumActivePeriod, minimumActivePeriodFrequencyType, lockinPeriodFrequency, lockinPeriodFrequencyType",
        "operationId": "createShareAccount",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/AccountRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostAccountsTypeResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Submit new share application",
        "tags": ["Share Account"],
        "x-alternative-operation-id": "createAccount"
      }
    },
    "/v1/accounts/{type}/downloadtemplate": {
      "get": {
        "operationId": "getShareAccountTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } },
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "summary": "Download share accounts bulk imports template",
        "tags": ["Share Account"],
        "x-alternative-operation-id": "getSharedAccountsTemplate"
      }
    },
    "/v1/accounts/{type}/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\naccounts/share/template?clientId=1\n\n\naccounts/share/template?clientId=1&productId=1",
        "operationId": "retrieveTemplateShareAccount",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "clientId",
            "in": "query",
            "name": "clientId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "productId",
            "in": "query",
            "name": "productId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetAccountsTypeTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Share Account Template",
        "tags": ["Share Account"],
        "x-alternative-operation-id": "template_7"
      }
    },
    "/v1/accounts/{type}/uploadtemplate": {
      "post": {
        "operationId": "postShareAccountTemplate",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload shared accounts template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "integer", "format": "int64" } } },
            "description": "default response"
          }
        },
        "summary": "Upload share accounts bulk imports data",
        "tags": ["Share Account"],
        "x-alternative-operation-id": "postSharedAccountsTemplate"
      }
    },
    "/v1/accounts/{type}/{accountId}": {
      "get": {
        "description": "Retrieves a share application/account\n\nExample Requests :\n\nshareaccount/1",
        "operationId": "retrieveOneShareAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetAccountsTypeAccountIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a share application/account",
        "tags": ["Share Account"],
        "x-alternative-operation-id": "retrieveAccount"
      },
      "post": {
        "description": "Approve share application:\n\nApproves share application so long as its in 'Submitted and pending approval' state.\n\nUndo approval share application:\n\nWill move 'approved' share application back to 'Submitted and pending approval' state.\n\nReject share application:\n\nRejects share application so long as its in 'Submitted and pending approval' state.\n\nActivate a share account:\n\nResults in an approved share application being converted into an 'active' share account.\n\nClose a share account:\n\nResults in an Activated share application being converted into an 'closed' share account.\n\nclosedDate is closure date of share account\n\nMandatory Fields: dateFormat,locale,closedDate\n\nApply additional shares on a share account:\n\nrequestedDate is requsted date of share purchase\n\nrequestedShares is number of shares to be purchase\n\nMandatory Fields: dateFormat,locale,requestedDate, requestedShares\n\nApprove additional shares request on a share account\n\nrequestedShares is Share purchase transaction ids\n\nMandatory Fields: requestedShares\n\nReject additional shares request on a share account:\n\nrequestedShares is Share purchase transaction ids\n\nMandatory Fields: requestedShares\n\nRedeem shares on a share account:\n\nResults redeem some/all shares from share account.\n\nrequestedDate is requsted date of shares redeem\n\nrequestedShares is number of shares to be redeemed\n\nMandatory Fields: dateFormat,locale,requestedDate,requestedShares\n\nShowing request/response for 'Reject additional shares request on a share account'",
        "operationId": "handleCommandsShareAccount",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostAccountsTypeAccountIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostAccountsTypeAccountIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Approve share application | Undo approval share application | Reject share application | Activate a share account | Close a share account | Apply additional shares on a share account | Approve additional shares request on a share account | Reject additional shares request on a share account | Redeem shares on a share account",
        "tags": ["Share Account"],
        "x-alternative-operation-id": "handleCommands_2"
      },
      "put": {
        "description": "Share 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. Specific api endpoints will be created to allow change of interest detail such as rate, compounding period, posting period etc",
        "operationId": "updateShareAccount",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutAccountsTypeAccountIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutAccountsTypeAccountIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modify a share application",
        "tags": ["Share Account"],
        "x-alternative-operation-id": "updateAccount"
      }
    },
    "/v1/accounttransfers": {
      "get": {
        "description": "Lists account's transfers\n\nExample Requests:\n\n\n\naccounttransfers",
        "operationId": "retrieveAllAccountTransfers",
        "parameters": [
          {
            "description": "externalId",
            "in": "query",
            "name": "externalId",
            "schema": { "type": "string" }
          },
          {
            "description": "offset",
            "in": "query",
            "name": "offset",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "example": "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": "accountDetailId",
            "in": "query",
            "name": "accountDetailId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetAccountTransfersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List account transfers",
        "tags": ["Account Transfers"],
        "x-alternative-operation-id": "retrieveAll_18"
      },
      "post": {
        "description": "Ability to create new transfer of monetary funds from one account to another.",
        "operationId": "createAccountTransfer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/AccountTransferRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostAccountTransfersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create new Transfer",
        "tags": ["Account Transfers"],
        "x-alternative-operation-id": "create_4"
      }
    },
    "/v1/accounttransfers/refundByTransfer": {
      "post": {
        "description": "Ability to refund an active loan by transferring to a savings account.",
        "operationId": "refundByTransfer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/AccountTransferRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostAccountTransfersRefundByTransferResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Refund of an Active Loan by Transfer",
        "tags": ["Account Transfers"],
        "x-alternative-operation-id": "templateRefundByTransferPost"
      }
    },
    "/v1/accounttransfers/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\n\n\nField Defaults\n\nAllowed Value Lists\n\nExample Requests:\n\n\n\naccounttransfers/template?fromAccountType=2&fromOfficeId=1\n\n\n\naccounttransfers/template?fromAccountType=2&fromOfficeId=1&fromClientId=1\n\n\n\naccounttransfers/template?fromClientId=1&fromAccountType=2&fromAccountId=1",
        "operationId": "retrieveTemplateAccountTransfer",
        "parameters": [
          {
            "in": "query",
            "name": "fromOfficeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "fromClientId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "fromAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "fromAccountType",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "in": "query",
            "name": "toOfficeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "toClientId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "toAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "toAccountType",
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetAccountTransfersTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Account Transfer Template",
        "tags": ["Account Transfers"],
        "x-alternative-operation-id": "template_5"
      }
    },
    "/v1/accounttransfers/templateRefundByTransfer": {
      "get": {
        "description": "Retrieves Refund of an Active Loan by Transfer TemplateExample Requests :\n\n\n\naccounttransfers/templateRefundByTransfer?fromAccountId=2&fromAccountType=1& toAccountId=1&toAccountType=2&toClientId=1&toOfficeId=1",
        "operationId": "retrieveTemplateRefundByTransfer",
        "parameters": [
          {
            "in": "query",
            "name": "fromOfficeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "fromClientId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "fromAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "fromAccountType",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "in": "query",
            "name": "toOfficeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "toClientId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "toAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "toAccountType",
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Refund of an Active Loan by Transfer Template",
        "tags": ["Account Transfers"],
        "x-alternative-operation-id": "templateRefundByTransfer"
      }
    },
    "/v1/accounttransfers/{accountTransferId}": {
      "post": {
        "description": "In case of command=`undo`: Ability to undo a transfer of monetary funds from one account to another.",
        "operationId": "accountTransferOperation",
        "parameters": [
          {
            "description": "accountTransferId",
            "in": "path",
            "name": "accountTransferId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Operation on active account transfer",
        "tags": ["Account Transfers"]
      }
    },
    "/v1/accounttransfers/{transferId}": {
      "get": {
        "description": "Retrieves account transfer\n\nExample Requests :\n\n\n\naccounttransfers/1",
        "operationId": "retrieveOneAccountTransfer",
        "parameters": [
          {
            "description": "transferId",
            "in": "path",
            "name": "transferId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetAccountTransfersPageItems" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve account transfer",
        "tags": ["Account Transfers"],
        "x-alternative-operation-id": "retrieveOne_9"
      }
    },
    "/v1/adhocquery": {
      "get": {
        "operationId": "retrieveAll_1",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AdHocData" } }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["AdhocQuery Api"],
        "x-alternative-operation-id": "retrieveAll_2"
      },
      "post": {
        "operationId": "createAdHocQuery",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/AdHocRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["AdhocQuery Api"]
      }
    },
    "/v1/adhocquery/template": {
      "get": {
        "operationId": "template",
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/AdHocData" } }
            },
            "description": "default response"
          }
        },
        "tags": ["AdhocQuery Api"]
      }
    },
    "/v1/adhocquery/{adHocId}": {
      "delete": {
        "operationId": "deleteAdHocQuery",
        "parameters": [
          {
            "description": "adHocId",
            "in": "path",
            "name": "adHocId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["AdhocQuery Api"]
      },
      "get": {
        "operationId": "retrieveAdHocQuery",
        "parameters": [
          {
            "description": "adHocId",
            "in": "path",
            "name": "adHocId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/AdHocData" } }
            },
            "description": "default response"
          }
        },
        "tags": ["AdhocQuery Api"]
      },
      "put": {
        "operationId": "update",
        "parameters": [
          {
            "description": "adHocId",
            "in": "path",
            "name": "adHocId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/AdHocRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["AdhocQuery Api"]
      }
    },
    "/v1/audits": {
      "get": {
        "description": "Get a 200 list of audits that match the criteria supplied and sorted by audit id in descending order, and are within the requestors' data scope. Also it supports pagination and sorting\n\nExample Requests:\n\naudits\n\naudits?fields=madeOnDate,maker,processingResult\n\naudits?makerDateTimeFrom=2013-03-25 08:00:00&makerDateTimeTo=2013-04-04 18:00:00\n\naudits?officeId=1\n\naudits?officeId=1&includeJson=true",
        "operationId": "retrieveAuditEntries",
        "parameters": [
          { "in": "query", "name": "actionName", "schema": { "type": "string" } },
          { "in": "query", "name": "entityName", "schema": { "type": "string" } },
          {
            "in": "query",
            "name": "resourceId",
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "makerId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "makerDateTimeFrom", "schema": { "type": "string" } },
          { "in": "query", "name": "makerDateTimeTo", "schema": { "type": "string" } },
          {
            "in": "query",
            "name": "checkerId",
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "checkerDateTimeFrom", "schema": { "type": "string" } },
          { "in": "query", "name": "checkerDateTimeTo", "schema": { "type": "string" } },
          { "in": "query", "name": "status", "schema": { "type": "string" } },
          { "in": "query", "name": "clientId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "loanId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "groupId", "schema": { "type": "integer", "format": "int64" } },
          {
            "in": "query",
            "name": "savingsAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "processingResult", "schema": { "type": "string" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } },
          { "in": "query", "name": "locale", "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": "paged",
            "in": "query",
            "name": "paged",
            "schema": { "type": "boolean" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "List Audits",
        "tags": ["Audits"]
      }
    },
    "/v1/audits/searchtemplate": {
      "get": {
        "description": "This is a convenience resource. It can be useful when building an Audit Search UI. \"appUsers\" are data scoped to the office/branch the requestor is associated with.\n\nExample Requests:\n\naudits/searchtemplate\naudits/searchtemplate?fields=actionNames",
        "operationId": "retrieveAuditSearchTemplate",
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/AuditSearchData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Audit Search Template",
        "tags": ["Audits"]
      }
    },
    "/v1/audits/{auditId}": {
      "get": {
        "description": "Example Requests:\n\naudits/20\naudits/20?fields=madeOnDate,maker,processingResult",
        "operationId": "retrieveAuditEntry",
        "parameters": [
          {
            "in": "path",
            "name": "auditId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/AuditData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve an Audit Entry",
        "tags": ["Audits"]
      }
    },
    "/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 HTTP Basic"]
      }
    },
    "/v1/batches": {
      "post": {
        "description": "The KiKé Group Batch API is also capable of executing all the requests in a single transaction, by setting a Query Parameter, \"enclosingTransaction=true\". So, if one or more of the requests in a batch returns an erroneous response all of the Data base transactions made by other successful requests will be rolled back.\n\nIf there has been a rollback in a transaction then a single response will be provided, with a '400' status code and a body consisting of the error details of the first failed request.",
        "operationId": "handleBatchRequests",
        "parameters": [
          {
            "description": "enclosingTransaction",
            "in": "query",
            "name": "enclosingTransaction",
            "schema": { "type": "boolean", "default": false }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": { "$ref": "#/components/schemas/BatchRequest" }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/BatchResponse" }
                }
              }
            },
            "description": "Success"
          }
        },
        "summary": "Batch requests in a single transaction",
        "tags": ["Batch API"]
      }
    },
    "/v1/businessdate": {
      "get": {
        "operationId": "getBusinessDates",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/BusinessDateResponse" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List all business dates",
        "tags": ["Business Date Management"]
      },
      "post": {
        "operationId": "updateBusinessDate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/BusinessDateUpdateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/BusinessDateUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update Business Date",
        "tags": ["Business Date Management"]
      }
    },
    "/v1/businessdate/{type}": {
      "get": {
        "operationId": "getBusinessDate",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/BusinessDateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a specific Business date",
        "tags": ["Business Date Management"]
      }
    },
    "/v1/caches": {
      "get": {
        "description": "Returns the list of caches.\n\nExample Requests:\n\ncaches\n",
        "operationId": "retrieveAll_2",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "$ref": "#/components/schemas/CacheData" } }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Cache Types",
        "tags": ["Cache"],
        "x-alternative-operation-id": "retrieveAll_4"
      },
      "put": {
        "description": "Switches the cache to chosen one.",
        "operationId": "switchCache",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/CacheSwitchRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CacheSwitchResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Switch Cache",
        "tags": ["Cache"]
      }
    },
    "/v1/centers": {
      "get": {
        "description": "The default implementation supports pagination and sorting with the default pagination size set to 200 records. The parameter limit with description -1 will return all entries.\n\nExample Requests:\n\n\n\ncenters\n\n\n\ncenters?fields=name,officeName,joinedDate\n\n\n\ncenters?offset=10&limit=50\n\n\n\ncenters?orderBy=name&sortOrder=DESC",
        "operationId": "retrieveAllCenters",
        "parameters": [
          {
            "description": "officeId",
            "in": "query",
            "name": "officeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "staffId",
            "in": "query",
            "name": "staffId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "externalId",
            "in": "query",
            "name": "externalId",
            "schema": { "type": "string" }
          },
          { "description": "name", "in": "query", "name": "name", "schema": { "type": "string" } },
          {
            "description": "underHierarchy",
            "in": "query",
            "name": "underHierarchy",
            "schema": { "type": "string" }
          },
          {
            "description": "paged",
            "in": "query",
            "name": "paged",
            "schema": { "type": "boolean" }
          },
          {
            "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": "meetingDate",
            "in": "query",
            "name": "meetingDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "description": "dateFormat",
            "in": "query",
            "name": "dateFormat",
            "schema": { "type": "string" }
          },
          {
            "description": "locale",
            "in": "query",
            "name": "locale",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetCentersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Centers",
        "tags": ["Centers"],
        "x-alternative-operation-id": "retrieveAll_23"
      },
      "post": {
        "description": "Creates a Center\n\nMandatory Fields: name, officeId, active, activationDate (if active=true)\n\nOptional Fields: externalId, staffId, groupMembers",
        "operationId": "createCenter",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/PostCentersRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostCentersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Center",
        "tags": ["Centers"],
        "x-alternative-operation-id": "create_7"
      }
    },
    "/v1/centers/downloadtemplate": {
      "get": {
        "operationId": "getBulkTemplateCenter",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "staffId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "summary": "Download Centers Bulk Template",
        "tags": ["Centers"],
        "x-alternative-operation-id": "getCentersTemplate"
      }
    },
    "/v1/centers/template": {
      "get": {
        "description": "Retrieves a Center Template\n\nExample Requests:\n\n\n\ncenters/template\n\n\n\ncenters/template?officeId=2",
        "operationId": "retrieveTemplateCenter",
        "parameters": [
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          },
          {
            "description": "officeId",
            "in": "query",
            "name": "officeId",
            "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/GetCentersTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Center Template",
        "tags": ["Centers"],
        "x-alternative-operation-id": "retrieveTemplate_6"
      }
    },
    "/v1/centers/uploadtemplate": {
      "post": {
        "operationId": "postBulkTemplateCenter",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload centers template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Upload Centers Bulk Template",
        "tags": ["Centers"],
        "x-alternative-operation-id": "postCentersTemplate"
      }
    },
    "/v1/centers/{centerId}": {
      "delete": {
        "description": "A Center can be deleted if it is in pending state and has no association - groups, loans or savings",
        "operationId": "deleteCenter",
        "parameters": [
          {
            "description": "centerId",
            "in": "path",
            "name": "centerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteCentersCenterIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Center",
        "tags": ["Centers"],
        "x-alternative-operation-id": "delete_10"
      },
      "get": {
        "description": "Retrieves a Center\n\nExample Requests:\n\n\n\ncenters/1\n\n\n\ncenters/1?associations=groupMembers",
        "operationId": "retrieveOneCenter",
        "parameters": [
          {
            "description": "centerId",
            "in": "path",
            "name": "centerId",
            "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/GetCentersCenterIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Center",
        "tags": ["Centers"],
        "x-alternative-operation-id": "retrieveOne_14"
      },
      "post": {
        "description": "Activate a Center:\n\nCenters can be created in a Pending state. This API exists to enable center activation. If the center happens to be already active, this API will result in an error.\n\nClose a Center:\n\nCenters can be closed if they don't have any non-closed groups or saving accounts. If the Center has any active groups or savings accounts, this API will result in an error.\n\nAssociate Groups:\n\nThis API allows associating existing groups to a center. The groups are listed from the office to which the center is associated. If group(s) is already associated with a center, this API will result in an error.\n\nDisassociate Groups:\n\nThis API allows to disassociate groups from a center.\n\nGenerate Collection Sheet:\n\nThis Api retrieves repayment details of all jlg loans under a center as on a specified meeting date.\n\nSave Collection Sheet:\n\nThis Api allows the loan officer to perform bulk repayments of JLG loans for a center on a given meeting date.\n\nShowing Request/Response for Close a Center",
        "operationId": "handleCommandsCenter",
        "parameters": [
          {
            "description": "centerId",
            "in": "path",
            "name": "centerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostCentersCenterIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostCentersCenterIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Activate a Center | Generate Collection Sheet | Save Collection Sheet | Close a Center | Associate Groups | Disassociate Groups",
        "tags": ["Centers"],
        "x-alternative-operation-id": "activate_2"
      },
      "put": {
        "description": "Updates a Center",
        "operationId": "updateCenter",
        "parameters": [
          {
            "description": "centerId",
            "in": "path",
            "name": "centerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutCentersCenterIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutCentersCenterIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Center",
        "tags": ["Centers"],
        "x-alternative-operation-id": "update_12"
      }
    },
    "/v1/centers/{centerId}/accounts": {
      "get": {
        "description": "An example of how a savings summary for a Center can be provided. This is requested in a specific use case of the reference application.\n\nIt is quite reasonable to add resources like this to simplify User Interface development.\n\n\n\nExample Requests:\n\n\n\ncenters/9/accounts",
        "operationId": "retrieveGroupAccountsCenter",
        "parameters": [
          {
            "description": "centerId",
            "in": "path",
            "name": "centerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetCentersCenterIdAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Center accounts overview",
        "tags": ["Centers"],
        "x-alternative-operation-id": "retrieveGroupAccount"
      }
    },
    "/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"]
      },
      "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"]
      }
    },
    "/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"
      }
    },
    "/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"]
      },
      "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"
      },
      "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"]
      }
    },
    "/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": ["Clients Address"],
        "x-alternative-operation-id": "getAddressesTemplate"
      }
    },
    "/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": ["Clients Address"],
        "x-alternative-operation-id": "getAddresses_1"
      },
      "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": ["Clients Address"],
        "x-alternative-operation-id": "addClientAddress"
      },
      "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": ["Clients Address"]
      }
    },
    "/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": ["Client"],
        "x-alternative-operation-id": "retrieveAll_21"
      },
      "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": ["Client"],
        "x-alternative-operation-id": "create_6"
      }
    },
    "/v1/clients/downloadtemplate": {
      "get": {
        "operationId": "getClientTemplate",
        "parameters": [
          { "in": "query", "name": "legalFormType", "schema": { "type": "string" } },
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "staffId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "summary": "Download client template for bulk import",
        "tags": ["Client"]
      }
    },
    "/v1/clients/external-id/{clientExternalId}/transactions": {
      "get": {
        "description": "The list capability of client transaction can support pagination.\n\nExample Requests:\n\nclients/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions\n\nclients/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?offset=10&limit=50",
        "operationId": "retrieveAllClientTransactionsByClientExternalId",
        "parameters": [
          {
            "description": "clientExternalId",
            "in": "path",
            "name": "clientExternalId",
            "required": true,
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetClientsClientIdTransactionsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Client Transactions",
        "tags": ["Client Transaction"],
        "x-alternative-operation-id": "retrieveAllClientTransactions_1"
      }
    },
    "/v1/clients/external-id/{clientExternalId}/transactions/external-id/{transactionExternalId}": {
      "get": {
        "description": "Example Requests:\nclients/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854\n\n\nclients/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854?fields=id,officeName",
        "operationId": "retrieveClientTransactionByClientAndTransactionExternalId",
        "parameters": [
          {
            "description": "clientExternalId",
            "in": "path",
            "name": "clientExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "transactionExternalId",
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetClientsClientIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Client Transaction",
        "tags": ["Client Transaction"],
        "x-alternative-operation-id": "retrieveClientTransaction_3"
      },
      "post": {
        "description": "Undoes a Client Transaction",
        "operationId": "undoClientTransactionByClientAndTransactionExternalId",
        "parameters": [
          {
            "description": "clientExternalId",
            "in": "path",
            "name": "clientExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "transactionExternalId",
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostClientsClientIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Undo a Client Transaction",
        "tags": ["Client Transaction"],
        "x-alternative-operation-id": "undoClientTransaction_3"
      }
    },
    "/v1/clients/external-id/{clientExternalId}/transactions/{transactionId}": {
      "get": {
        "description": "Example Requests:\nclients/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions/1\n\n\nclients/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions/1?fields=id,officeName",
        "operationId": "retrieveClientTransactionByClientExternalId",
        "parameters": [
          {
            "description": "clientExternalId",
            "in": "path",
            "name": "clientExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "transactionId",
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetClientsClientIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Client Transaction",
        "tags": ["Client Transaction"],
        "x-alternative-operation-id": "retrieveClientTransaction_2"
      },
      "post": {
        "description": "Undoes a Client Transaction",
        "operationId": "undoClientTransactionByClientExternalId",
        "parameters": [
          {
            "description": "clientExternalId",
            "in": "path",
            "name": "clientExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "transactionId",
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostClientsClientIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Undo a Client Transaction",
        "tags": ["Client Transaction"],
        "x-alternative-operation-id": "undoClientTransaction_2"
      }
    },
    "/v1/clients/external-id/{externalId}": {
      "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": "deleteClientByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteClientsClientIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Client",
        "tags": ["Client"],
        "x-alternative-operation-id": "delete_9"
      },
      "get": {
        "description": "Example Requests:\n\nclients/123-456\n\n\nclients/123-456?template=true\n\n\nclients/123-456?fields=id,displayName,officeName",
        "operationId": "retrieveOneClientByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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 by External Id",
        "tags": ["Client"],
        "x-alternative-operation-id": "retrieveOne_12"
      },
      "post": {
        "description": "Activate a Client:\n\nClients can be created in a Pending state. This API exists to enable client activation (for when a client becomes an approved member of the financial Institution).\n\nIf the client happens to be already active this API will result in an error.\n\nClose a Client:\n\nClients can be closed if they do not have any non-closed loans/savingsAccount. This API exists to close a client .\n\nIf the client have any active loans/savingsAccount this API will result in an error.\n\nReject a Client:\n\nClients can be rejected when client is in pending for activation status.\n\nIf the client is any other status, this API throws an error.\n\nMandatory Fields: rejectionDate, rejectionReasonId\n\nWithdraw a Client:\n\nClient applications can be withdrawn when client is in a pending for activation status.\n\nIf the client is any other status, this API throws an error.\n\nMandatory Fields: withdrawalDate, withdrawalReasonId\n\nReactivate a Client: Clients can be reactivated after they have been closed.\n\nTrying to reactivate a client in any other state throws an error.\n\nMandatory Fields: reactivationDate\n\nUndoReject a Client:\n\nClients can be reactivated after they have been rejected.\n\nTrying to reactivate a client in any other state throws an error.\n\nMandatory Fields: reopenedDateUndoWithdraw a Client:\n\nClients can be reactivated after they have been withdrawn.\n\nTrying to reactivate a client in any other state throws an error.\n\nMandatory Fields: reopenedDate\n\nAssign a Staff:\n\nAllows you to assign a Staff for existed Client.\n\nThe selected Staff should belong to the same office (or an officer higher up in the hierarchy) as the Client he manages.\n\nUnassign a Staff:\n\nAllows you to unassign the Staff assigned to a Client.\n\nUpdate Default Savings Account:\n\nAllows you to modify or assign a default savings account for an existing Client.\n\nThe selected savings account should be one among the existing savings account for a particular customer.\n\nPropose a Client Transfer:\n\nAllows you to propose the transfer of a Client to a different Office.\n\nWithdraw a Client Transfer:\n\nAllows you to withdraw the proposed transfer of a Client to a different Office.\n\nWithdrawal can happen only if the destination Branch (to which the transfer was proposed) has not already accepted the transfer proposal\n\nReject a Client Transfer:\n\nAllows the Destination Branch to reject the proposed Client Transfer.\n\nAccept a Client Transfer:\n\nAllows the Destination Branch to accept the proposed Client Transfer.\n\nThe destination branch may also choose to link this client to a group (in which case, any existing active JLG loan of the client is rescheduled to match the meeting frequency of the group) and loan Officer at the time of accepting the transfer\n\nPropose and Accept a Client Transfer:\n\nAbstraction over the Propose and Accept Client Transfer API's which enable a user with Data Scope over both the Target and Destination Branches to directly transfer a Client to the destination Office.\n\nShowing request/response for 'Reject a Client Transfer'",
        "operationId": "handleCommandClientByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostClientsClientIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostClientsClientIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Activate a Client | Close a Client | Reject a Client | Withdraw a Client | Reactivate a Client | UndoReject a Client | UndoWithdraw a Client | Assign a Staff | Unassign a Staff | Update Default Savings Account | Propose a Client Transfer | Withdraw a Client Transfer | Reject a Client Transfer | Accept a Client Transfer | Propose and Accept a Client Transfer",
        "tags": ["Client"],
        "x-alternative-operation-id": "applyCommand"
      },
      "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": "updateClientByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "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 using the External Id",
        "tags": ["Client"],
        "x-alternative-operation-id": "update_11"
      }
    },
    "/v1/clients/external-id/{externalId}/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/123-456/accounts\n\nclients/123-456/accounts?fields=loanAccounts,savingsAccounts",
        "operationId": "retrieveAllClientAccountsByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetClientsClientIdAccountsResponse" }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad Request" }
        },
        "summary": "Retrieve client accounts overview",
        "tags": ["Client"],
        "x-alternative-operation-id": "retrieveAssociatedAccounts_1"
      }
    },
    "/v1/clients/external-id/{externalId}/obligeedetails": {
      "get": {
        "description": "Retrieve client obligee details using the client external Id",
        "operationId": "retrieveClientObligeeDetailsByExternalId",
        "parameters": [
          { "in": "path", "name": "externalId", "required": true, "schema": { "type": "string" } }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetClientObligeeDetailsResponse" }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad Request" }
        },
        "summary": "Retrieve client obligee details",
        "tags": ["Client"],
        "x-alternative-operation-id": "retrieveObligeeDetails_1"
      }
    },
    "/v1/clients/external-id/{externalId}/transferproposaldate": {
      "get": {
        "description": "Retrieve client transfer template using the client external Id",
        "operationId": "retrieveClientTransferTemplateByExternalId",
        "parameters": [
          { "in": "path", "name": "externalId", "required": true, "schema": { "type": "string" } }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetClientTransferProposalDateResponse" }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad Request" }
        },
        "summary": "Retrieve client transfer template",
        "tags": ["Client"],
        "x-alternative-operation-id": "retrieveTransferTemplate_1"
      }
    },
    "/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": ["Client"],
        "x-alternative-operation-id": "retrieveTemplate_5"
      }
    },
    "/v1/clients/uploadtemplate": {
      "post": {
        "operationId": "postClientTemplate",
        "parameters": [{ "in": "query", "name": "legalFormType", "schema": { "type": "string" } }],
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload client template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Upload client template for bulk import",
        "tags": ["Client"]
      }
    },
    "/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": ["Client"],
        "x-alternative-operation-id": "delete_8"
      },
      "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": ["Client"],
        "x-alternative-operation-id": "retrieveOne_11"
      },
      "post": {
        "description": "Activate a Client:\n\nClients can be created in a Pending state. This API exists to enable client activation (for when a client becomes an approved member of the financial Institution).\n\nIf the client happens to be already active this API will result in an error.\n\nClose a Client:\n\nClients can be closed if they do not have any non-closed loans/savingsAccount. This API exists to close a client .\n\nIf the client have any active loans/savingsAccount this API will result in an error.\n\nReject a Client:\n\nClients can be rejected when client is in pending for activation status.\n\nIf the client is any other status, this API throws an error.\n\nMandatory Fields: rejectionDate, rejectionReasonId\n\nWithdraw a Client:\n\nClient applications can be withdrawn when client is in a pending for activation status.\n\nIf the client is any other status, this API throws an error.\n\nMandatory Fields: withdrawalDate, withdrawalReasonId\n\nReactivate a Client: Clients can be reactivated after they have been closed.\n\nTrying to reactivate a client in any other state throws an error.\n\nMandatory Fields: reactivationDate\n\nUndoReject a Client:\n\nClients can be reactivated after they have been rejected.\n\nTrying to reactivate a client in any other state throws an error.\n\nMandatory Fields: reopenedDateUndoWithdraw a Client:\n\nClients can be reactivated after they have been withdrawn.\n\nTrying to reactivate a client in any other state throws an error.\n\nMandatory Fields: reopenedDate\n\nAssign a Staff:\n\nAllows you to assign a Staff for existed Client.\n\nThe selected Staff should belong to the same office (or an officer higher up in the hierarchy) as the Client he manages.\n\nUnassign a Staff:\n\nAllows you to unassign the Staff assigned to a Client.\n\nUpdate Default Savings Account:\n\nAllows you to modify or assign a default savings account for an existing Client.\n\nThe selected savings account should be one among the existing savings account for a particular customer.\n\nPropose a Client Transfer:\n\nAllows you to propose the transfer of a Client to a different Office.\n\nWithdraw a Client Transfer:\n\nAllows you to withdraw the proposed transfer of a Client to a different Office.\n\nWithdrawal can happen only if the destination Branch (to which the transfer was proposed) has not already accepted the transfer proposal\n\nReject a Client Transfer:\n\nAllows the Destination Branch to reject the proposed Client Transfer.\n\nAccept a Client Transfer:\n\nAllows the Destination Branch to accept the proposed Client Transfer.\n\nThe destination branch may also choose to link this client to a group (in which case, any existing active JLG loan of the client is rescheduled to match the meeting frequency of the group) and loan Officer at the time of accepting the transfer\n\nPropose and Accept a Client Transfer:\n\nAbstraction over the Propose and Accept Client Transfer API's which enable a user with Data Scope over both the Target and Destination Branches to directly transfer a Client to the destination Office.\n\nShowing request/response for 'Reject a Client Transfer'",
        "operationId": "handleCommandClient",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostClientsClientIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostClientsClientIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Activate a Client | Close a Client | Reject a Client | Withdraw a Client | Reactivate a Client | UndoReject a Client | UndoWithdraw a Client | Assign a Staff | Unassign a Staff | Update Default Savings Account | Propose a Client Transfer | Withdraw a Client Transfer | Reject a Client Transfer | Accept a Client Transfer | Propose and Accept a Client Transfer",
        "tags": ["Client"],
        "x-alternative-operation-id": "activate_1"
      },
      "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": ["Client"],
        "x-alternative-operation-id": "update_10"
      }
    },
    "/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": ["Client"],
        "x-alternative-operation-id": "retrieveAssociatedAccounts"
      }
    },
    "/v1/clients/{clientId}/charges": {
      "get": {
        "description": "The list capability of client charges supports pagination.Example Requests:\nclients/1/charges\n\nclients/1/charges?offset=0&limit=5",
        "operationId": "retrieveAllClientCharges",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "chargeStatus",
            "in": "query",
            "name": "chargeStatus",
            "schema": { "type": "string", "default": "all" }
          },
          {
            "description": "pendingPayment",
            "in": "query",
            "name": "pendingPayment",
            "schema": { "type": "boolean" }
          },
          {
            "description": "limit",
            "in": "query",
            "name": "limit",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "offset",
            "in": "query",
            "name": "offset",
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetClientsClientIdChargesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Client Charges",
        "tags": ["Client Charges"]
      },
      "post": {
        "description": " This API associates a Client charge with an implicit Client account\nMandatory Fields : \nchargeId and dueDate  \nOptional Fields : \namount",
        "operationId": "createClientCharge",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostClientsClientIdChargesRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostClientsClientIdChargesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Add Client Charge",
        "tags": ["Client Charges"],
        "x-alternative-operation-id": "applyClientCharge"
      }
    },
    "/v1/clients/{clientId}/charges/template": {
      "get": {
        "operationId": "retrieveTemplateClientCharge",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve client charge template",
        "tags": ["Client Charges"],
        "x-alternative-operation-id": "retrieveTemplate_4"
      }
    },
    "/v1/clients/{clientId}/charges/{chargeId}": {
      "delete": {
        "description": "Deletes a Client Charge on which no transactions have taken place (either payments or waivers). ",
        "operationId": "deleteClientCharge",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "chargeId",
            "in": "path",
            "name": "chargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteClientsClientIdChargesChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Client Charge",
        "tags": ["Client Charges"]
      },
      "get": {
        "description": "Example Requests:\nclients/1/charges/1\n\n\nclients/1/charges/1?fields=name,id",
        "operationId": "retrieveOneClientCharge",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "chargeId",
            "in": "path",
            "name": "chargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetClientsChargesPageItems" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Client Charge",
        "tags": ["Client Charges"],
        "x-alternative-operation-id": "retrieveClientCharge"
      },
      "post": {
        "description": "Pay a Client Charge:\n\nMandatory Fields:transactionDate and amount \"Pay either a part of or the entire due amount for a charge.(command=paycharge)\n\nWaive a Client Charge:\n\n\nThis API provides the facility of waiving off the remaining amount on a client charge (command=waive)\n\nShowing request/response for 'Pay a Client Charge'",
        "operationId": "payOrWaiveClientCharge",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "chargeId",
            "in": "path",
            "name": "chargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostClientsClientIdChargesChargeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostClientsClientIdChargesChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Pay a Client Charge | Waive a Client Charge",
        "tags": ["Client Charges"]
      }
    },
    "/v1/clients/{clientId}/collaterals": {
      "get": {
        "description": "Get Collateral Product of a Client",
        "operationId": "getClientCollateralProducts",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "prodId",
            "in": "query",
            "name": "prodId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/ClientCollateralManagementData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Get Clients Collateral Products",
        "tags": ["Client Collateral Management"],
        "x-alternative-operation-id": "getClientCollateral"
      },
      "post": {
        "description": "Add New Collateral For a Client",
        "operationId": "addClientCollateral",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ClientCollateralCreateRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ClientCollateralCreateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Add New Collateral For a Client",
        "tags": ["Client Collateral Management"],
        "x-alternative-operation-id": "addCollateral"
      }
    },
    "/v1/clients/{clientId}/collaterals/template": {
      "get": {
        "description": "Get Client Collateral Template",
        "operationId": "getClientCollateralTemplate",
        "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/LoanCollateralTemplateData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Get Client Collateral Template",
        "tags": ["Client Collateral Management"]
      }
    },
    "/v1/clients/{clientId}/collaterals/{clientCollateralId}": {
      "get": {
        "description": "Get Client Collateral Data",
        "operationId": "getClientCollateralData",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "clientCollateralId",
            "in": "path",
            "name": "clientCollateralId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ClientCollateralManagementData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Get Client Collateral Data",
        "tags": ["Client Collateral Management"]
      }
    },
    "/v1/clients/{clientId}/collaterals/{collateralId}": {
      "delete": {
        "description": "Delete Client Collateral",
        "operationId": "deleteClientCollateral",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "collateralId",
            "in": "path",
            "name": "collateralId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ClientCollateralDeleteResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete Client Collateral",
        "tags": ["Client Collateral Management"],
        "x-alternative-operation-id": "deleteCollateral_1"
      },
      "put": {
        "description": "Update New Collateral of a Client",
        "operationId": "updateClientCollateral",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "collateralId",
            "in": "path",
            "name": "collateralId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ClientCollateralUpdateRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ClientCollateralUpdateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update New Collateral of a Client",
        "tags": ["Client Collateral Management"],
        "x-alternative-operation-id": "updateCollateral_1"
      }
    },
    "/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": ["Client Family Member"],
        "x-alternative-operation-id": "getFamilyMembers"
      },
      "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": ["Client Family Member"],
        "x-alternative-operation-id": "addClientFamilyMembers"
      }
    },
    "/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": ["Client Family Member"],
        "x-alternative-operation-id": "getTemplate_2"
      }
    },
    "/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": ["Client Family Member"],
        "x-alternative-operation-id": "deleteClientFamilyMembers"
      },
      "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": ["Client Family Member"],
        "x-alternative-operation-id": "getFamilyMember"
      },
      "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": ["Client Family Member"],
        "x-alternative-operation-id": "updateClientFamilyMembers"
      }
    },
    "/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": ["Client Identifier"]
      },
      "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": ["Client Identifier"]
      }
    },
    "/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": ["Client Identifier"],
        "x-alternative-operation-id": "newClientIdentifierDetails"
      }
    },
    "/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": ["Client Identifier"]
      },
      "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": ["Client Identifier"],
        "x-alternative-operation-id": "retrieveClientIdentifiers"
      },
      "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": ["Client Identifier"],
        "x-alternative-operation-id": "updateClientIdentifer"
      }
    },
    "/v1/clients/{clientId}/obligeedetails": {
      "get": {
        "description": "Retrieve client obligee details",
        "operationId": "retrieveClientObligeeDetails",
        "parameters": [
          {
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetClientObligeeDetailsResponse" }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad Request" }
        },
        "summary": "Retrieve client obligee details",
        "tags": ["Client"],
        "x-alternative-operation-id": "retrieveObligeeDetails"
      }
    },
    "/v1/clients/{clientId}/transactions": {
      "get": {
        "description": "The list capability of client transaction can support pagination.\n\nExample Requests:\n\nclients/189/transactions\n\nclients/189/transactions?offset=10&limit=50",
        "operationId": "retrieveAllClientTransactions",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "offset",
            "in": "query",
            "name": "offset",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "limit",
            "in": "query",
            "name": "limit",
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetClientsClientIdTransactionsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Client Transactions",
        "tags": ["Client Transaction"]
      }
    },
    "/v1/clients/{clientId}/transactions/external-id/{transactionExternalId}": {
      "get": {
        "description": "Example Requests:\nclients/1/transactions/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854\n\n\nclients/1/transactions/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854?fields=id,officeName",
        "operationId": "retrieveClientTransactionByTransactionExternalId",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "transactionExternalId",
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetClientsClientIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Client Transaction",
        "tags": ["Client Transaction"],
        "x-alternative-operation-id": "retrieveClientTransaction_1"
      },
      "post": {
        "description": "Undoes a Client Transaction",
        "operationId": "undoClientTransactionByTransactionExternalId",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "transactionExternalId",
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostClientsClientIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Undo a Client Transaction",
        "tags": ["Client Transaction"],
        "x-alternative-operation-id": "undoClientTransaction_1"
      }
    },
    "/v1/clients/{clientId}/transactions/{transactionId}": {
      "get": {
        "description": "Example Requests:\nclients/1/transactions/1\n\n\nclients/1/transactions/1?fields=id,officeName",
        "operationId": "retrieveClientTransaction",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "transactionId",
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetClientsClientIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Client Transaction",
        "tags": ["Client Transaction"]
      },
      "post": {
        "description": "Undoes a Client Transaction",
        "operationId": "undoClientTransaction",
        "parameters": [
          {
            "description": "clientId",
            "in": "path",
            "name": "clientId",
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostClientsClientIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Undo a Client Transaction",
        "tags": ["Client Transaction"]
      }
    },
    "/v1/clients/{clientId}/transferproposaldate": {
      "get": {
        "description": "Retrieve client transfer template",
        "operationId": "retrieveClientTransferTemplate",
        "parameters": [
          {
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetClientTransferProposalDateResponse" }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad Request" }
        },
        "summary": "Retrieve client transfer template",
        "tags": ["Client"],
        "x-alternative-operation-id": "retrieveTransferTemplate"
      }
    },
    "/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"],
        "x-alternative-operation-id": "retrieveCodes"
      },
      "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"]
      }
    },
    "/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"],
        "x-alternative-operation-id": "retrieveCodeByName"
      }
    },
    "/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": ["Code Values"]
      },
      "post": {
        "operationId": "createCodeValueByCodeName",
        "parameters": [
          {
            "description": "codeName",
            "in": "path",
            "name": "codeName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostCodeValuesDataRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostCodeValueDataResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Code description",
        "tags": ["Code Values"]
      }
    },
    "/v1/codes/name/{codeName}/codevalues/{codeValueId}": {
      "delete": {
        "description": "Deletes a code description",
        "operationId": "deleteCodeValue_1",
        "parameters": [
          {
            "description": "codeName",
            "in": "path",
            "name": "codeName",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "codeValueId",
            "in": "path",
            "name": "codeValueId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteCodeValueDataResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Code description",
        "tags": ["Code Values"]
      },
      "get": {
        "description": "Returns the details of a Code Value\n\nExample Requests:\n\ncodes/name/ADDRESS_TYPE/codevalues/1",
        "operationId": "retrieveCodeValue_1",
        "parameters": [
          {
            "description": "codeName",
            "in": "path",
            "name": "codeName",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "codeValueId",
            "in": "path",
            "name": "codeValueId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetCodeValuesDataResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Code description",
        "tags": ["Code Values"]
      },
      "put": {
        "description": "Updates the details of a code description.",
        "operationId": "updateCodeValueByCodeName",
        "parameters": [
          {
            "description": "codeName",
            "in": "path",
            "name": "codeName",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "codeValueId",
            "in": "path",
            "name": "codeValueId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutCodeValuesDataRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutCodeValueDataResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Code description",
        "tags": ["Code Values"]
      }
    },
    "/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"]
      },
      "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"],
        "x-alternative-operation-id": "retrieveCode"
      },
      "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"]
      }
    },
    "/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": ["Code Values"]
      },
      "post": {
        "operationId": "createCodeValue",
        "parameters": [
          {
            "description": "codeId",
            "in": "path",
            "name": "codeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostCodeValuesDataRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostCodeValueDataResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Code description",
        "tags": ["Code Values"]
      }
    },
    "/v1/codes/{codeId}/codevalues/{codeValueId}": {
      "delete": {
        "description": "Deletes a code description",
        "operationId": "deleteCodeValue",
        "parameters": [
          {
            "description": "codeId",
            "in": "path",
            "name": "codeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "codeValueId",
            "in": "path",
            "name": "codeValueId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteCodeValueDataResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Code description",
        "tags": ["Code Values"]
      },
      "get": {
        "description": "Returns the details of a Code Value\n\nExample Requests:\n\ncodes/1/codevalues/1",
        "operationId": "retrieveCodeValue",
        "parameters": [
          {
            "description": "codeValueId",
            "in": "path",
            "name": "codeValueId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "codeId",
            "in": "path",
            "name": "codeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetCodeValuesDataResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Code description",
        "tags": ["Code Values"]
      },
      "put": {
        "description": "Updates the details of a code description.",
        "operationId": "updateCodeValue",
        "parameters": [
          {
            "description": "codeId",
            "in": "path",
            "name": "codeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "codeValueId",
            "in": "path",
            "name": "codeValueId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutCodeValuesDataRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutCodeValueDataResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Code description",
        "tags": ["Code Values"]
      }
    },
    "/v1/collateral-management": {
      "get": {
        "description": "Fetch all Collateral Products",
        "operationId": "getAllCollaterals",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/CollateralManagementData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Get All Collaterals",
        "tags": ["Collateral Management"]
      },
      "post": {
        "description": "Collateral Creation",
        "operationId": "createCollateral_1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/CollateralProductCreateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CollateralProductCreateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create a new collateral",
        "tags": ["Collateral Management"]
      }
    },
    "/v1/collateral-management/template": {
      "get": {
        "description": "Get Collateral Template",
        "operationId": "getCollateralTemplate",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/CurrencyData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Get Collateral Template",
        "tags": ["Collateral Management"]
      }
    },
    "/v1/collateral-management/{collateralId}": {
      "delete": {
        "description": "Delete Collateral",
        "operationId": "deleteCollateral_1",
        "parameters": [
          {
            "description": "collateralId",
            "in": "path",
            "name": "collateralId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CollateralProductDeleteResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete a Collateral",
        "tags": ["Collateral Management"],
        "x-alternative-operation-id": "deleteCollateral_2"
      },
      "get": {
        "description": "Fetch Collateral",
        "operationId": "getCollateral",
        "parameters": [
          {
            "description": "collateralId",
            "in": "path",
            "name": "collateralId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CollateralManagementData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Get Collateral",
        "tags": ["Collateral Management"]
      },
      "put": {
        "description": "Update Collateral",
        "operationId": "updateCollateral_1",
        "parameters": [
          {
            "description": "collateralId",
            "in": "path",
            "name": "collateralId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/CollateralProductUpdateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CollateralProductUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update Collateral",
        "tags": ["Collateral Management"],
        "x-alternative-operation-id": "updateCollateral_2"
      }
    },
    "/v1/collectionsheet": {
      "post": {
        "description": "Generate Individual Collection Sheet:\n\nThis Api retrieves repayment details of all individual loans under a office as on a specified meeting date.\n\nSave Collection Sheet:\n\nThis Api allows the loan officer to perform bulk repayments of individual loans and deposit of mandatory savings on a given meeting date.",
        "operationId": "generateCollectionSheet",
        "parameters": [
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/CollectionSheetRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostCollectionSheetResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Generate Individual Collection Sheet | Save Collection Sheet",
        "tags": ["Collection Sheet"]
      }
    },
    "/v1/configurations": {
      "get": {
        "description": "Returns the list global enable/disable configurations.\n\nExample Requests:\n\nconfigurations\n\n\nReturns the list global enable/disable survey configurations.\n\nExample Requests:\n\nconfigurations/survey",
        "operationId": "retrieveConfiguration",
        "parameters": [
          {
            "description": "survey",
            "in": "query",
            "name": "survey",
            "schema": { "type": "boolean", "default": false }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetGlobalConfigurationsResponse" }
              }
            },
            "description": "List of example \\n response \\nsurveys response   \\ngiven below"
          }
        },
        "summary": "Retrieve Global Configuration | Retrieve Global Configuration for surveys",
        "tags": ["Global Configuration"]
      }
    },
    "/v1/configurations/name/{configName}": {
      "put": {
        "description": "Updates an enable/disable global configuration item by name",
        "operationId": "updateConfigurationByName",
        "parameters": [
          {
            "description": "configName",
            "in": "path",
            "name": "configName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutGlobalConfigurationsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutGlobalConfigurationsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Global Configuration by name",
        "tags": ["Global Configuration"]
      }
    },
    "/v1/configurations/name/{name}": {
      "get": {
        "description": "Returns a global enable/disable configuration.\n\nExample Requests:\n\nconfigurations/name/enable-address",
        "operationId": "retrieveOneByName",
        "parameters": [
          {
            "description": "name",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GlobalConfigurationPropertyData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Global Configuration",
        "tags": ["Global Configuration"]
      }
    },
    "/v1/configurations/{configId}": {
      "get": {
        "description": "Returns a global enable/disable configurations.\n\nExample Requests:\n\nconfigurations/1",
        "operationId": "retrieveOneGlobalConfiguration",
        "parameters": [
          {
            "description": "configId",
            "in": "path",
            "name": "configId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GlobalConfigurationPropertyData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Global Configuration",
        "tags": ["Global Configuration"],
        "x-alternative-operation-id": "retrieveOne_3"
      },
      "put": {
        "description": "Updates an enable/disable global configuration item.",
        "operationId": "updateGlobalConfiguration",
        "parameters": [
          {
            "description": "configId",
            "in": "path",
            "name": "configId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutGlobalConfigurationsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutGlobalConfigurationsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Global Configuration",
        "tags": ["Global Configuration"],
        "x-alternative-operation-id": "updateConfiguration_1"
      }
    },
    "/v1/creditBureauIntegration/addCreditReport": {
      "post": {
        "operationId": "addCreditReport",
        "parameters": [
          {
            "description": "creditBureauId",
            "in": "query",
            "name": "creditBureauId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload credit report"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Integration"]
      }
    },
    "/v1/creditBureauIntegration/creditReport": {
      "post": {
        "operationId": "fetchCreditReport",
        "requestBody": {
          "content": { "application/json": { "schema": { "type": "object" } } },
          "description": "Fetch credit report"
        },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Integration"]
      }
    },
    "/v1/creditBureauIntegration/creditReport/{creditBureauId}": {
      "get": {
        "operationId": "getSavedCreditReport",
        "parameters": [
          {
            "description": "creditBureauId",
            "in": "path",
            "name": "creditBureauId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Integration"]
      }
    },
    "/v1/creditBureauIntegration/deleteCreditReport/{creditBureauId}": {
      "delete": {
        "operationId": "deleteCreditReport",
        "parameters": [
          {
            "description": "creditBureauId",
            "in": "path",
            "name": "creditBureauId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Integration"]
      }
    },
    "/v1/creditBureauIntegration/saveCreditReport": {
      "post": {
        "operationId": "saveCreditReport",
        "parameters": [
          {
            "description": "creditBureauId",
            "in": "query",
            "name": "creditBureauId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "nationalId",
            "in": "query",
            "name": "nationalId",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Credit Bureau Integration"]
      }
    },
    "/v1/currencies": {
      "get": {
        "description": "Returns the list of currencies permitted for use AND the list of currencies not selected (but available for selection).\n\nExample Requests:\n\ncurrencies\ncurrencies?fields=selectedCurrencyOptions\n",
        "operationId": "retrieveCurrencies",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CurrencyConfigurationData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Currency Configuration",
        "tags": ["Currency"]
      },
      "put": {
        "description": "Updates the list of currencies permitted for use.",
        "operationId": "updateCurrencies",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/CurrencyUpdateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CurrencyUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update Currency Configuration",
        "tags": ["Currency"]
      }
    },
    "/v1/datatables": {
      "get": {
        "description": "Lists registered data tables and the KiKé Group Core application table they are registered to.\n\nARGUMENTS\n\napptable  - optional\nThe KiKé Group core application table.\n\nExample Requests:\n\ndatatables?apptable=m_client\n\ndatatables",
        "operationId": "getDatatables",
        "parameters": [
          {
            "description": "apptable",
            "in": "query",
            "name": "apptable",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetDataTablesResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Data Tables",
        "tags": ["Data Tables"]
      },
      "post": {
        "description": "Create a new data table and registers it with the KiKé Group Core application table.\n\nField Descriptions\n\nMandatory - datatableName :\nThe name of the Data Table.\n\nMandatory - apptableName\nApplication table name. Must be one of the following:\nm_client, m_group, m_loan, m_office, m_saving_account, m_product_loan, m_savings_product, m_wc_loan_product, m_wc_loan\n\nMandatory - columns\nAn array of columns in the new Data Table.\n\nOptional - multiRow\nAllows to create multiple entries in the Data Table. Optional, defaults to false. If this property is not provided Data Table will allow only one entry.\n\nField Descriptions - columns\n\nMandatory - name\nName of the created column. Can contain only alphanumeric characters, underscores and spaces, but cannot start with a number. Cannot start or end with an underscore or space.\n\nMandatory - type\nColumn type. Must be one of the following:\nBoolean, Date, DateTime, Decimal, Dropdown, Number, String, Text\n\nMandatory [type = Dropdown] - code\nUsed in Code description fields. Column name becomes: code_cd_name. Mandatory if using type Dropdown, otherwise an error is returned.\n\nOptional - mandatory\nDetermines whether this column must have a value in every entry. Optional, defaults to false.\n\nMandatory [type = String] - length\nLength of the text field. Mandatory if type String is used, otherwise an error is returned.",
        "operationId": "createDatatable",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostDataTablesRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostDataTablesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create Data Table",
        "tags": ["Data Tables"]
      }
    },
    "/v1/datatables/deregister/{datatable}": {
      "post": {
        "description": "Deregisters a data table. It will no longer be available through the API.",
        "operationId": "deregisterDatatable",
        "parameters": [
          {
            "description": "datatable",
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutDataTablesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Deregister Data Table",
        "tags": ["Data Tables"]
      }
    },
    "/v1/datatables/register/{datatable}/{apptable}": {
      "post": {
        "description": "Registers a data table with the KiKé Group Core application table. This allows the data table to be maintained through the API. In case the datatable is a PPI (survey table), a parameter category should be pass along with the request. The API currently support one category (200)",
        "operationId": "registerDatatable",
        "parameters": [
          {
            "description": "datatable",
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "apptable",
            "in": "path",
            "name": "apptable",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostDataTablesRegisterDatatableAppTable" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutDataTablesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Register Data Table",
        "tags": ["Data Tables"]
      }
    },
    "/v1/datatables/{datatableName}": {
      "delete": {
        "description": "Deletes a data table and deregisters it from the KiKé Group Core application table.",
        "operationId": "deleteDatatable",
        "parameters": [
          {
            "description": "datatableName",
            "in": "path",
            "name": "datatableName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteDataTablesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete Data Table",
        "tags": ["Data Tables"]
      },
      "put": {
        "description": "Modifies fields of a data table. If the apptableName parameter is passed, data table is deregistered and registered with the new application table.",
        "operationId": "updateDatatable",
        "parameters": [
          {
            "description": "datatableName",
            "in": "path",
            "name": "datatableName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutDataTablesRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutDataTablesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Data Table",
        "tags": ["Data Tables"]
      }
    },
    "/v1/datatables/{datatable}": {
      "get": {
        "description": "Lists a registered data table details and the KiKé Group Core application table they are registered to.",
        "operationId": "getDatatable",
        "parameters": [
          {
            "description": "datatable",
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetDataTablesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Data Table Details",
        "tags": ["Data Tables"]
      }
    },
    "/v1/datatables/{datatable}/query": {
      "get": {
        "description": "Query values from a registered data table.",
        "operationId": "queryValues",
        "parameters": [
          {
            "description": "datatable",
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "columnFilter",
            "in": "query",
            "name": "columnFilter",
            "schema": { "type": "string" }
          },
          {
            "description": "valueFilter",
            "in": "query",
            "name": "valueFilter",
            "schema": { "type": "string" }
          },
          {
            "description": "resultColumns",
            "in": "query",
            "name": "resultColumns",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "OK"
          }
        },
        "summary": "Query Data Table values",
        "tags": ["Data Tables"]
      },
      "post": {
        "description": "Query values from a registered data table.",
        "operationId": "advancedQuery",
        "parameters": [
          {
            "description": "datatable",
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PagedLocalRequestAdvancedQueryData" }
            }
          }
        },
        "responses": {
          "200": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "OK"
          }
        },
        "summary": "Query Data Table values",
        "tags": ["Data Tables"]
      }
    },
    "/v1/datatables/{datatable}/{apptableId}": {
      "delete": {
        "description": "Deletes the entry (if it exists) for data tables that are one-to-one with the application table. Deletes the entries (if they exist) for data tables that are one-to-many with the application table.",
        "operationId": "deleteDatatableEntries",
        "parameters": [
          {
            "description": "datatable",
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "apptableId",
            "in": "path",
            "name": "apptableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteDataTablesDatatableAppTableIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete Entry(s) in Data Table",
        "tags": ["Data Tables"]
      },
      "get": {
        "description": "Gets the entry (if it exists) for data tables that are one to one with the application table. Gets the entries (if they exist) for data tables that are one to many with the application table.\n\nNote: The 'fields' parameter is not available for datatables.\n\nARGUMENTS\norderoptional Specifies the order in which data is returned.genericResultSetoptional, defaults to false If 'true' an optimised JSON format is returned suitable for tabular display of data. This format is used by the default data tables UI functionality.\n\nExample Requests:\n\ndatatables/extra_client_details/1\n\ndatatables/extra_family_details/1?order=`Date of Birth` desc\n\ndatatables/extra_client_details/1?genericResultSet=true",
        "operationId": "getDatatableEntries",
        "parameters": [
          {
            "description": "datatable",
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "apptableId",
            "in": "path",
            "name": "apptableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "description": "order", "in": "query", "name": "order", "schema": { "type": "string" } }
        ],
        "responses": {
          "200": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "OK"
          }
        },
        "summary": "Retrieve Entry(s) from Data Table",
        "tags": ["Data Tables"],
        "x-alternative-operation-id": "getDatatable_1"
      },
      "post": {
        "description": "Adds a row to the data table.\n\nNote that the default datatable UI functionality converts any field name containing spaces to underscores when using the API. This means the field name \"Business Description\" is considered the same as \"Business_Description\". So you shouldn't have both \"versions\" in any data table.",
        "operationId": "createDatatableEntry",
        "parameters": [
          {
            "description": "datatable",
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "apptableId",
            "in": "path",
            "name": "apptableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": { "application/json": { "schema": { "type": "string" } } },
          "description": "{\n  \"BusinessDescription\": \"Livestock sales\",\n  \"Comment\": \"First comment made\",\n  \"Education_cv\": \"Primary\",\n  \"Gender_cd\": 6,\n  \"HighestRatePaid\": 8.5,\n  \"NextVisit\": \"01 October 2012\",\n  \"YearsinBusiness\": 5,\n  \"dateFormat\": \"dd MMMM yyyy\",\n  \"locale\": \"en\"\n}",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostDataTablesAppTableIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create Entry in Data Table",
        "tags": ["Data Tables"]
      },
      "put": {
        "description": "Updates the row (if it exists) of the data table.",
        "operationId": "updateDatatableEntryOnetoOne",
        "parameters": [
          {
            "description": "datatable",
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "apptableId",
            "in": "path",
            "name": "apptableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": { "application/json": { "schema": { "type": "string" } } },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutDataTablesAppTableIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Entry in Data Table (One to One)",
        "tags": ["Data Tables"]
      }
    },
    "/v1/datatables/{datatable}/{apptableId}/{datatableId}": {
      "delete": {
        "description": "Deletes the entry (if it exists) for data tables that are one to many with the application table.",
        "operationId": "deleteDatatableEntry",
        "parameters": [
          {
            "description": "datatable",
            "example": {},
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "apptableId",
            "in": "path",
            "name": "apptableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "datatableId",
            "in": "path",
            "name": "datatableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteDataTablesDatatableAppTableIdDatatableIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete Entry in Datatable (One to Many)",
        "tags": ["Data Tables"]
      },
      "get": {
        "description": "Gets the entry (if it exists) for data tables that are one-to-many with the application table, by the datatable entry id. Returns the stored row as a JSON object keyed by column name.",
        "operationId": "getDatatableManyEntry",
        "parameters": [
          { "in": "path", "name": "datatable", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "apptableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "datatableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "order", "schema": { "type": "string" } },
          {
            "description": "Optional flag to format the response",
            "in": "query",
            "name": "genericResultSet",
            "schema": { "type": "boolean", "default": false }
          }
        ],
        "responses": {
          "200": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "OK"
          }
        },
        "summary": "Retrieve Entry from Data Table (One to Many)",
        "tags": ["Data Tables"]
      },
      "put": {
        "description": "Updates the row (if it exists) of the data table.",
        "operationId": "updateDatatableEntryOneToMany",
        "parameters": [
          {
            "description": "datatable",
            "in": "path",
            "name": "datatable",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "apptableId",
            "in": "path",
            "name": "apptableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "datatableId",
            "in": "path",
            "name": "datatableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": { "application/json": { "schema": { "type": "string" } } },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutDataTablesAppTableIdDatatableIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Entry in Data Table (One to Many)",
        "tags": ["Data Tables"]
      }
    },
    "/v1/delinquency/buckets": {
      "get": {
        "operationId": "getBuckets",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/DelinquencyBucketResponse" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List all Delinquency Buckets",
        "tags": ["Delinquency Range and Buckets Management"],
        "x-alternative-operation-id": "getDelinquencyBuckets"
      },
      "post": {
        "operationId": "createBucket",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/DelinquencyBucketRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostDelinquencyBucketResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create Delinquency Bucket",
        "tags": ["Delinquency Range and Buckets Management"],
        "x-alternative-operation-id": "createDelinquencyBucket"
      }
    },
    "/v1/delinquency/buckets/template": {
      "get": {
        "operationId": "getBucketTemplate",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DelinquencyBucketTemplateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Template for Delinquency Buckets",
        "tags": ["Delinquency Range and Buckets Management"]
      }
    },
    "/v1/delinquency/buckets/{delinquencyBucketId}": {
      "delete": {
        "operationId": "deleteBucket",
        "parameters": [
          {
            "description": "delinquencyBucketId",
            "in": "path",
            "name": "delinquencyBucketId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteDelinquencyBucketResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete Delinquency Bucket based on the Id",
        "tags": ["Delinquency Range and Buckets Management"],
        "x-alternative-operation-id": "deleteDelinquencyBucket"
      },
      "get": {
        "operationId": "getBucket",
        "parameters": [
          {
            "description": "delinquencyBucketId",
            "in": "path",
            "name": "delinquencyBucketId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DelinquencyBucketResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a specific Delinquency Bucket based on the Id",
        "tags": ["Delinquency Range and Buckets Management"],
        "x-alternative-operation-id": "getDelinquencyBucket"
      },
      "put": {
        "operationId": "updateBucket",
        "parameters": [
          {
            "description": "delinquencyBucketId",
            "in": "path",
            "name": "delinquencyBucketId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/DelinquencyBucketRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutDelinquencyBucketResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Delinquency Bucket based on the Id",
        "tags": ["Delinquency Range and Buckets Management"],
        "x-alternative-operation-id": "updateDelinquencyBucket"
      }
    },
    "/v1/delinquency/ranges": {
      "get": {
        "operationId": "getRanges",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/DelinquencyRangeResponse" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List all Delinquency Ranges",
        "tags": ["Delinquency Range and Buckets Management"],
        "x-alternative-operation-id": "getDelinquencyRanges"
      },
      "post": {
        "operationId": "createRange",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/DelinquencyRangeRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostDelinquencyRangeResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create Delinquency Range",
        "tags": ["Delinquency Range and Buckets Management"],
        "x-alternative-operation-id": "createDelinquencyRange"
      }
    },
    "/v1/delinquency/ranges/{delinquencyRangeId}": {
      "delete": {
        "operationId": "deleteRange",
        "parameters": [
          {
            "description": "delinquencyRangeId",
            "in": "path",
            "name": "delinquencyRangeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteDelinquencyRangeResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Delinquency Range based on the Id",
        "tags": ["Delinquency Range and Buckets Management"],
        "x-alternative-operation-id": "deleteDelinquencyRange"
      },
      "get": {
        "operationId": "getRange",
        "parameters": [
          {
            "description": "delinquencyRangeId",
            "in": "path",
            "name": "delinquencyRangeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DelinquencyRangeResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a specific Delinquency Range based on the Id",
        "tags": ["Delinquency Range and Buckets Management"],
        "x-alternative-operation-id": "getDelinquencyRange"
      },
      "put": {
        "operationId": "updateRange",
        "parameters": [
          {
            "description": "delinquencyRangeId",
            "in": "path",
            "name": "delinquencyRangeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/DelinquencyRangeRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutDelinquencyRangeResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Delinquency Range based on the Id",
        "tags": ["Delinquency Range and Buckets Management"],
        "x-alternative-operation-id": "updateDelinquencyRange"
      }
    },
    "/v1/email": {
      "get": {
        "operationId": "retrieveAllEmails",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "List all email messages"
      },
      "post": {
        "operationId": "createEmail",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Create an email message",
        "x-alternative-operation-id": "create_1"
      }
    },
    "/v1/email/campaign": {
      "get": {
        "operationId": "retrieveAllEmailCampaigns",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "List all email campaigns",
        "x-alternative-operation-id": "retrieveAllCampaign"
      },
      "post": {
        "operationId": "createEmailCampaign",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Create an email campaign",
        "x-alternative-operation-id": "createCampaign"
      }
    },
    "/v1/email/campaign/preview": {
      "post": {
        "operationId": "previewEmailCampaign",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Preview email campaign message",
        "x-alternative-operation-id": "preview"
      }
    },
    "/v1/email/campaign/template": {
      "get": {
        "operationId": "retrieveAllTemplatesEmailCampaign",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve email campaign template",
        "x-alternative-operation-id": "template_1"
      }
    },
    "/v1/email/campaign/template/{resourceId}": {
      "get": {
        "operationId": "retrieveOneTemplateEmailCampaign",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve an email campaign template detail by ID",
        "x-alternative-operation-id": "retrieveOneTemplate"
      }
    },
    "/v1/email/campaign/{resourceId}": {
      "delete": {
        "operationId": "deleteEmailCampaign",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Delete an email campaign",
        "x-alternative-operation-id": "delete_2"
      },
      "get": {
        "operationId": "retrieveOneEmailCampaign",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve an email campaign",
        "x-alternative-operation-id": "retrieveOneCampaign"
      },
      "post": {
        "operationId": "handleCommandsEmailCampaign",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Activate, close, or reactivate an email campaign",
        "x-alternative-operation-id": "activate"
      },
      "put": {
        "operationId": "updateEmailCampaign",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Update an email campaign",
        "x-alternative-operation-id": "updateCampaign"
      }
    },
    "/v1/email/configuration": {
      "get": {
        "operationId": "retrieveAllEmailConfigurations",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "List all email configurations",
        "x-alternative-operation-id": "retrieveAll_5"
      },
      "put": {
        "operationId": "updateEmailConfiguration",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Update email configuration",
        "x-alternative-operation-id": "updateConfiguration"
      }
    },
    "/v1/email/failedEmail": {
      "get": {
        "operationId": "retrieveFailedEmail",
        "parameters": [
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "orderBy", "schema": { "type": "string" } },
          { "in": "query", "name": "sortOrder", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve failed email messages"
      }
    },
    "/v1/email/messageByStatus": {
      "get": {
        "operationId": "retrieveAllEmailByStatus",
        "parameters": [
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "status", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "orderBy", "schema": { "type": "string" } },
          { "in": "query", "name": "sortOrder", "schema": { "type": "string" } },
          {
            "in": "query",
            "name": "fromDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "in": "query",
            "name": "toDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          { "in": "query", "name": "locale", "schema": { "type": "string" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve email messages by status"
      }
    },
    "/v1/email/pendingEmail": {
      "get": {
        "operationId": "retrievePendingEmail",
        "parameters": [
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "orderBy", "schema": { "type": "string" } },
          { "in": "query", "name": "sortOrder", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve pending email messages"
      }
    },
    "/v1/email/sentEmail": {
      "get": {
        "operationId": "retrieveSentEmail",
        "parameters": [
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "orderBy", "schema": { "type": "string" } },
          { "in": "query", "name": "sortOrder", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve sent email messages"
      }
    },
    "/v1/email/{resourceId}": {
      "delete": {
        "operationId": "deleteEmail",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Delete an email message",
        "x-alternative-operation-id": "delete_1"
      },
      "get": {
        "operationId": "retrieveOneEmail",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve an email message",
        "x-alternative-operation-id": "retrieveOne_1"
      },
      "put": {
        "operationId": "updateEmail",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Update an email message",
        "x-alternative-operation-id": "update_2"
      }
    },
    "/v1/entityDatatableChecks": {
      "get": {
        "description": "The list capability of Entity-Datatable Checks can support pagination.\n\nOPTIONAL ARGUMENTS\noffset Integer optional, defaults to 0 Indicates the result from which pagination startslimit Integer optional, defaults to 200 Restricts the size of results returned. To override the default and return all entries you must explicitly pass a non-positive integer value for limit e.g. limit=0, or limit=-1\nExample Request:\n\nentityDatatableChecks?offset=0&limit=15",
        "operationId": "retrieveAllEntityDatatableChecks",
        "parameters": [
          {
            "description": "status",
            "in": "query",
            "name": "status",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "entity",
            "in": "query",
            "name": "entity",
            "schema": { "type": "string" }
          },
          {
            "description": "productId",
            "in": "query",
            "name": "productId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "offset",
            "in": "query",
            "name": "offset",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "limit",
            "in": "query",
            "name": "limit",
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PageGetEntityDatatableChecksResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Entity-Datatable Checks",
        "tags": ["Entity Data Table"],
        "x-alternative-operation-id": "retrieveAll_6"
      },
      "post": {
        "description": "Mandatory Fields : \nentity, status, datatableName\n\nNon-Mandatory Fields : \nproductId",
        "operationId": "createEntityDatatableCheck",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostEntityDatatableChecksTemplateRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEntityDatatableChecksTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create Entity-Datatable Checks",
        "tags": ["Entity Data Table"]
      }
    },
    "/v1/entityDatatableChecks/template": {
      "get": {
        "description": "This is a convenience resource useful for building maintenance user interface screens for Entity-Datatable Checks applications. The template data returned consists of:\n\nAllowed description Lists\nExample Request:\n\nentityDatatableChecks/template",
        "operationId": "retrieveTemplateEntityDatatableChecks",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEntityDatatableChecksTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Entity-Datatable Checks Template",
        "tags": ["Entity Data Table"],
        "x-alternative-operation-id": "getTemplate"
      }
    },
    "/v1/entityDatatableChecks/{entityDatatableCheckId}": {
      "delete": {
        "description": "Deletes an existing Entity-Datatable Check",
        "operationId": "deleteEntityDatatableCheck",
        "parameters": [
          {
            "description": "entityDatatableCheckId",
            "in": "path",
            "name": "entityDatatableCheckId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteEntityDatatableChecksTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete Entity-Datatable Checks",
        "tags": ["Entity Data Table"],
        "x-alternative-operation-id": "deleteDatatable_1"
      }
    },
    "/v1/entitytoentitymapping": {
      "get": {
        "operationId": "retrieveAll_3",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["KiKé Group Entity"],
        "x-alternative-operation-id": "retrieveAll_7"
      }
    },
    "/v1/entitytoentitymapping/{mapId}": {
      "delete": {
        "operationId": "delete",
        "parameters": [
          {
            "in": "path",
            "name": "mapId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["KiKé Group Entity"],
        "x-alternative-operation-id": "delete_4"
      },
      "get": {
        "operationId": "retrieveOne",
        "parameters": [
          {
            "in": "path",
            "name": "mapId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["KiKé Group Entity"],
        "x-alternative-operation-id": "retrieveOne_4"
      },
      "put": {
        "operationId": "updateMap",
        "parameters": [
          {
            "in": "path",
            "name": "mapId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["KiKé Group Entity"]
      }
    },
    "/v1/entitytoentitymapping/{mapId}/{fromId}/{toId}": {
      "get": {
        "operationId": "getEntityToEntityMappings",
        "parameters": [
          {
            "in": "path",
            "name": "mapId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "fromId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "toId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["KiKé Group Entity"]
      }
    },
    "/v1/entitytoentitymapping/{relId}": {
      "post": {
        "operationId": "createMap",
        "parameters": [
          {
            "in": "path",
            "name": "relId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["KiKé Group Entity"]
      }
    },
    "/v1/external-asset-owners": {
      "get": {
        "operationId": "retrieveExternalAssetOwners",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/ExternalTransferOwnerData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Get all External Asset Owner with details",
        "tags": ["External Asset Owners"]
      },
      "post": {
        "operationId": "createExternalAssetOwner",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostExternalAssetOwnerRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostExternalAssetOwnerResponse" }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad requests due invalid json data" }
        },
        "summary": "Create an External Asset Owner using the External Id",
        "tags": ["External Asset Owners"]
      }
    },
    "/v1/external-asset-owners/loan-product/template": {
      "get": {
        "description": "Retrieves all available external asset owner loan product attributes and the values each attribute can take.",
        "operationId": "retrieveTemplateExternalAssetOwnerLoanProductAttributes",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExternalTransferLoanProductAttributesTemplateData"
                  }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve External Asset Owner Loan Product Attributes Template",
        "tags": ["External Asset Owner Loan Product Attributes"]
      }
    },
    "/v1/external-asset-owners/loan-product/{loanProductId}/attributes": {
      "get": {
        "description": "Retrieves all Loan Product Attributes with a given loanProductId",
        "operationId": "retrieveAllExternalAssetOwnerLoanProductAttributes",
        "parameters": [
          {
            "description": "loanProductId",
            "in": "path",
            "name": "loanProductId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "attributeKey",
            "in": "query",
            "name": "attributeKey",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageExternalTransferLoanProductAttributesData"
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve All Loan Product Attributes",
        "tags": ["External Asset Owner Loan Product Attributes"],
        "x-alternative-operation-id": "getExternalAssetOwnerLoanProductAttributes"
      },
      "post": {
        "operationId": "createExternalAssetOwnerLoanProductAttribute",
        "parameters": [
          {
            "description": "loanProductId",
            "in": "path",
            "name": "loanProductId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostExternalAssetOwnerLoanProductAttributeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create External Asset Owner Loan Product Attribute",
        "tags": ["External Asset Owner Loan Product Attributes"],
        "x-alternative-operation-id": "postExternalAssetOwnerLoanProductAttribute"
      }
    },
    "/v1/external-asset-owners/loan-product/{loanProductId}/attributes/{id}": {
      "delete": {
        "description": "Deletes a loan product attribute with a given loan product id and attribute id, so that the loan product falls back to the default behaviour of the attribute",
        "operationId": "deleteExternalAssetOwnerLoanProductAttribute",
        "parameters": [
          {
            "description": "loanProductId",
            "in": "path",
            "name": "loanProductId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "attributeId",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete a Loan Product Attribute",
        "tags": ["External Asset Owner Loan Product Attributes"],
        "x-alternative-operation-id": "deleteLoanProductAttribute"
      },
      "put": {
        "description": "Updates a loan product attribute with a given loan product id and attribute id",
        "operationId": "updateExternalAssetOwnerLoanProductAttribute",
        "parameters": [
          {
            "description": "loanProductId",
            "in": "path",
            "name": "loanProductId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "attributeId",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutExternalAssetOwnerLoanProductAttributeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update a Loan Product Attribute",
        "tags": ["External Asset Owner Loan Product Attributes"],
        "x-alternative-operation-id": "updateLoanProductAttribute"
      }
    },
    "/v1/external-asset-owners/owners/external-id/{ownerExternalId}/journal-entries": {
      "get": {
        "description": "Retrieve Journal entries of owner by owner externalId",
        "operationId": "getJournalEntriesOfOwner",
        "parameters": [
          {
            "description": "ownerExternalId",
            "in": "path",
            "name": "ownerExternalId",
            "required": true,
            "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" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ExternalOwnerJournalEntryData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Journal Entries of Owner",
        "tags": ["External Asset Owners"]
      }
    },
    "/v1/external-asset-owners/search": {
      "post": {
        "operationId": "searchInvestorData",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PagedRequestExternalAssetOwnerSearchRequest"
              }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PageExternalTransferData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Search External Asset Owner Transfers by text or date ranges to settlement or effective dates",
        "tags": ["External Asset Owners"]
      }
    },
    "/v1/external-asset-owners/transfers": {
      "get": {
        "description": "Retrieve External Asset Owner Transfer items by transferExternalId, loanId or loanExternalId",
        "operationId": "getTransfers",
        "parameters": [
          {
            "description": "transferExternalId",
            "in": "query",
            "name": "transferExternalId",
            "schema": { "type": "string" }
          },
          {
            "description": "loanId",
            "in": "query",
            "name": "loanId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanExternalId",
            "in": "query",
            "name": "loanExternalId",
            "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" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PageExternalTransferData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve External Asset Owner Transfers",
        "tags": ["External Asset Owners"]
      }
    },
    "/v1/external-asset-owners/transfers/active-transfer": {
      "get": {
        "description": "Retrieve Active External Asset Owner Transfer by transferExternalId, loanId or loanExternalId",
        "operationId": "getActiveTransfer",
        "parameters": [
          {
            "description": "transferExternalId",
            "in": "query",
            "name": "transferExternalId",
            "schema": { "type": "string" }
          },
          {
            "description": "loanId",
            "in": "query",
            "name": "loanId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanExternalId",
            "in": "query",
            "name": "loanExternalId",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ExternalTransferData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Active Asset Owner Transfer",
        "tags": ["External Asset Owners"]
      }
    },
    "/v1/external-asset-owners/transfers/external-id/{externalId}": {
      "post": {
        "operationId": "transferRequestWithIdByExternalId",
        "parameters": [
          { "in": "path", "name": "externalId", "required": true, "schema": { "type": "string" } },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostInitiateTransferResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Transfer cannot be initiated" }
        },
        "summary": "Transfer external asset by external ID",
        "tags": ["External Asset Owners"],
        "x-alternative-operation-id": "transferRequestWithId_1"
      }
    },
    "/v1/external-asset-owners/transfers/loans/external-id/{loanExternalId}": {
      "post": {
        "operationId": "transferRequestWithLoanExternalId",
        "parameters": [
          {
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ExternalAssetOwnerRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostInitiateTransferResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Transfer cannot be initiated" }
        },
        "tags": ["External Asset Owners"]
      }
    },
    "/v1/external-asset-owners/transfers/loans/{loanId}": {
      "post": {
        "operationId": "transferRequestWithLoanId",
        "parameters": [
          {
            "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/ExternalAssetOwnerRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostInitiateTransferResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Transfer cannot be initiated" }
        },
        "tags": ["External Asset Owners"]
      }
    },
    "/v1/external-asset-owners/transfers/{id}": {
      "post": {
        "operationId": "transferRequestWithId",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostInitiateTransferResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Transfer cannot be initiated" }
        },
        "summary": "Transfer external asset",
        "tags": ["External Asset Owners"]
      }
    },
    "/v1/external-asset-owners/transfers/{transferId}/journal-entries": {
      "get": {
        "description": "Retrieve Journal entries of transfer by transferId",
        "operationId": "getJournalEntriesOfTransfer",
        "parameters": [
          {
            "description": "transferId",
            "in": "path",
            "name": "transferId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "offset",
            "in": "query",
            "name": "offset",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "limit",
            "in": "query",
            "name": "limit",
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ExternalOwnerTransferJournalEntryData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Journal Entries of Transfer",
        "tags": ["External Asset Owners"]
      }
    },
    "/v1/externalevents/configuration": {
      "get": {
        "operationId": "getExternalEventConfigurations",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ExternalEventConfigurationResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List all external event configurations",
        "tags": ["External event configuration"]
      },
      "put": {
        "operationId": "updateExternalEventConfigurations",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ExternalEventConfigurationUpdateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalEventConfigurationUpdateResponse"
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Enable/Disable external events posting",
        "tags": ["External event configuration"]
      }
    },
    "/v1/externalservice/{servicename}": {
      "get": {
        "description": "Returns a external Service configurations based on the Service Name.\n\nService Names supported are S3 and SMTP.\n\nExample Requests:\n\nexternalservice/SMTP",
        "operationId": "retrieveExternalServicesConfiguration",
        "parameters": [
          {
            "description": "servicename",
            "in": "path",
            "name": "servicename",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ExternalServicesPropertiesData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve External Services Configuration",
        "tags": ["External Services"],
        "x-alternative-operation-id": "retrieveOne_2"
      },
      "put": {
        "description": "Updates the external Service Configuration for a Service Name.\n\nExample: \n\nexternalservice/S3",
        "operationId": "updateExternalServicesConfiguration",
        "parameters": [
          {
            "description": "servicename",
            "in": "path",
            "name": "servicename",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutExternalServiceRequest" }
            }
          },
          "required": true
        },
        "responses": { "200": { "description": "OK" } },
        "summary": "Update External Service",
        "tags": ["External Services"],
        "x-alternative-operation-id": "updateExternalServiceProperties"
      }
    },
    "/v1/fieldconfiguration/{entity}": {
      "get": {
        "description": "It retrieves all the Entity Field Configuration",
        "operationId": "getAddresses",
        "parameters": [
          {
            "description": "entity",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/FieldConfigurationData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieves the Entity Field Configuration",
        "tags": ["Entity Field Configuration"]
      }
    },
    "/v1/financialactivityaccounts": {
      "get": {
        "description": "Example Requests:\nfinancialactivityaccounts",
        "operationId": "retrieveAll",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetFinancialActivityAccountsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Financial Activities to Accounts Mappings",
        "tags": ["Mapping Financial Activities to Accounts"]
      },
      "post": {
        "description": "Mandatory Fields\nfinancialActivityId, glAccountId",
        "operationId": "createGLAccountMappingFinancialActivityAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostFinancialActivityAccountsRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostFinancialActivityAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a new Financial Activity to Accounts Mapping",
        "tags": ["Mapping Financial Activities to Accounts"],
        "x-alternative-operation-id": "createGLAccount"
      }
    },
    "/v1/financialactivityaccounts/template": {
      "get": {
        "operationId": "retrieveTemplate",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/FinancialActivityAccountData" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Mapping Financial Activities to Accounts"]
      }
    },
    "/v1/financialactivityaccounts/{mappingId}": {
      "delete": {
        "operationId": "deleteGLAccountMappingFinancialActivityAccount",
        "parameters": [
          {
            "description": "mappingId",
            "in": "path",
            "name": "mappingId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteFinancialActivityAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Financial Activity to Account Mapping",
        "tags": ["Mapping Financial Activities to Accounts"],
        "x-alternative-operation-id": "deleteGLAccount"
      },
      "get": {
        "description": "Example Requests:\nfinancialactivityaccounts/1",
        "operationId": "retreive",
        "parameters": [
          {
            "description": "mappingId",
            "in": "path",
            "name": "mappingId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetFinancialActivityAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Financial Activity to Account Mapping\n",
        "tags": ["Mapping Financial Activities to Accounts"]
      },
      "put": {
        "description": "the API updates the Ledger account linked to a Financial Activity",
        "operationId": "updateGLAccountMappingFinancialActivityAccount",
        "parameters": [
          {
            "description": "mappingId",
            "in": "path",
            "name": "mappingId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostFinancialActivityAccountsRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutFinancialActivityAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Financial Activity to Account Mapping",
        "tags": ["Mapping Financial Activities to Accounts"],
        "x-alternative-operation-id": "updateGLAccount"
      }
    },
    "/v1/fixeddepositaccounts": {
      "get": {
        "description": "Lists Fixed Deposit Accounts\n\nExample Requests:\n\n\n\nfixeddepositaccounts\n\n\n\nfixeddepositaccounts?fields=name",
        "operationId": "retrieveAllFixedDepositAccounts",
        "parameters": [
          {
            "description": "paged",
            "in": "query",
            "name": "paged",
            "schema": { "type": "boolean" }
          },
          {
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetFixedDepositAccountsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Fixed deposit applications/accounts",
        "tags": ["Fixed Deposit Account"],
        "x-alternative-operation-id": "retrieveAll_29"
      },
      "post": {
        "description": "Submits a new fixed deposit application\nMandatory Fields: clientId or groupId, productId, submittedOnDate, depositAmount, depositPeriod, depositPeriodFrequencyId\n\nOptional Fields: accountNo, externalId, fieldOfficerId,linkAccountId(if provided initial deposit amount will be collected from this account),transferInterestToSavings(By enabling this flag all interest postings will be transferred to linked saving account )",
        "operationId": "createFixedDepositAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostFixedDepositAccountsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostFixedDepositAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Submit new fixed deposit application",
        "tags": ["Fixed Deposit Account"],
        "x-alternative-operation-id": "submitApplication"
      }
    },
    "/v1/fixeddepositaccounts/calculate-fd-interest": {
      "get": {
        "operationId": "calculateFixedDepositInterest",
        "parameters": [
          {
            "description": "BigDecimal principalAmount",
            "in": "query",
            "name": "principalAmount",
            "schema": { "type": "number" }
          },
          {
            "description": "annualInterestRate",
            "in": "query",
            "name": "annualInterestRate",
            "schema": { "type": "number" }
          },
          {
            "description": "tenureInMonths",
            "in": "query",
            "name": "tenureInMonths",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "interestCompoundingPeriodInMonths",
            "in": "query",
            "name": "interestCompoundingPeriodInMonths",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "interestPostingPeriodInMonths",
            "in": "query",
            "name": "interestPostingPeriodInMonths",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CalculateFixedDepositInterestResponse" }
              }
            },
            "description": "OK"
          }
        },
        "tags": ["Fixed Deposit Account"]
      }
    },
    "/v1/fixeddepositaccounts/downloadtemplate": {
      "get": {
        "operationId": "getFixedDepositTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "staffId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Fixed Deposit Account"]
      }
    },
    "/v1/fixeddepositaccounts/template": {
      "get": {
        "description": "This is a convenience resource. It can be useful when building maintenance user interface screens for fixed deposit applications. The template data returned consists of any or all of:\n\n\n\nField Defaults\n\nAllowed Value ListsExample Requests:\n\n\n\nfixeddepositaccounts/template?clientId=1",
        "operationId": "retrieveTemplateFixedDepositAccount",
        "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": "staffInSelectedOfficeOnly",
            "in": "query",
            "name": "staffInSelectedOfficeOnly",
            "schema": { "type": "boolean", "default": false }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetFixedDepositAccountsTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Fixed Deposit Account Template",
        "tags": ["Fixed Deposit Account"],
        "x-alternative-operation-id": "template_12"
      }
    },
    "/v1/fixeddepositaccounts/transaction/downloadtemplate": {
      "get": {
        "operationId": "getFixedDepositTransactionTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Fixed Deposit Account"]
      }
    },
    "/v1/fixeddepositaccounts/transaction/uploadtemplate": {
      "post": {
        "operationId": "postFixedDepositTransactionTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload fixed deposit transaction template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Fixed Deposit Account"]
      }
    },
    "/v1/fixeddepositaccounts/uploadtemplate": {
      "post": {
        "operationId": "postFixedDepositTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload fixed deposit template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Fixed Deposit Account"]
      }
    },
    "/v1/fixeddepositaccounts/{accountId}": {
      "delete": {
        "description": "At present we support hard delete of fixed deposit application so long as its in 'Submitted and pending approval' state. One the application is moves past this state, it is not possible to do a 'hard' delete of the application or the account. An API endpoint will be added to close/de-activate the fixed deposit account.",
        "operationId": "deleteFixedDepositAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteFixedDepositAccountsAccountIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a fixed deposit application",
        "tags": ["Fixed Deposit Account"],
        "x-alternative-operation-id": "delete_14"
      },
      "get": {
        "description": "Retrieves a fixed deposit application/account\n\nExample Requests :\n\n\n\nfixeddepositaccounts/1\n\nfixeddepositaccounts/1?associations=all",
        "operationId": "retrieveOneFixedDepositAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "staffInSelectedOfficeOnly",
            "in": "query",
            "name": "staffInSelectedOfficeOnly",
            "schema": { "type": "boolean", "default": false }
          },
          {
            "description": "chargeStatus",
            "in": "query",
            "name": "chargeStatus",
            "schema": { "type": "string", "default": "all" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFixedDepositAccountsAccountIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a fixed deposit application/account",
        "tags": ["Fixed Deposit Account"],
        "x-alternative-operation-id": "retrieveOne_19"
      },
      "post": {
        "description": "Approve fixed deposit application:\n\nApproves fixed deposit application so long as its in 'Submitted and pending approval' state.\n\nUndo approval fixed deposit application:\n\nWill move 'approved' fixed deposit application back to 'Submitted and pending approval' state.\n\nReject fixed deposit application:\n\nRejects fixed deposit application so long as its in 'Submitted and pending approval' state.\n\nWithdraw fixed deposit application:\n\nUsed when an applicant withdraws from the fixed deposit application. It must be in 'Submitted and pending approval' state.\n\nClose a fixed deposit account:\n\nResults in a Matured fixed deposit account being converted into a 'closed' fixed deposit account.\n\nPremature Close a fixed deposit account:\n\nResults in an Active fixed deposit account being converted into a 'Premature Closed' fixed deposit account with options to withdraw prematured amount. (premature amount is calculated using interest rate chart applicable along with penal interest if any.)\n\nCalculate Premature amount on Fixed deposit account:\n\nCalculate premature amount on fixed deposit account till premature close date. Premature amount is calculated based on interest chart and penal interest applicable.\n\nCalculate Interest on Fixed Deposit Account:\n\nCalculates interest earned on a fixed deposit account based on todays date. It does not attempt to post or credit the interest on the account. That is responsibility of the Post Interest API that will likely be called by overnight process.\n\nPost Interest on Fixed Deposit Account:\n\nCalculates and Posts interest earned on a fixed deposit account based on today's date and whether an interest posting or crediting event is due.\n\nShowing request/response for Calculate Interest on Fixed Deposit Account",
        "operationId": "handleCommandsFixedDepositAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostFixedDepositAccountsAccountIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostFixedDepositAccountsAccountIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Approve fixed deposit application | Undo approval fixed deposit application | Reject fixed deposit application | Withdraw fixed deposit application | Activate a fixed deposit account | Close a fixed deposit account | Premature Close a fixed deposit account | Calculate Premature amount on Fixed deposit account | Calculate Interest on Fixed Deposit Account | Post Interest on Fixed Deposit Account",
        "tags": ["Fixed Deposit Account"],
        "x-alternative-operation-id": "handleCommands_4"
      },
      "put": {
        "description": "Fixed deposit 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. Specific api endpoints will be created to allow change of interest detail such as rate, compounding period, posting period etc",
        "operationId": "updateFixedDepositAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutFixedDepositAccountsAccountIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutFixedDepositAccountsAccountIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modify a fixed deposit application",
        "tags": ["Fixed Deposit Account"],
        "x-alternative-operation-id": "update_16"
      }
    },
    "/v1/fixeddepositaccounts/{accountId}/template": {
      "get": {
        "operationId": "accountClosureTemplate",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Fixed Deposit Account"]
      }
    },
    "/v1/fixeddepositaccounts/{fixedDepositAccountId}/transactions": {
      "get": {
        "operationId": "retrieveAllFixedDepositAccountTransactions",
        "parameters": [
          {
            "in": "path",
            "name": "fixedDepositAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetFixedDepositAccountsAccountIdTransactionsResponse"
                  }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List fixed deposit account transactions",
        "tags": ["Fixed Deposit Account Transactions"]
      },
      "post": {
        "operationId": "transaction",
        "parameters": [
          {
            "in": "path",
            "name": "fixedDepositAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Fixed Deposit Account Transactions"]
      }
    },
    "/v1/fixeddepositaccounts/{fixedDepositAccountId}/transactions/template": {
      "get": {
        "operationId": "retrieveTemplateFixedDepositAccountTransaction",
        "parameters": [
          {
            "in": "path",
            "name": "fixedDepositAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve Fixed Deposit Account Transaction Template",
        "tags": ["Fixed Deposit Account Transactions"],
        "x-alternative-operation-id": "retrieveTemplate_14"
      }
    },
    "/v1/fixeddepositaccounts/{fixedDepositAccountId}/transactions/{transactionId}": {
      "get": {
        "operationId": "retrieveOneFixedDepositAccountTransaction",
        "parameters": [
          {
            "in": "path",
            "name": "fixedDepositAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve a fixed deposit account transaction",
        "tags": ["Fixed Deposit Account Transactions"],
        "x-alternative-operation-id": "retrieveOne_18"
      },
      "post": {
        "description": "Adjust Transaction:\n\nThis command modifies the given transaction.\n\nUndo transaction:\n\nThis command reverses the given transaction.\n\nShowing request/response for 'Adjust Transaction'",
        "operationId": "handleCommandsFixedDepositAccountTransaction",
        "parameters": [
          {
            "in": "path",
            "name": "fixedDepositAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostFixedDepositAccountsFixedDepositAccountIdTransactionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostFixedDepositAccountsFixedDepositAccountIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "error occurred"
          }
        },
        "summary": "Adjust Transaction | Undo transaction",
        "tags": ["Fixed Deposit Account Transactions"],
        "x-alternative-operation-id": "adjustTransaction"
      }
    },
    "/v1/fixeddepositproducts": {
      "get": {
        "description": "Lists Fixed Deposit Products\n\nExample Requests:\n\nfixeddepositproducts\n\n\nfixeddepositproducts?fields=name",
        "operationId": "retrieveAllFixedDepositProducts",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetFixedDepositProductsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Fixed Deposit Products",
        "tags": ["Fixed Deposit Product"],
        "x-alternative-operation-id": "retrieveAll_30"
      },
      "post": {
        "description": "Creates a Fixed Deposit Product\n\nMandatory Fields: name, shortName, description, currencyCode, digitsAfterDecimal,inMultiplesOf, interestCompoundingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minDepositTerm, minDepositTermTypeId, accountingRule\n\nOptional Fields: lockinPeriodFrequency, lockinPeriodFrequencyType, maxDepositTerm, maxDepositTermTypeId, inMultiplesOfDepositTerm, inMultiplesOfDepositTermTypeId, preClosurePenalApplicable, preClosurePenalInterest, preClosurePenalInterestOnTypeId, feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, charges, charts, , withHoldTax, taxGroupId\n\n\nMandatory Fields for Cash based accounting (accountingRule = 2): savingsReferenceAccountId, savingsControlAccountId, interestOnSavingsAccountId, incomeFromFeeAccountId, transfersInSuspenseAccountId, incomeFromPenaltyAccountId",
        "operationId": "createFixedDepositProduct",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostFixedDepositProductsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostFixedDepositProductsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Fixed Deposit Product",
        "tags": ["Fixed Deposit Product"],
        "x-alternative-operation-id": "create_11"
      }
    },
    "/v1/fixeddepositproducts/template": {
      "get": {
        "operationId": "retrieveTemplateFixedDepositProduct",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve Fixed Deposit Product Template",
        "tags": ["Fixed Deposit Product"],
        "x-alternative-operation-id": "retrieveTemplate_15"
      }
    },
    "/v1/fixeddepositproducts/{productId}": {
      "delete": {
        "description": "Deletes a Fixed Deposit Product",
        "operationId": "deleteFixedDepositProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteFixedDepositProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Fixed Deposit Product",
        "tags": ["Fixed Deposit Product"],
        "x-alternative-operation-id": "delete_15"
      },
      "get": {
        "description": "Retrieves a Fixed Deposit Product\n\nExample Requests:\n\nfixeddepositproducts/1\n\n\nfixeddepositproducts/1?template=true\n\n\nfixeddepositproducts/1?fields=name,description",
        "operationId": "retrieveOneFixedDepositProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFixedDepositProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Fixed Deposit Product",
        "tags": ["Fixed Deposit Product"],
        "x-alternative-operation-id": "retrieveOne_20"
      },
      "put": {
        "description": "Updates a Fixed Deposit Product",
        "operationId": "updateFixedDepositProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutFixedDepositProductsProductIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutFixedDepositProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Fixed Deposit Product",
        "tags": ["Fixed Deposit Product"],
        "x-alternative-operation-id": "update_17"
      }
    },
    "/v1/floatingrates": {
      "get": {
        "description": "Lists Floating Rates",
        "operationId": "retrieveAllFloatingRates",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/FloatingRateData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Floating Rates",
        "tags": ["Floating Rates"],
        "x-alternative-operation-id": "retrieveAll_22"
      },
      "post": {
        "description": "Creates a new Floating Rate\nMandatory Fields: name\nOptional Fields: isBaseLendingRate, isActive, ratePeriods",
        "operationId": "createFloatingRate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/FloatingRateCreateRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/FloatingRateCreateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create a new Floating Rate",
        "tags": ["Floating Rates"]
      }
    },
    "/v1/floatingrates/{floatingRateId}": {
      "get": {
        "description": "Retrieves Floating Rate",
        "operationId": "retrieveOneFloatingRate",
        "parameters": [
          {
            "description": "floatingRateId",
            "in": "path",
            "name": "floatingRateId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/FloatingRateData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Floating Rate",
        "tags": ["Floating Rates"],
        "x-alternative-operation-id": "retrieveOne_13"
      },
      "put": {
        "description": "Updates new Floating Rate. Rate Periods in the past cannot be modified. All the future rateperiods would be replaced with the new ratePeriods data sent.",
        "operationId": "updateFloatingRate",
        "parameters": [
          {
            "description": "floatingRateId",
            "in": "path",
            "name": "floatingRateId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/FloatingRateUpdateRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/FloatingRateUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update Floating Rate",
        "tags": ["Floating Rates"]
      }
    },
    "/v1/funds": {
      "get": {
        "description": "Returns the list of funds.\n\nExample Requests:\n\nfunds",
        "operationId": "retrieveFunds",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FundData" } }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Funds",
        "tags": ["Funds"]
      },
      "post": {
        "description": "Creates a Fund",
        "operationId": "createFund",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/FundRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/PostFundsResponse" } }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Fund",
        "tags": ["Funds"]
      }
    },
    "/v1/funds/{fundId}": {
      "get": {
        "description": "Returns the details of a Fund.\n\nExample Requests:\n\nfunds/1",
        "operationId": "retrieveFund",
        "parameters": [
          {
            "description": "fundId",
            "in": "path",
            "name": "fundId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/FundData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a Fund",
        "tags": ["Funds"]
      },
      "put": {
        "description": "Updates the details of a fund.",
        "operationId": "updateFund",
        "parameters": [
          {
            "description": "fundId",
            "in": "path",
            "name": "fundId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/FundRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutFundsFundIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Fund",
        "tags": ["Funds"]
      }
    },
    "/v1/glaccounts": {
      "get": {
        "description": "ARGUMENTS\ntype Integer optional manualEntriesAllowed boolean optional usage Integer optional disabled boolean optional parentId Long optional tagId Long optional\nExample Requests:\n\nglaccounts\n\nglaccounts?type=1&manualEntriesAllowed=true&usage=1&disabled=false\n\nglaccounts?fetchRunningBalance=true\n",
        "operationId": "retrieveAllAccounts",
        "parameters": [
          {
            "description": "type",
            "in": "query",
            "name": "type",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "searchParam",
            "in": "query",
            "name": "searchParam",
            "schema": { "type": "string" }
          },
          {
            "description": "usage",
            "in": "query",
            "name": "usage",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "manualEntriesAllowed",
            "in": "query",
            "name": "manualEntriesAllowed",
            "schema": { "type": "boolean" }
          },
          {
            "description": "disabled",
            "in": "query",
            "name": "disabled",
            "schema": { "type": "boolean" }
          },
          {
            "description": "fetchRunningBalance",
            "in": "query",
            "name": "fetchRunningBalance",
            "schema": { "type": "boolean" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetGLAccountsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List General Ledger Account",
        "tags": ["General Ledger Account"]
      },
      "post": {
        "description": "Note: You may optionally create Hierarchical Chart of Accounts by using the \"parentId\" property of an Account\nMandatory Fields:\nname, glCode, type, usage and manualEntriesAllowed\n",
        "operationId": "createGLAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostGLAccountsRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostGLAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a General Ledger Account",
        "tags": ["General Ledger Account"],
        "x-alternative-operation-id": "createGLAccount_1"
      }
    },
    "/v1/glaccounts/downloadtemplate": {
      "get": {
        "operationId": "getGlAccountsTemplate",
        "parameters": [{ "in": "query", "name": "dateFormat", "schema": { "type": "string" } }],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["General Ledger Account"]
      }
    },
    "/v1/glaccounts/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\nExample Request:\n\nglaccounts/template\nglaccounts/template?type=1\n\ntype is optional and integer value from 1 to 5.\n\n1.Assets\n2.Liabilities\n3.Equity\n4.Income\n5.Expenses\n",
        "operationId": "retrieveNewAccountDetails",
        "parameters": [
          {
            "description": "type",
            "in": "query",
            "name": "type",
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetGLAccountsTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve GL Accounts Template",
        "tags": ["General Ledger Account"]
      }
    },
    "/v1/glaccounts/uploadtemplate": {
      "post": {
        "operationId": "postGlAccountsTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload GL accounts template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "integer", "format": "int64" } } },
            "description": "default response"
          }
        },
        "tags": ["General Ledger Account"]
      }
    },
    "/v1/glaccounts/{glAccountId}": {
      "delete": {
        "description": "Deletes a GL Account",
        "operationId": "deleteGLAccount",
        "parameters": [
          {
            "description": "glAccountId",
            "in": "path",
            "name": "glAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteGLAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a GL Account",
        "tags": ["General Ledger Account"],
        "x-alternative-operation-id": "deleteGLAccount_1"
      },
      "get": {
        "description": "Example Requests:\n\nglaccounts/1\n\nglaccounts/1?template=true\n\nglaccounts/1?fields=name,glCode\n\nglaccounts/1?fetchRunningBalance=true\n",
        "operationId": "retreiveAccount",
        "parameters": [
          {
            "description": "glAccountId",
            "in": "path",
            "name": "glAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "fetchRunningBalance",
            "in": "query",
            "name": "fetchRunningBalance",
            "schema": { "type": "boolean" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetGLAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a General Ledger Account",
        "tags": ["General Ledger Account"]
      },
      "put": {
        "description": "Updates a GL Account",
        "operationId": "updateGLAccount",
        "parameters": [
          {
            "description": "glAccountId",
            "in": "path",
            "name": "glAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutGLAccountsRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutGLAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a GL Account",
        "tags": ["General Ledger Account"],
        "x-alternative-operation-id": "updateGLAccount_1"
      }
    },
    "/v1/glclosures": {
      "get": {
        "description": "Example Requests:\n\nglclosures",
        "operationId": "retrieveAllGLClosures",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetGlClosureResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Accounting closures",
        "tags": ["Accounting Closure"],
        "x-alternative-operation-id": "retrieveAllClosures"
      },
      "post": {
        "description": "Mandatory Fields\nofficeId,closingDate",
        "operationId": "createGLClosure",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostGlClosuresRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostGlClosuresResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create an Accounting Closure",
        "tags": ["Accounting Closure"]
      }
    },
    "/v1/glclosures/{glClosureId}": {
      "delete": {
        "description": "Note: Only the latest accounting closure associated with a branch may be deleted.",
        "operationId": "deleteGLClosure",
        "parameters": [
          {
            "description": "glclosureId",
            "in": "path",
            "name": "glClosureId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteGlClosuresResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete an accounting closure",
        "tags": ["Accounting Closure"]
      },
      "get": {
        "description": "Example Requests:\n\nglclosures/1\n\n\n/glclosures/1?fields=officeName,closingDate",
        "operationId": "retrieveOneGLClosure",
        "parameters": [
          {
            "description": "glClosureId",
            "in": "path",
            "name": "glClosureId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetGlClosureResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve an Accounting Closure",
        "tags": ["Accounting Closure"],
        "x-alternative-operation-id": "retreiveClosure"
      },
      "put": {
        "description": "Once an accounting closure is created, only the comments associated with it may be edited",
        "operationId": "updateGLClosure",
        "parameters": [
          {
            "description": "glClosureId",
            "in": "path",
            "name": "glClosureId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutGlClosuresRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutGlClosuresResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update an Accounting closure",
        "tags": ["Accounting Closure"]
      }
    },
    "/v1/grouplevels": {
      "get": {
        "operationId": "retrieveAllGroupLevels",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GroupLevelData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve All Group Levels",
        "tags": ["Groups Level"],
        "x-alternative-operation-id": "retrieveAllGroups"
      }
    },
    "/v1/groups": {
      "get": {
        "description": "The default implementation of listing Groups returns 200 entries with support for pagination and sorting. Using the parameter limit with description -1 returns all entries.\n\nExample Requests:\n\n\n\ngroups\n\n\n\ngroups?fields=name,officeName,joinedDate\n\n\n\ngroups?offset=10&limit=50\n\n\n\ngroups?orderBy=name&sortOrder=DESC",
        "operationId": "retrieveAllGroups",
        "parameters": [
          {
            "description": "officeId",
            "in": "query",
            "name": "officeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "staffId",
            "in": "query",
            "name": "staffId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "externalId",
            "in": "query",
            "name": "externalId",
            "schema": { "type": "string" }
          },
          { "description": "name", "in": "query", "name": "name", "schema": { "type": "string" } },
          {
            "description": "underHierarchy",
            "in": "query",
            "name": "underHierarchy",
            "schema": { "type": "string" }
          },
          {
            "description": "paged",
            "in": "query",
            "name": "paged",
            "schema": { "type": "boolean" }
          },
          {
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/GetGroupsResponse" } }
            },
            "description": "OK"
          }
        },
        "summary": "List Groups",
        "tags": ["Groups"],
        "x-alternative-operation-id": "retrieveAll_24"
      },
      "post": {
        "description": "Creates a Group\n\nMandatory Fields: name, officeId, active, activationDate (if active=true)\n\nOptional Fields: externalId, staffId, clientMembers",
        "operationId": "createGroup",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/PostGroupsRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostGroupsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Group",
        "tags": ["Groups"],
        "x-alternative-operation-id": "create_8"
      }
    },
    "/v1/groups/downloadtemplate": {
      "get": {
        "operationId": "getBulkTemplateGroup",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "staffId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "summary": "Download Groups Bulk Template",
        "tags": ["Groups"],
        "x-alternative-operation-id": "getGroupsTemplate"
      }
    },
    "/v1/groups/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\n\n\nField Defaults\n\nAllowed Value Lists\n\nExample Requests:\n\n\n\ngroups/template\n\n\n\ngroups/template?officeId=2\n\n\n\ngroups/template?centerId=1\n\n\n\ngroups/template?centerId=1&staffInSelectedOfficeOnly=true",
        "operationId": "retrieveTemplateGroup",
        "parameters": [
          {
            "description": "officeId",
            "in": "query",
            "name": "officeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "center",
            "in": "query",
            "name": "center",
            "schema": { "type": "boolean" }
          },
          {
            "description": "centerId",
            "in": "query",
            "name": "centerId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          },
          {
            "description": "staffInSelectedOfficeOnly",
            "in": "query",
            "name": "staffInSelectedOfficeOnly",
            "schema": { "type": "boolean", "default": false }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetGroupsTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Group Template",
        "tags": ["Groups"],
        "x-alternative-operation-id": "retrieveTemplate_7"
      }
    },
    "/v1/groups/uploadtemplate": {
      "post": {
        "operationId": "postBulkTemplateGroup",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload group template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Upload Groups Bulk Template",
        "tags": ["Groups"],
        "x-alternative-operation-id": "postGroupTemplate"
      }
    },
    "/v1/groups/{groupId}": {
      "delete": {
        "description": "A group can be deleted if it is in pending state and has no associations - clients, loans or savings",
        "operationId": "deleteGroup",
        "parameters": [
          {
            "description": "groupId",
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteGroupsGroupIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Group",
        "tags": ["Groups"],
        "x-alternative-operation-id": "delete_11"
      },
      "get": {
        "description": "Retrieve group information.\n\nExample Requests:\n\n\n\ngroups/1\n\n\n\ngroups/1?associations=clientMembers",
        "operationId": "retrieveOneGroup",
        "parameters": [
          {
            "description": "groupId",
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "staffInSelectedOfficeOnly",
            "in": "query",
            "name": "staffInSelectedOfficeOnly",
            "schema": { "type": "boolean", "default": false }
          },
          {
            "description": "roleId",
            "in": "query",
            "name": "roleId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetGroupsGroupIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Group",
        "tags": ["Groups"],
        "x-alternative-operation-id": "retrieveOne_15"
      },
      "post": {
        "description": "Activate a Group:\n\nGroups can be created in a Pending state. This API exists to enable group activation.\n\n\n\nIf the group happens to be already active this API will result in an error.\n\nMandatory Fields: activationDate\n\nAssociate Clients:\n\nThis API allows to associate existing clients to a group.\n\n\n\nThe clients are listed from the office to which the group is associated.\n\n\n\nIf client(s) is already associated with group then API will result in an error.\n\nMandatory Fields: clientMembers\n\nDisassociate Clients:\n\nThis API allows to disassociate clients from a group.\n\n\n\nDisassociating a client with active joint liability group loans results in an error.\n\nMandatory Fields: clientMembers\n\nTransfer Clients across groups:\n\nThis API allows to transfer clients from one group to another\n\nMandatory Fields: destinationGroupId and clients\n\nOptional Fields: inheritDestinationGroupLoanOfficer (defaults to true) and transferActiveLoans (defaults to true)\n\nGenerate Collection Sheet:\n\nThis API retrieves repayment details of all jlg loans of all members of a group on a specified meeting date.\n\nMandatory Fields: calendarId and transactionDate\n\nSave Collection Sheet:\n\nThis api allows the loan officer to perform bulk repayments of JLG loans for a group on its meeting date.\n\nMandatory Fields: calendarId, transactionDate, actualDisbursementDate\n\nOptional Fields: clientsAttendance, bulkRepaymentTransaction, bulkDisbursementTransactions\n\nUnassign a Staff:\n\nAllows you to unassign the Staff.\n\nMandatory Fields: staffId\n\nAssign a Staff:\n\nAllows you to assign Staff to an existing Group.\n\n\n\nThe selected Staff should be belong to the same office (or an office higher up in the hierarchy) as this groupMandatory Fields: staffId\n\nOptional Fields: inheritStaffForClientAccounts (Optional: Boolean if true all members of the group (i.e all clients with active loans and savings ) will inherit the staffId)\n\nClose a Group:\n\nThis API exists to close a group. Groups can be closed if they don't have any non-closed clients/loans/savingsAccounts.\n\n\n\nIf the group has any active clients/loans/savingsAccount, this API will result in an error.Assign a Role:\n\nAllows you to assign a Role to an existing member of a group.\n\n\n\nWe can define the different roles applicable to group members by adding code values to the pre-defined system code GROUPROLE. Example:Group leader etc.\n\nMandatory Fields: clientId, role\n\nUnassign a Role:\n\nAllows you to unassign Roles associated tp Group members.\n\nUpdate a Role:\n\nAllows you to update the member Role.\n\nMandatory Fields: role\n\nShowing request/response for Transfer Clients across groups",
        "operationId": "handleCommandsGroup",
        "parameters": [
          {
            "description": "groupId",
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          },
          {
            "description": "roleId",
            "in": "query",
            "name": "roleId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostGroupsGroupIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostGroupsGroupIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Activate a Group | Associate Clients | Disassociate Clients | Transfer Clients across groups | Generate Collection Sheet | Save Collection Sheet | Unassign a Staff | Assign a Staff | Close a Group | Unassign a Role | Update a Role",
        "tags": ["Groups"],
        "x-alternative-operation-id": "activateOrGenerateCollectionSheet"
      },
      "put": {
        "description": "Updates a Group",
        "operationId": "updateGroup",
        "parameters": [
          {
            "description": "groupId",
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutGroupsGroupIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutGroupsGroupIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Group",
        "tags": ["Groups"],
        "x-alternative-operation-id": "update_13"
      }
    },
    "/v1/groups/{groupId}/accounts": {
      "get": {
        "description": "Retrieves details of all Loan and Savings accounts associated with this group.\n\n\n\nExample Requests:\n\n\n\ngroups/1/accounts\n\n\n\n\n\ngroups/1/accounts?fields=loanAccounts,savingsAccounts,memberLoanAccounts,\n\nmemberSavingsAccounts",
        "operationId": "retrieveAccountsGroup",
        "parameters": [
          {
            "description": "groupId",
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Group accounts overview",
        "tags": ["Groups"],
        "x-alternative-operation-id": "retrieveAccounts"
      }
    },
    "/v1/groups/{groupId}/command/unassign_staff": {
      "post": {
        "description": "Allows you to unassign the Staff.\n\nMandatory Fields: staffId",
        "operationId": "unassignLoanOfficerGroup",
        "parameters": [
          {
            "description": "groupId",
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostGroupsGroupIdCommandUnassignStaffRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostGroupsGroupIdCommandUnassignStaffResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Unassign a Staff",
        "tags": ["Groups"],
        "x-alternative-operation-id": "unassignLoanOfficer"
      }
    },
    "/v1/groups/{groupId}/glimaccounts": {
      "get": {
        "operationId": "retrieveGlimAccountsGroup",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "parentLoanAccountNo", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve GLIM Accounts for Group",
        "tags": ["Groups"],
        "x-alternative-operation-id": "retrieveglimAccounts"
      }
    },
    "/v1/groups/{groupId}/gsimaccounts": {
      "get": {
        "operationId": "retrieveGsimAccountsGroup",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "parentGSIMAccountNo", "schema": { "type": "string" } },
          {
            "in": "query",
            "name": "parentGSIMId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve GSIM Accounts for Group",
        "tags": ["Groups"],
        "x-alternative-operation-id": "retrieveGsimAccounts"
      }
    },
    "/v1/holidays": {
      "get": {
        "description": "Example Requests:\n\nholidays?officeId=1",
        "operationId": "retrieveAllHolidays",
        "parameters": [
          {
            "description": "officeId",
            "in": "query",
            "name": "officeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "fromDate",
            "in": "query",
            "name": "fromDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "description": "toDate",
            "in": "query",
            "name": "toDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "description": "locale",
            "in": "query",
            "name": "locale",
            "schema": { "type": "string" }
          },
          {
            "description": "dateFormat",
            "in": "query",
            "name": "dateFormat",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetHolidaysResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Holidays",
        "tags": ["Holidays"]
      },
      "post": {
        "description": "Mandatory Fields: name, description, fromDate, toDate, repaymentsRescheduledTo, offices",
        "operationId": "createHoliday",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/PostHolidaysRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostHolidaysResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Holiday",
        "tags": ["Holidays"],
        "x-alternative-operation-id": "createNewHoliday"
      }
    },
    "/v1/holidays/template": {
      "get": {
        "operationId": "retrieveRepaymentScheduleUpdationTyeOptions",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Holidays"]
      }
    },
    "/v1/holidays/{holidayId}": {
      "delete": {
        "description": "This API allows to delete a holiday. This is a soft delete the deleted holiday status is marked as deleted.",
        "operationId": "deleteHoliday",
        "parameters": [
          {
            "description": "holidayId",
            "in": "path",
            "name": "holidayId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteHolidaysHolidayIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Holiday",
        "tags": ["Holidays"],
        "x-alternative-operation-id": "delete_6"
      },
      "get": {
        "description": "Example Requests:\n\nholidays/1",
        "operationId": "retrieveOneHoliday",
        "parameters": [
          {
            "description": "holidayId",
            "in": "path",
            "name": "holidayId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetHolidaysResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Holiday",
        "tags": ["Holidays"],
        "x-alternative-operation-id": "retrieveOne_7"
      },
      "post": {
        "description": "Always Holidays are created in pending state. This API allows to activate a holiday.\n\nOnly the active holidays are considered for rescheduling the loan repayment.",
        "operationId": "handleCommandsHoliday",
        "parameters": [
          {
            "description": "holidayId",
            "in": "path",
            "name": "holidayId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostHolidaysHolidayIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostHolidaysHolidayIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Activate a Holiday",
        "tags": ["Holidays"],
        "x-alternative-operation-id": "handleCommands_1"
      },
      "put": {
        "description": "If a holiday is in pending state (created and not activated) then all fields are allowed to modify. Once holidays become active only name and descriptions are allowed to modify.",
        "operationId": "updateHoliday",
        "parameters": [
          {
            "description": "holidayId",
            "in": "path",
            "name": "holidayId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutHolidaysHolidayIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutHolidaysHolidayIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Holiday",
        "tags": ["Holidays"],
        "x-alternative-operation-id": "update_6"
      }
    },
    "/v1/hooks": {
      "get": {
        "description": "Returns the list of hooks",
        "operationId": "retrieveAllHooks",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "$ref": "#/components/schemas/HookData" } }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Hooks",
        "tags": ["Hooks"],
        "x-alternative-operation-id": "retrieveHooks"
      },
      "post": {
        "operationId": "createHook",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/HookCreateRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/HookCreateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create a Hook",
        "tags": ["Hooks"]
      }
    },
    "/v1/hooks/template": {
      "get": {
        "description": "This is a convenience resource. It can be useful when building maintenance user interface screens for client applications.",
        "operationId": "retrieveTemplateHook",
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/HookDetailsData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Hooks Template",
        "tags": ["Hooks"],
        "x-alternative-operation-id": "template_3"
      }
    },
    "/v1/hooks/{hookId}": {
      "delete": {
        "description": "Deletes a hook.",
        "operationId": "deleteHook",
        "parameters": [
          {
            "description": "hookId",
            "in": "path",
            "name": "hookId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/HookDeleteResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete a Hook",
        "tags": ["Hooks"]
      },
      "get": {
        "description": "Returns the details of a Hook.",
        "operationId": "retrieveOneHook",
        "parameters": [
          {
            "description": "hookId",
            "in": "path",
            "name": "hookId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "template",
            "in": "query",
            "name": "template",
            "schema": { "type": "boolean", "default": false }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/HookData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a Hook",
        "tags": ["Hooks"],
        "x-alternative-operation-id": "retrieveHook"
      },
      "put": {
        "description": "Updates the details of a hook.",
        "operationId": "updateHook",
        "parameters": [
          {
            "description": "hookId",
            "in": "path",
            "name": "hookId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/HookUpdateRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/HookUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update a Hook",
        "tags": ["Hooks"]
      }
    },
    "/v1/imports": {
      "get": {
        "operationId": "retrieveImportDocuments",
        "parameters": [{ "in": "query", "name": "entityType", "schema": { "type": "string" } }],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Bulk Import"]
      }
    },
    "/v1/imports/downloadOutputTemplate": {
      "get": {
        "operationId": "getOutputTemplate",
        "parameters": [
          {
            "in": "query",
            "name": "importDocumentId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Bulk Import"]
      }
    },
    "/v1/imports/getOutputTemplateLocation": {
      "get": {
        "operationId": "retriveOutputTemplateLocation",
        "parameters": [
          {
            "in": "query",
            "name": "importDocumentId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Bulk Import"]
      }
    },
    "/v1/instance-mode": {
      "put": {
        "operationId": "updateInstanceMode",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ChangeInstanceModeRequest" }
            }
          },
          "required": true
        },
        "responses": { "200": { "description": "OK" } },
        "summary": "Changes the KiKé Group instance mode",
        "tags": ["Instance Mode"],
        "x-alternative-operation-id": "changeMode"
      }
    },
    "/v1/interestratecharts": {
      "get": {
        "description": "Retrieve list of charts associated with a term deposit product(FD or RD).\nExample Requests: interestratecharts?productId=1\n",
        "operationId": "retrieveAllInterestRateCharts",
        "parameters": [
          { "in": "query", "name": "productId", "schema": { "type": "integer", "format": "int64" } }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetInterestRateChartsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve all Charts",
        "tags": ["Interest Rate Chart"],
        "x-alternative-operation-id": "retrieveAll_26"
      },
      "post": {
        "description": "Creates a new chart which can be attached to a term deposit products (FD or RD).",
        "operationId": "createInterestRateChart",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InterestRateChartCreateRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InterestRateChartCreateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Chart",
        "tags": ["Interest Rate Chart"],
        "x-alternative-operation-id": "create_10"
      }
    },
    "/v1/interestratecharts/template": {
      "get": {
        "description": "This is a convenience resource. It can be useful when building maintenance user interface screens for creating a chart. The template data returned consists of any or all of: Field Defaults Allowed Value Lists\nExample Request: interestratecharts/template\n",
        "operationId": "retrieveTemplateInterestRateChart",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetInterestRateChartsTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Chart Details Template",
        "tags": ["Interest Rate Chart"],
        "x-alternative-operation-id": "template_9"
      }
    },
    "/v1/interestratecharts/{chartId}": {
      "delete": {
        "description": "It deletes the chart",
        "operationId": "deleteInterestRateChart",
        "parameters": [
          {
            "in": "path",
            "name": "chartId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InterestRateChartDeleteResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Chart",
        "tags": ["Interest Rate Chart"],
        "x-alternative-operation-id": "delete_13"
      },
      "get": {
        "description": "It retrieves the Interest Rate Chart\nExample Requests:\n\ninterestratecharts/1",
        "operationId": "retrieveOneInterestRateChart",
        "parameters": [
          {
            "in": "path",
            "name": "chartId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "associations", "schema": { "type": "string" } }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetInterestRateChartsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Chart",
        "tags": ["Interest Rate Chart"],
        "x-alternative-operation-id": "retrieveOne_17"
      },
      "put": {
        "description": "It updates the chart",
        "operationId": "updateInterestRateChart",
        "parameters": [
          {
            "in": "path",
            "name": "chartId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InterestRateChartUpdateRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InterestRateChartUpdateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Chart",
        "tags": ["Interest Rate Chart"],
        "x-alternative-operation-id": "update_15"
      }
    },
    "/v1/interestratecharts/{chartId}/chartslabs": {
      "get": {
        "description": "Retrieve list of slabs associated with a chart\n\nExample Requests:\n\ninterestratecharts/1/chartslabs",
        "operationId": "retrieveAllInterestRateChartSlabs",
        "parameters": [
          {
            "in": "path",
            "name": "chartId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/InterestRateChartSlabData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve all Slabs",
        "tags": ["Interest Rate Slab (A.K.A interest bands)"],
        "x-alternative-operation-id": "retrieveAll_25"
      },
      "post": {
        "description": "Creates a new interest rate slab for an interest rate chart.\n\nMandatory Fields:\n\n- periodType\n- fromPeriod\n- annualInterestRate\n\nOptional Fields\n\n- toPeriod\n- description\n\nExample Requests:\n\n- interestratecharts/1/chartslabs\n",
        "operationId": "createInterestRateChartSlab",
        "parameters": [
          {
            "in": "path",
            "name": "chartId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InterestRateChartSlabsCreateRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InterestRateChartSlabsCreateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Slab",
        "tags": ["Interest Rate Slab (A.K.A interest bands)"],
        "x-alternative-operation-id": "create_9"
      }
    },
    "/v1/interestratecharts/{chartId}/chartslabs/template": {
      "get": {
        "operationId": "retrieveTemplateInterestRateChartSlab",
        "parameters": [
          {
            "in": "path",
            "name": "chartId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InterestRateChartSlabData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Chart Slab Template",
        "tags": ["Interest Rate Slab (A.K.A interest bands)"],
        "x-alternative-operation-id": "template_8"
      }
    },
    "/v1/interestratecharts/{chartId}/chartslabs/{chartSlabId}": {
      "delete": {
        "description": "Delete a Slab from a chart",
        "operationId": "deleteInterestRateChartSlab",
        "parameters": [
          {
            "in": "path",
            "name": "chartId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "chartSlabId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InterestRateChartSlabsDeleteResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Slab",
        "tags": ["Interest Rate Slab (A.K.A interest bands)"],
        "x-alternative-operation-id": "delete_12"
      },
      "get": {
        "description": "Retrieve a slab associated with an Interest rate chart\n\nExample Requests:\n\n- interestratecharts/1/chartslabs/1\n",
        "operationId": "retrieveOneInterestRateChartSlab",
        "parameters": [
          {
            "in": "path",
            "name": "chartId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "chartSlabId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InterestRateChartSlabData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a Slab",
        "tags": ["Interest Rate Slab (A.K.A interest bands)"],
        "x-alternative-operation-id": "retrieveOne_16"
      },
      "put": {
        "description": "It updates the Slab from chart",
        "operationId": "updateInterestRateChartSlab",
        "parameters": [
          {
            "in": "path",
            "name": "chartId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "chartSlabId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InterestRateChartSlabsUpdateRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InterestRateChartSlabsUpdateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Slab",
        "tags": ["Interest Rate Slab (A.K.A interest bands)"],
        "x-alternative-operation-id": "update_14"
      }
    },
    "/v1/internal/client/{clientId}/audit": {
      "get": {
        "operationId": "getInternalClientAuditFields",
        "parameters": [
          {
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Get internal client audit fields",
        "x-alternative-operation-id": "getClientAuditFields"
      }
    },
    "/v1/internal/cob/fast-forward-cob-date-of-loan/{loanId}": {
      "post": {
        "operationId": "updateLoanCobLastDate",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": { "default": { "content": { "*/*": {} }, "description": "default response" } },
        "tags": ["Internal COB"]
      }
    },
    "/v1/internal/cob/loan-reprocess/{loanId}": {
      "post": {
        "operationId": "loanReprocess",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": { "default": { "content": { "*/*": {} }, "description": "default response" } },
        "tags": ["Internal COB"]
      }
    },
    "/v1/internal/cob/partitions/{partitionSize}": {
      "get": {
        "operationId": "getCobPartitions",
        "parameters": [
          {
            "in": "path",
            "name": "partitionSize",
            "required": true,
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/COBPartition" }
                }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Internal COB"]
      }
    },
    "/v1/internal/configurations/name/{configName}/value/{configValue}": {
      "put": {
        "operationId": "updateInternalGlobalConfiguration",
        "parameters": [
          { "in": "path", "name": "configName", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "configValue",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": { "content": { "application/json": {} }, "description": "default response" }
        },
        "summary": "Update internal global configuration",
        "x-alternative-operation-id": "updateGlobalConfiguration"
      }
    },
    "/v1/internal/externalevents": {
      "delete": {
        "operationId": "deleteAllExternalEvents",
        "responses": {
          "default": { "content": { "application/json": {} }, "description": "default response" }
        }
      },
      "get": {
        "operationId": "getAllExternalEvents",
        "parameters": [
          { "in": "query", "name": "idempotencyKey", "schema": { "type": "string" } },
          { "in": "query", "name": "type", "schema": { "type": "string" } },
          { "in": "query", "name": "category", "schema": { "type": "string" } },
          {
            "in": "query",
            "name": "aggregateRootId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/ExternalEventResponse" }
                }
              }
            },
            "description": "default response"
          }
        }
      }
    },
    "/v1/internal/loan/maxTransactionDateOfActiveLoan": {
      "get": {
        "operationId": "getMaxTransactionDateOfActiveLoans",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string", "format": "date" } } },
            "description": "default response"
          }
        }
      }
    },
    "/v1/internal/loan/progressive/{loanId}/model": {
      "delete": {
        "description": "DO NOT USE THIS IN PRODUCTION!",
        "operationId": "deleteInternalProgressiveLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "type": "integer", "format": "int64" } }
            },
            "description": "default response"
          }
        },
        "summary": "Delete ProgressiveLoanInterestScheduleModel By Loan ID",
        "tags": ["Progressive Loan"]
      },
      "get": {
        "description": "DO NOT USE THIS IN PRODUCTION!",
        "operationId": "retrieveOneInternalProgressiveLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ProgressiveLoanInterestScheduleModel" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Fetch ProgressiveLoanInterestScheduleModel",
        "tags": ["Progressive Loan"],
        "x-alternative-operation-id": "fetchModel"
      },
      "post": {
        "description": "DO NOT USE THIS IN PRODUCTION!",
        "operationId": "updateInternalProgressiveLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ProgressiveLoanInterestScheduleModel" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update and Save ProgressiveLoanInterestScheduleModel",
        "tags": ["Progressive Loan"],
        "x-alternative-operation-id": "updateModel"
      }
    },
    "/v1/internal/loan/status/{statusId}": {
      "get": {
        "operationId": "getLoansByStatus",
        "parameters": [
          {
            "in": "path",
            "name": "statusId",
            "required": true,
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "type": "integer", "format": "int64" } }
              }
            },
            "description": "default response"
          }
        }
      }
    },
    "/v1/internal/loan/{loanId}/advanced-payment-allocation-rules": {
      "get": {
        "operationId": "getAdvancedPaymentAllocationRulesOfLoan",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/AdvancedPaymentData" }
                }
              }
            },
            "description": "default response"
          }
        }
      }
    },
    "/v1/internal/loan/{loanId}/audit": {
      "get": {
        "operationId": "getLoanAuditFields",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAuditFieldsData" }
              }
            },
            "description": "default response"
          }
        }
      }
    },
    "/v1/internal/loan/{loanId}/transaction/{transactionId}/audit": {
      "get": {
        "operationId": "getLoanTransactionAuditFields",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAuditFieldsData" }
              }
            },
            "description": "default response"
          }
        }
      }
    },
    "/v1/internal/loans/{loanId}/place-lock/{lockOwner}": {
      "post": {
        "operationId": "placeLockOnLoanAccount",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "path", "name": "lockOwner", "required": true, "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/LockRequest" } }
          }
        },
        "responses": {
          "default": { "content": { "application/json": {} }, "description": "default response" }
        },
        "tags": ["Loan Account Lock"]
      }
    },
    "/v1/internal/savingsaccounts/status/{statusId}": {
      "get": {
        "operationId": "getSavingsAccountsByStatus",
        "parameters": [
          {
            "in": "path",
            "name": "statusId",
            "required": true,
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "type": "integer", "format": "int64" } }
              }
            },
            "description": "default response"
          }
        }
      }
    },
    "/v1/internal/working-capital-loans/internal/lastCobRun": {
      "delete": {
        "operationId": "deleteLastCobRun",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "object", "additionalProperties": { "type": "object" } }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Working Capital Loan Internal COB Api"]
      },
      "post": {
        "operationId": "getLastCobRun",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "object", "additionalProperties": { "type": "object" } }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Working Capital Loan Internal COB Api"]
      }
    },
    "/v1/internal/working-capital-loans/{loanId}/activate": {
      "post": {
        "description": "Sets the WC loan status to ACTIVE, records a disbursement detail with the given date and\ninitializes the loan balance as a real disbursement would.\nAlso generates the initial delinquency range schedule period if a delinquency bucket is configured.\n\nDO NOT USE THIS IN PRODUCTION! Disbursement must go through the proper disbursement flow.",
        "operationId": "activateLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "Disbursement date (yyyy-MM-dd)",
            "in": "query",
            "name": "disbursementDate",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "OK" },
          "404": { "description": "Working Capital Loan not found" }
        },
        "summary": "Activate a Working Capital Loan (testing only)",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/internal/working-capital-loans/{loanId}/amortization-schedule": {
      "post": {
        "description": "Generates a projected amortization schedule from the provided parameters and saves it for the given Working Capital Loan.\n\nDO NOT USE THIS IN PRODUCTION! In the real flow, the schedule will be generated during loan approval/disbursement from the loan and product data.",
        "operationId": "generateAmortizationSchedule",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectedAmortizationScheduleGenerateRequest"
              }
            }
          }
        },
        "responses": {
          "200": { "description": "OK" },
          "404": { "description": "Working Capital Loan not found" }
        },
        "summary": "Generate and save Projected Amortization Schedule (testing)",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/internal/working-capital-loans/{loanId}/generate-next-delinquency-period": {
      "post": {
        "description": "Generates the next delinquency range schedule period if the business date has passed the current period's toDate.\n\nDO NOT USE THIS IN PRODUCTION! Period generation must go through COB.",
        "operationId": "generateNextDelinquencyPeriod",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "Business date (yyyy-MM-dd)",
            "in": "query",
            "name": "businessDate",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "OK" },
          "404": { "description": "Working Capital Loan not found" }
        },
        "summary": "Generate next delinquency range schedule period (testing only)",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/internal/working-capital-loans/{loanId}/place-lock/{lockOwner}": {
      "post": {
        "operationId": "placeLockOnWorkingCapitalLoanAccount",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "path", "name": "lockOwner", "required": true, "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/LockRequest" } }
          }
        },
        "responses": {
          "default": { "content": { "application/json": {} }, "description": "default response" }
        },
        "tags": ["Working Capital Loan Account Lock"]
      }
    },
    "/v1/interoperation/accounts/{accountId}": {
      "get": {
        "operationId": "getAccountDetails",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropAccountData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Query Interoperation Account details",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/accounts/{accountId}/identifiers": {
      "get": {
        "operationId": "getAccountIdentifiers",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropIdentifiersResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Query Interoperation secondary identifiers by Account Id",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/accounts/{accountId}/kyc": {
      "get": {
        "operationId": "getClientKyc",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropKycResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Query KYC by Account Id",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/accounts/{accountId}/transactions": {
      "get": {
        "operationId": "getAccountTransactions",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "debit",
            "in": "query",
            "name": "debit",
            "schema": { "type": "boolean", "default": true }
          },
          {
            "description": "credit",
            "in": "query",
            "name": "credit",
            "schema": { "type": "boolean", "default": false }
          },
          {
            "description": "fromBookingDateTime",
            "in": "query",
            "name": "fromBookingDateTime",
            "schema": { "type": "string" }
          },
          {
            "description": "toBookingDateTime",
            "in": "query",
            "name": "toBookingDateTime",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropTransactionsData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Query transactions by Account Id",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/health": {
      "get": {
        "operationId": "health",
        "responses": { "200": { "description": "OK" } },
        "summary": "Query Interoperation Health Request",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/parties/{idType}/{idValue}": {
      "delete": {
        "operationId": "deleteAccountIdentifier",
        "parameters": [
          {
            "description": "idType",
            "in": "path",
            "name": "idType",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "MSISDN",
                "EMAIL",
                "PERSONAL_ID",
                "BUSINESS",
                "DEVICE",
                "ACCOUNT_ID",
                "IBAN",
                "ALIAS",
                "BBAN"
              ]
            }
          },
          {
            "description": "idValue",
            "in": "path",
            "name": "idValue",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "*/*": { "schema": { "$ref": "#/components/schemas/InteropIdentifierRequestData" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropIdentifierAccountResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Allow Interoperation Identifier registration",
        "tags": ["Inter Operation"]
      },
      "get": {
        "operationId": "getAccountByIdentifier",
        "parameters": [
          {
            "description": "idType",
            "in": "path",
            "name": "idType",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "MSISDN",
                "EMAIL",
                "PERSONAL_ID",
                "BUSINESS",
                "DEVICE",
                "ACCOUNT_ID",
                "IBAN",
                "ALIAS",
                "BBAN"
              ]
            }
          },
          {
            "description": "idValue",
            "in": "path",
            "name": "idValue",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropIdentifierAccountResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Query Interoperation Account by secondary identifier",
        "tags": ["Inter Operation"]
      },
      "post": {
        "operationId": "registerAccountIdentifier",
        "parameters": [
          {
            "description": "idType",
            "in": "path",
            "name": "idType",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "MSISDN",
                "EMAIL",
                "PERSONAL_ID",
                "BUSINESS",
                "DEVICE",
                "ACCOUNT_ID",
                "IBAN",
                "ALIAS",
                "BBAN"
              ]
            }
          },
          {
            "description": "idValue",
            "in": "path",
            "name": "idValue",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InteropIdentifierRequestData" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropIdentifierAccountResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Interoperation Identifier registration",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/parties/{idType}/{idValue}/{subIdOrType}": {
      "delete": {
        "operationId": "deleteAccountIdentifier_1",
        "parameters": [
          {
            "description": "idType",
            "in": "path",
            "name": "idType",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "MSISDN",
                "EMAIL",
                "PERSONAL_ID",
                "BUSINESS",
                "DEVICE",
                "ACCOUNT_ID",
                "IBAN",
                "ALIAS",
                "BBAN"
              ]
            }
          },
          {
            "description": "idValue",
            "in": "path",
            "name": "idValue",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "subIdOrType",
            "in": "path",
            "name": "subIdOrType",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "*/*": { "schema": { "$ref": "#/components/schemas/InteropIdentifierRequestData" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropIdentifierAccountResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Allow Interoperation Identifier registration",
        "tags": ["Inter Operation"]
      },
      "get": {
        "operationId": "getAccountByIdentifier_1",
        "parameters": [
          {
            "description": "idType",
            "in": "path",
            "name": "idType",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "MSISDN",
                "EMAIL",
                "PERSONAL_ID",
                "BUSINESS",
                "DEVICE",
                "ACCOUNT_ID",
                "IBAN",
                "ALIAS",
                "BBAN"
              ]
            }
          },
          {
            "description": "idValue",
            "in": "path",
            "name": "idValue",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "subIdOrType",
            "in": "path",
            "name": "subIdOrType",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropIdentifierAccountResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Query Interoperation Account by secondary identifier",
        "tags": ["Inter Operation"]
      },
      "post": {
        "operationId": "registerAccountIdentifier_1",
        "parameters": [
          {
            "description": "idType",
            "in": "path",
            "name": "idType",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "MSISDN",
                "EMAIL",
                "PERSONAL_ID",
                "BUSINESS",
                "DEVICE",
                "ACCOUNT_ID",
                "IBAN",
                "ALIAS",
                "BBAN"
              ]
            }
          },
          {
            "description": "idValue",
            "in": "path",
            "name": "idValue",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "subIdOrType",
            "in": "path",
            "name": "subIdOrType",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InteropIdentifierRequestData" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropIdentifierAccountResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Interoperation Identifier registration",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/quotes": {
      "post": {
        "operationId": "createQuote",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InteropQuoteRequestData" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropQuoteResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Calculate Interoperation Quote",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/requests": {
      "post": {
        "operationId": "createTransactionRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InteropTransactionRequestData" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropTransactionRequestResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Allow Interoperation Transaction Request",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/transactions/{accountId}/disburse": {
      "post": {
        "operationId": "disburseLoan",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Disburse Loan by Account Id",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/transactions/{accountId}/loanrepayment": {
      "post": {
        "operationId": "loanRepayment",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoansLoanIdTransactionsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Loan Repayment by Account Id",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/transactions/{transactionCode}/quotes/{quoteCode}": {
      "get": {
        "operationId": "getQuote",
        "parameters": [
          {
            "description": "transactionCode",
            "in": "path",
            "name": "transactionCode",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "quoteCode",
            "in": "path",
            "name": "quoteCode",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropQuoteResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Query Interoperation Quote",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/transactions/{transactionCode}/requests/{requestCode}": {
      "get": {
        "operationId": "getTransactionRequest",
        "parameters": [
          {
            "description": "transactionCode",
            "in": "path",
            "name": "transactionCode",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "requestCode",
            "in": "path",
            "name": "requestCode",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropTransactionRequestResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Query Interoperation Transaction Request",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/transactions/{transactionCode}/transfers/{transferCode}": {
      "get": {
        "operationId": "getTransfer",
        "parameters": [
          {
            "description": "transactionCode",
            "in": "path",
            "name": "transactionCode",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "transferCode",
            "in": "path",
            "name": "transferCode",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropTransferResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Query Interoperation Transfer",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/interoperation/transfers": {
      "post": {
        "operationId": "performTransfer",
        "parameters": [
          {
            "description": "action",
            "in": "query",
            "name": "action",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InteropTransferRequestData" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/InteropTransferResponseData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Prepare Interoperation Transfer",
        "tags": ["Inter Operation"]
      }
    },
    "/v1/jobs": {
      "get": {
        "description": "Returns the list of jobs.\n\nExample Requests:\n\njobs",
        "operationId": "retrieveAllSchedulerJobs",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetJobsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Scheduler Jobs",
        "tags": ["SCHEDULER JOB"],
        "x-alternative-operation-id": "retrieveAll_8"
      }
    },
    "/v1/jobs/names": {
      "get": {
        "description": "Returns the configured Business Jobs",
        "operationId": "retrieveAllConfiguredBusinessJobs",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ConfiguredJobNamesDTO" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Business Jobs",
        "tags": ["Business Step Configuration"]
      }
    },
    "/v1/jobs/short-name/{shortName}": {
      "get": {
        "description": "Returns the details of a Job bu shortName.\n\nExample Requests:\n\njobs/short-name/SA_PINT",
        "operationId": "retrieveByShortName",
        "parameters": [
          {
            "description": "short-name",
            "in": "path",
            "name": "shortName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/GetJobsResponse" } }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Job",
        "tags": ["SCHEDULER JOB"]
      },
      "post": {
        "description": "Manually Execute Specific Job.",
        "operationId": "executeJobByShortName",
        "parameters": [
          {
            "description": "short-name",
            "in": "path",
            "name": "shortName",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/ExecuteJobRequest" } }
          }
        },
        "responses": {
          "200": { "description": "POST: jobs/short-name/SA_PINT?command=executeJob" }
        },
        "summary": "Run a Job",
        "tags": ["SCHEDULER JOB"]
      },
      "put": {
        "description": "Updates the details of a job.",
        "operationId": "updateJobDetailByShortName",
        "parameters": [
          {
            "description": "short-name",
            "in": "path",
            "name": "shortName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/PutJobsJobIDRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Job",
        "tags": ["SCHEDULER JOB"]
      }
    },
    "/v1/jobs/short-name/{shortName}/runhistory": {
      "get": {
        "description": "Example Requests:\n\njobs/short-name/SA_PINT/runhistory?offset=0&limit=200",
        "operationId": "retrieveHistoryByShortName",
        "parameters": [
          {
            "description": "short-name",
            "in": "path",
            "name": "shortName",
            "required": true,
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetJobsJobIDJobRunHistoryResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Job Run History",
        "tags": ["SCHEDULER JOB"]
      }
    },
    "/v1/jobs/{jobId}": {
      "get": {
        "description": "Returns the details of a Job.\n\nExample Requests:\n\njobs/5",
        "operationId": "retrieveOneSchedulerJob",
        "parameters": [
          {
            "description": "jobId",
            "in": "path",
            "name": "jobId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/GetJobsResponse" } }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Job",
        "tags": ["SCHEDULER JOB"],
        "x-alternative-operation-id": "retrieveOne_5"
      },
      "post": {
        "description": "Manually Execute Specific Job.",
        "operationId": "executeJob",
        "parameters": [
          {
            "description": "jobId",
            "in": "path",
            "name": "jobId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/ExecuteJobRequest" } }
          }
        },
        "responses": { "200": { "description": "POST: jobs/1?command=executeJob" } },
        "summary": "Run a Job",
        "tags": ["SCHEDULER JOB"]
      },
      "put": {
        "description": "Updates the details of a job.",
        "operationId": "updateJobDetail",
        "parameters": [
          {
            "description": "jobId",
            "in": "path",
            "name": "jobId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/PutJobsJobIDRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Job",
        "tags": ["SCHEDULER JOB"]
      }
    },
    "/v1/jobs/{jobId}/runhistory": {
      "get": {
        "description": "Example Requests:\n\njobs/5/runhistory?offset=0&limit=200",
        "operationId": "retrieveHistory",
        "parameters": [
          {
            "description": "jobId",
            "in": "path",
            "name": "jobId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetJobsJobIDJobRunHistoryResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Job Run History",
        "tags": ["SCHEDULER JOB"]
      }
    },
    "/v1/jobs/{jobName}/available-steps": {
      "get": {
        "description": "Returns the available Business Steps for a job",
        "operationId": "retrieveAllAvailableBusinessStep",
        "parameters": [
          {
            "description": "jobName",
            "in": "path",
            "name": "jobName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/JobBusinessStepDetail" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Business Step Configurations for a Job",
        "tags": ["Business Step Configuration"]
      }
    },
    "/v1/jobs/{jobName}/inline": {
      "post": {
        "description": "Starts an inline Job",
        "operationId": "executeInlineJob",
        "parameters": [
          {
            "description": "jobName",
            "in": "path",
            "name": "jobName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/InlineJobRequest" } }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/InlineJobResponse" } }
            },
            "description": "OK"
          },
          "400": { "description": "Request body item size validation error" }
        },
        "summary": "Starts an inline Job",
        "tags": ["Inline Job"]
      }
    },
    "/v1/jobs/{jobName}/steps": {
      "get": {
        "description": "Returns the configured Business Steps for a job",
        "operationId": "retrieveAllConfiguredBusinessStep",
        "parameters": [
          {
            "description": "jobName",
            "in": "path",
            "name": "jobName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/JobBusinessStepConfigData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Business Step Configurations for a Job",
        "tags": ["Business Step Configuration"]
      },
      "put": {
        "description": "Updates the Business steps execution order for a job",
        "operationId": "updateJobBusinessStepConfig",
        "parameters": [
          {
            "description": "jobName",
            "in": "path",
            "name": "jobName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/BusinessStepRequest" } }
          }
        },
        "responses": { "204": { "description": "NO_CONTENT" } },
        "summary": "List Business Step Configurations for a Job",
        "tags": ["Business Step Configuration"]
      }
    },
    "/v1/journalentries": {
      "get": {
        "description": "The list capability of journal entries can support pagination and sorting.\n\nExample Requests:\n\njournalentries\n\njournalentries?transactionId=PB37X8Y21EQUY4S\n\njournalentries?officeId=1&manualEntriesOnly=true&fromDate=1 July 2013&toDate=15 July 2013&dateFormat=dd MMMM yyyy&locale=en\n\njournalentries?fields=officeName,glAccountName,transactionDate\n\njournalentries?offset=10&limit=50\n\njournalentries?orderBy=transactionId&sortOrder=DESC\n\njournalentries?runningBalance=true\n\njournalentries?transactionDetails=true\n\njournalentries?loanId=12\n\njournalentries?savingsId=24",
        "operationId": "retrieveAllJournalEntries",
        "parameters": [
          {
            "description": "officeId",
            "in": "query",
            "name": "officeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "glAccountId",
            "in": "query",
            "name": "glAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "manualEntriesOnly",
            "in": "query",
            "name": "manualEntriesOnly",
            "schema": { "type": "boolean" }
          },
          {
            "description": "fromDate",
            "in": "query",
            "name": "fromDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "description": "toDate",
            "in": "query",
            "name": "toDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "description": "submittedOnDateFrom",
            "in": "query",
            "name": "submittedOnDateFrom",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "description": "submittedOnDateTo",
            "in": "query",
            "name": "submittedOnDateTo",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "description": "transactionId",
            "in": "query",
            "name": "transactionId",
            "schema": { "type": "string" }
          },
          {
            "description": "entityType",
            "in": "query",
            "name": "entityType",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "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": "locale",
            "in": "query",
            "name": "locale",
            "schema": { "type": "string" }
          },
          {
            "description": "dateFormat",
            "in": "query",
            "name": "dateFormat",
            "schema": { "type": "string" }
          },
          {
            "description": "loanId",
            "in": "query",
            "name": "loanId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "savingsId",
            "in": "query",
            "name": "savingsId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "runningBalance",
            "in": "query",
            "name": "runningBalance",
            "schema": { "type": "boolean" }
          },
          {
            "description": "transactionDetails",
            "in": "query",
            "name": "transactionDetails",
            "schema": { "type": "boolean" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetJournalEntriesTransactionIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Journal Entries",
        "tags": ["Journal Entries"],
        "x-alternative-operation-id": "retrieveAll_1"
      },
      "post": {
        "description": "Note: A Balanced (simple) Journal entry would have atleast one \"Debit\" and one \"Credit\" entry whose amounts are equal \nCompound Journal entries may have \"n\" debits and \"m\" credits where both \"m\" and \"n\" are greater than 0 and the net sum or all debits and credits are equal \n\n\nMandatory Fields\nofficeId, transactionDate\n\n\ncredits- glAccountId, amount, comments\n\n \ndebits-  glAccountId, amount, comments\n\n \nOptional Fields\npaymentTypeId, accountNumber, checkNumber, routingCode, receiptNumber, bankNumber",
        "operationId": "createGLJournalEntry",
        "parameters": [
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/JournalEntryCommand" } }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostJournalEntriesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create \"Balanced\" Journal Entries",
        "tags": ["Journal Entries"]
      }
    },
    "/v1/journalentries/downloadtemplate": {
      "get": {
        "description": "Returns an Excel template for bulk importing journal entries.",
        "operationId": "getJournalEntriesTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "summary": "Download journal entries template",
        "tags": ["Journal Entries"]
      }
    },
    "/v1/journalentries/openingbalance": {
      "get": {
        "description": "Returns the opening balance for a specific office and currency.",
        "operationId": "retrieveOpeningBalance",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "currencyCode", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve Opening Balance",
        "tags": ["Journal Entries"]
      }
    },
    "/v1/journalentries/provisioning": {
      "get": {
        "description": "Returns journal entries related to provisioning entries based on entry ID.",
        "operationId": "retrieveJournalEntries",
        "parameters": [
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "entryId", "schema": { "type": "integer", "format": "int64" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve Journal Entries for Provisioning",
        "tags": ["Journal Entries"]
      }
    },
    "/v1/journalentries/uploadtemplate": {
      "post": {
        "description": "Uploads a filled Excel template to create multiple journal entries in bulk.",
        "operationId": "postJournalEntriesTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload journal entries template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Upload journal entries template",
        "tags": ["Journal Entries"]
      }
    },
    "/v1/journalentries/{journalEntryId}": {
      "get": {
        "description": "Example Requests:\n\njournalentries/1\n\n\n\njournalentries/1?fields=officeName,glAccountId,entryType,amount\n\njournalentries/1?runningBalance=true\n\njournalentries/1?transactionDetails=true",
        "operationId": "retrieveJournalEntryById",
        "parameters": [
          {
            "description": "journalEntryId",
            "in": "path",
            "name": "journalEntryId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "runningBalance",
            "in": "query",
            "name": "runningBalance",
            "schema": { "type": "boolean" }
          },
          {
            "description": "transactionDetails",
            "in": "query",
            "name": "transactionDetails",
            "schema": { "type": "boolean" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/JournalEntryTransactionItem" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a single Entry",
        "tags": ["Journal Entries"]
      }
    },
    "/v1/journalentries/{transactionId}": {
      "post": {
        "description": "This API calculates the running balances for office. If office ID not provided this API calculates running balances for all offices. \nMandatory Fields\nofficeId",
        "operationId": "createReversalJournalEntry",
        "parameters": [
          {
            "description": "transactionId",
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostJournalEntriesTransactionIdRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostJournalEntriesTransactionIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Running balances for Journal Entries",
        "tags": ["Journal Entries"]
      }
    },
    "/v1/likelihood/{ppiName}": {
      "get": {
        "operationId": "retrieveAll_5",
        "parameters": [
          { "in": "path", "name": "ppiName", "required": true, "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Likelihood"],
        "x-alternative-operation-id": "retrieveAll_11"
      }
    },
    "/v1/likelihood/{ppiName}/{likelihoodId}": {
      "get": {
        "operationId": "retrieve_1",
        "parameters": [
          {
            "in": "path",
            "name": "likelihoodId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "path", "name": "ppiName", "required": true, "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Likelihood"],
        "x-alternative-operation-id": "retrieve"
      },
      "put": {
        "operationId": "update_2",
        "parameters": [
          {
            "in": "path",
            "name": "likelihoodId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "path", "name": "ppiName", "required": true, "schema": { "type": "string" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Likelihood"],
        "x-alternative-operation-id": "update_4"
      }
    },
    "/v1/loan-collateral-management/{collateralId}": {
      "get": {
        "description": "Get Loan Collateral Details",
        "operationId": "getLoanCollateral",
        "parameters": [
          {
            "description": "collateralId",
            "in": "path",
            "name": "collateralId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanCollateralResponseData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Get Loan Collateral Details",
        "tags": ["Loan Collateral Management"]
      }
    },
    "/v1/loan-collateral-management/{id}": {
      "delete": {
        "description": "Delete Loan Collateral",
        "operationId": "deleteLoanCollateral",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loan collateral id",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanCollateralDeleteResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete Loan Collateral",
        "tags": ["Loan Collateral Management"]
      }
    },
    "/v1/loan-originators": {
      "get": {
        "description": "Retrieves all loan originator records. Requires READ_LOAN_ORIGINATOR permission.",
        "operationId": "retrieveAllLoanOriginators",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetLoanOriginatorsResponse" }
                }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Insufficient permissions" }
        },
        "summary": "List all loan originators",
        "tags": ["Loan Originators"]
      },
      "post": {
        "description": "Creates a new loan originator record. Requires CREATE_LOAN_ORIGINATOR permission.",
        "operationId": "createLoanOriginator",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoanOriginatorsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoanOriginatorsResponse" }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Required parameter is missing or incorrect format" },
          "403": { "description": "Duplicate external ID or insufficient permissions" }
        },
        "summary": "Create a new loan originator",
        "tags": ["Loan Originators"]
      }
    },
    "/v1/loan-originators/external-id/{externalId}": {
      "delete": {
        "description": "Deletes a loan originator by its external ID. Requires DELETE_LOAN_ORIGINATOR permission.",
        "operationId": "deleteByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteLoanOriginatorsResponse" }
              }
            },
            "description": "OK"
          },
          "403": {
            "description": "Originator is mapped to loans and cannot be deleted, or insufficient permissions"
          },
          "404": { "description": "Originator not found" }
        },
        "summary": "Delete a loan originator by external ID",
        "tags": ["Loan Originators"]
      },
      "get": {
        "description": "Retrieves a loan originator by its external ID. Requires READ_LOAN_ORIGINATOR permission.",
        "operationId": "retrieveByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoanOriginatorsResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Insufficient permissions" },
          "404": { "description": "Originator not found" }
        },
        "summary": "Retrieve a loan originator by external ID",
        "tags": ["Loan Originators"]
      },
      "put": {
        "description": "Updates a loan originator by its external ID. Requires UPDATE_LOAN_ORIGINATOR permission.",
        "operationId": "updateByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutLoanOriginatorsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutLoanOriginatorsResponse" }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Incorrect format" },
          "403": { "description": "Insufficient permissions" },
          "404": { "description": "Originator not found" }
        },
        "summary": "Update a loan originator by external ID",
        "tags": ["Loan Originators"]
      }
    },
    "/v1/loan-originators/template": {
      "get": {
        "description": "Retrieves the Loan Originator template data",
        "operationId": "retrieveLoanOriginatorTemplate",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoanOriginatorTemplateResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Insufficient permissions" }
        },
        "summary": "Get loan originator template data",
        "tags": ["Loan Originators"]
      }
    },
    "/v1/loan-originators/{originatorId}": {
      "delete": {
        "description": "Deletes a loan originator by its internal ID. Requires DELETE_LOAN_ORIGINATOR permission.",
        "operationId": "deleteLoanOriginator",
        "parameters": [
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteLoanOriginatorsResponse" }
              }
            },
            "description": "OK"
          },
          "403": {
            "description": "Originator is mapped to loans and cannot be deleted, or insufficient permissions"
          },
          "404": { "description": "Originator not found" }
        },
        "summary": "Delete a loan originator by ID",
        "tags": ["Loan Originators"]
      },
      "get": {
        "description": "Retrieves a loan originator by its internal ID. Requires READ_LOAN_ORIGINATOR permission.",
        "operationId": "retrieveOneLoanOriginator",
        "parameters": [
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoanOriginatorsResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Insufficient permissions" },
          "404": { "description": "Originator not found" }
        },
        "summary": "Retrieve a loan originator by ID",
        "tags": ["Loan Originators"]
      },
      "put": {
        "description": "Updates a loan originator by its internal ID. Requires UPDATE_LOAN_ORIGINATOR permission.",
        "operationId": "updateLoanOriginator",
        "parameters": [
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutLoanOriginatorsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutLoanOriginatorsResponse" }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Incorrect format" },
          "403": { "description": "Insufficient permissions" },
          "404": { "description": "Originator not found" }
        },
        "summary": "Update a loan originator by ID",
        "tags": ["Loan Originators"]
      }
    },
    "/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"]
      },
      "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 MifosX Accounting Specs Draft 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"]
      }
    },
    "/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 Details"]
      }
    },
    "/v1/loanproducts/external-id/{externalProductId}": {
      "get": {
        "description": "Retrieves a Loan Product\n\nExample Requests:\n\nloanproducts/external-id/2075e308-d4a8-44d9-8203-f5a947b8c2f4\n\n\nloanproducts/external-id/2075e308-d4a8-44d9-8203-f5a947b8c2f4?template=true\n\n\nloanproducts/external-id/2075e308-d4a8-44d9-8203-f5a947b8c2f4?fields=name,description,numberOfRepayments",
        "operationId": "retrieveLoanProductDetailsByExternalId",
        "parameters": [
          {
            "description": "externalProductId",
            "in": "path",
            "name": "externalProductId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "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_1"
      },
      "put": {
        "description": "Updates a Loan Product",
        "operationId": "updateLoanProductByExternalId",
        "parameters": [
          {
            "description": "externalProductId",
            "in": "path",
            "name": "externalProductId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "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-alternative-operation-id": "updateLoanProduct_1"
      }
    },
    "/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"
      }
    },
    "/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"
      },
      "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"]
      }
    },
    "/v1/loanproducts/{productId}/productmix": {
      "delete": {
        "operationId": "deleteProductMix",
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ProductMixDeleteResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete Product Mix",
        "tags": ["Product Mix"]
      },
      "get": {
        "operationId": "retrieveTemplateProductMix",
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/ProductMixData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Product Mix Template",
        "tags": ["Product Mix"],
        "x-alternative-operation-id": "retrieveTemplate_12"
      },
      "post": {
        "operationId": "createProductMix",
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ProductMixCreateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ProductMixCreateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create Product Mix",
        "tags": ["Product Mix"]
      },
      "put": {
        "operationId": "updateProductMix",
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ProductMixUpdateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ProductMixUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update Product Mix",
        "tags": ["Product Mix"]
      }
    },
    "/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": ["Loans"],
        "x-alternative-operation-id": "retrieveAll_27"
      },
      "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": ["Loans"],
        "x-alternative-operation-id": "calculateLoanScheduleOrSubmitLoanApplication"
      }
    },
    "/v1/loans/at-date/external-id/{loanExternalId}": {
      "get": {
        "operationId": "retrieveLoanPointInTimeByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "date",
            "in": "query",
            "name": "date",
            "required": true,
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "description": "dateFormat",
            "in": "query",
            "name": "dateFormat",
            "schema": { "type": "string" }
          },
          {
            "description": "locale",
            "in": "query",
            "name": "locale",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanPointInTimeData" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["LoansPointInTime"]
      }
    },
    "/v1/loans/at-date/search": {
      "post": {
        "operationId": "retrieveLoansPointInTime",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/RetrieveLoansPointInTimeRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/LoanPointInTimeData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["LoansPointInTime"]
      }
    },
    "/v1/loans/at-date/search/external-id": {
      "post": {
        "operationId": "retrieveLoansPointInTimeByExternalIds",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RetrieveLoansPointInTimeExternalIdsRequest"
              }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/LoanPointInTimeData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["LoansPointInTime"]
      }
    },
    "/v1/loans/at-date/{loanId}": {
      "get": {
        "operationId": "retrieveLoanPointInTime",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "date",
            "in": "query",
            "name": "date",
            "required": true,
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "description": "dateFormat",
            "in": "query",
            "name": "dateFormat",
            "schema": { "type": "string" }
          },
          {
            "description": "locale",
            "in": "query",
            "name": "locale",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanPointInTimeData" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["LoansPointInTime"]
      }
    },
    "/v1/loans/catch-up": {
      "post": {
        "description": "Executes the Loan COB job on every day from the oldest Loan to the current COB business date",
        "operationId": "executeLoanCOBCatchUp",
        "responses": {
          "200": { "description": "All loans are up to date" },
          "202": { "description": "Catch Up has been started" },
          "400": { "description": "Catch Up is already running" }
        },
        "summary": "Executes Loan COB Catch Up",
        "tags": ["Loan COB Catch Up"]
      }
    },
    "/v1/loans/downloadtemplate": {
      "get": {
        "operationId": "getLoansTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "staffId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Loans"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}": {
      "delete": {
        "description": "Note: Only loans in \"Submitted and awaiting approval\" status can be deleted.",
        "operationId": "deleteLoanApplicationByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Loan Application",
        "tags": ["Loans"],
        "x-alternative-operation-id": "deleteLoanApplication_1"
      },
      "get": {
        "description": "Note: template=true parameter doesn't apply to this resource.Example Requests:\n\nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854\n\n\nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854?fields=id,principal,annualInterestRate\n\n\nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854?associations=all\n\nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854?associations=all&exclude=guarantors\n\n\nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854?fields=id,principal,annualInterestRate&associations=repaymentSchedule,transactions",
        "operationId": "retrieveOneLoanByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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": ["Loans"],
        "x-alternative-operation-id": "retrieveLoan_1"
      },
      "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": "handleCommandsLoanByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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": ["Loans"],
        "x-alternative-operation-id": "stateTransitions_1"
      },
      "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": "updateLoanApplicationByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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": ["Loans"],
        "x-alternative-operation-id": "modifyLoanApplication_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/approved-amount": {
      "get": {
        "operationId": "retrieveApprovedAmountHistoryLoanByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/LoanApprovedAmountHistoryData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Collects and returns the approved amount modification history for a given loan",
        "tags": ["Loans"],
        "x-alternative-operation-id": "getLoanApprovedAmountHistory_1"
      },
      "put": {
        "operationId": "updateApprovedAmountLoanByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutLoansApprovedAmountRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutLoansApprovedAmountResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modifies the approved amount of the loan",
        "tags": ["Loans"],
        "x-alternative-operation-id": "modifyLoanApprovedAmount_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/available-disbursement-amount": {
      "put": {
        "description": "Modifies the available disbursement amount of the loan, this indirectly modifies the approved amount that can be disbursed on the loan",
        "operationId": "updateAvailableDisbursementAmountLoanByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutLoansAvailableDisbursementAmountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutLoansAvailableDisbursementAmountResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modifies the available disbursement amount of the loan",
        "tags": ["Loans"],
        "x-alternative-operation-id": "modifyLoanAvailableDisbursementAmount_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/buydown-fees": {
      "get": {
        "description": "Returns a list of all Buy Down fee entries with amortization details for the loan specified by external ID.",
        "operationId": "retrieveLoanBuyDownFeeAmortizationDetailsByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/BuyDownFeeAmortizationDetails" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Get the amortization details of Buy Down fees for a loan by external ID",
        "tags": ["Loan Buy Down Fees"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}/buydown-fees/external-id/{loanTransactionExternalId}": {
      "get": {
        "description": "Retrieves BuyDown Fees allocation data according to the Loan external ID and Loan Transaction external IDExample Requests:\n\n/loans/external-id/1/buydown-fees/1\n\n\n/loans/external-id/1/buydown-fees/1?fields=baseLoanTransaction,unrecognizedAmount",
        "operationId": "getBuyDownFeesAllocationDataByExternalIds",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanTransactionExternalId",
            "in": "path",
            "name": "loanTransactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAmortizationAllocationResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a BuyDown Fees allocation data",
        "tags": ["Loan Buy Down Fees"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}/buydown-fees/{loanTransactionId}": {
      "get": {
        "description": "Retrieves BuyDown Fees allocation data according to the Loan external ID and Loan Transaction IDExample Requests:\n\n/loans/external-id/1/buydown-fees/1\n\n\n/loans/external-id/1/buydown-fees/1?fields=baseLoanTransaction,unrecognizedAmount",
        "operationId": "getBuyDownFeesAllocationDataByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanTransactionId",
            "in": "path",
            "name": "loanTransactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAmortizationAllocationResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a BuyDown Fees allocation data",
        "tags": ["Loan Buy Down Fees"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}/capitalized-incomes": {
      "get": {
        "operationId": "fetchCapitalizedIncomeDetailsByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/CapitalizedIncomeDetails" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Get the amortization details of Capitalized Income for a loan by external ID",
        "tags": ["Loan Capitalized Income"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}/capitalized-incomes/external-id/{loanTransactionExternalId}": {
      "get": {
        "description": "Retrieves capitalized income allocation data according to the Loan external ID and Loan Transaction external IDExample Requests:\n\n/loans/external-id/1/capitalized-incomes/1\n\n\n/loans/external-id/1/capitalized-incomes/1?fields=baseLoanTransaction,unrecognizedAmount",
        "operationId": "getCapitalizedIncomeAllocationDataByExternalIds",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanTransactionExternalId",
            "in": "path",
            "name": "loanTransactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAmortizationAllocationResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a capitalized income allocation data",
        "tags": ["Loan Capitalized Income"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}/capitalized-incomes/{loanTransactionId}": {
      "get": {
        "description": "Retrieves capitalized income allocation data according to the Loan external ID and Loan Transaction IDExample Requests:\n\n/loans/external-id/1/capitalized-incomes/1\n\n\n/loans/external-id/1/capitalized-incomes/1?fields=baseLoanTransaction,unrecognizedAmount",
        "operationId": "getCapitalizedIncomeAllocationDataByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanTransactionId",
            "in": "path",
            "name": "loanTransactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAmortizationAllocationResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a capitalized income allocation data",
        "tags": ["Loan Capitalized Income"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}/charges": {
      "get": {
        "description": "It lists all the Loan Charges specific to a Loan \n\nExample Requests:\n\nloans/1/charges\n\n\nloans/1/charges?fields=name,amountOrPercentage",
        "operationId": "retrieveAllLoanChargesByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetLoansLoanIdChargesChargeIdResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Loan Charges",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "retrieveAllLoanCharges_1"
      },
      "post": {
        "description": "Creates a Loan Charge | Pay a Loan Charge",
        "operationId": "executeLoanChargeByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Loan Charge (no command provided) or Pay a charge (command=pay)",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "executeLoanCharge_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/charges/external-id/{loanChargeExternalId}": {
      "delete": {
        "description": "Note: Currently, A Loan Charge may only be removed from Loans that are not yet approved.",
        "operationId": "deleteLoanChargeByLoanAndChargeExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteLoansLoanIdChargesChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "deleteLoanCharge_3"
      },
      "get": {
        "description": "Retrieves Loan Charge according to the Loan External ID and Loan Charge External IDExample Requests:\n\n/loans/1/charges/1\n\n\n/loans/1/charges/1?fields=name,amountOrPercentage",
        "operationId": "retrieveOneLoanChargeByLoanAndChargeExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "retrieveLoanCharge_3"
      },
      "post": {
        "description": "Loan Charge will be paid if the loan is linked with a savings account | Waive Loan Charge | Add Charge Adjustment",
        "operationId": "executeLoanChargeByLoanAndChargeExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesChargeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Pay / Waive / Adjustment for Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "executeLoanCharge_5"
      },
      "put": {
        "description": "Currently Loan Charges may be updated only if the Loan is not yet approved",
        "operationId": "updateLoanChargeByLoanAndChargeExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutLoansLoanIdChargesChargeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "updateLoanCharge_3"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/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\nloans/1/charges/template\n\n",
        "operationId": "retrieveTemplateLoanChargeByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoansLoanIdChargesTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Loan Charges Template",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "retrieveTemplate_9"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/charges/{loanChargeId}": {
      "delete": {
        "description": "Note: Currently, A Loan Charge may only be removed from Loans that are not yet approved.",
        "operationId": "deleteLoanChargeByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteLoansLoanIdChargesChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "deleteLoanCharge_2"
      },
      "get": {
        "description": "Retrieves Loan Charge according to the Loan external ID and Loan Charge IDExample Requests:\n\n/loans/1/charges/1\n\n\n/loans/1/charges/1?fields=name,amountOrPercentage",
        "operationId": "retrieveOneLoanChargeByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "retrieveLoanCharge_2"
      },
      "post": {
        "description": "Loan Charge will be paid if the loan is linked with a savings account | Waive Loan Charge | Add Charge Adjustment",
        "operationId": "executeLoanChargeByLoanExternalIdOnExistingCharge",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesChargeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Pay / Waive / Adjustment for Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "executeLoanCharge_4"
      },
      "put": {
        "description": "Currently Loan Charges may be updated only if the Loan is not yet approved",
        "operationId": "updateLoanChargeByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutLoansLoanIdChargesChargeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "updateLoanCharge_2"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/deferredincome": {
      "get": {
        "deprecated": true,
        "operationId": "fetchLoanCapitalizedIncomeDataByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanCapitalizedIncomeData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Get the amortization details of Capitalized Income for a loan by external ID",
        "tags": ["Loan Capitalized Income"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}/delinquency-actions": {
      "get": {
        "operationId": "retrieveDelinquencyActionsLoanByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetDelinquencyActionsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve delinquency actions related to the loan",
        "tags": ["Loans"],
        "x-alternative-operation-id": "getLoanDelinquencyActions_1"
      },
      "post": {
        "operationId": "createDelinquencyActionLoanByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoansDelinquencyActionRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansDelinquencyActionResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Adds a new delinquency action for a loan",
        "tags": ["Loans"],
        "x-alternative-operation-id": "createLoanDelinquencyAction_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/delinquencytags": {
      "get": {
        "operationId": "retrieveDelinquencyTagHistoryLoanByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetDelinquencyTagHistoryResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve the Loan Delinquency Tag history using the Loan Id",
        "tags": ["Loans"],
        "x-alternative-operation-id": "getDelinquencyTagHistory_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/interest-pauses": {
      "get": {
        "description": "Fetches a list of all active interest pause periods for a specific loan using the external loan ID.",
        "operationId": "retrieveAllLoanInterestPausesByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/InterestPauseResponseDto" }
                }
              }
            },
            "description": "List of interest pause periods"
          }
        },
        "summary": "Retrieve all interest pause periods for a loan using external ID",
        "tags": ["Loan Interest Pause"],
        "x-alternative-operation-id": "retrieveInterestPausesByExternalId"
      },
      "post": {
        "description": "Allows users to define a period during which no interest will be accrued for a specific loan using the external loan ID.",
        "operationId": "createLoanInterestPauseByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InterestPauseRequestDto" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "Command successfully processed"
          }
        },
        "summary": "Create a new interest pause for a loan using external ID",
        "tags": ["Loan Interest Pause"],
        "x-alternative-operation-id": "createInterestPauseByExternalId"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/interest-pauses/{variationId}": {
      "delete": {
        "description": "Deletes a specific interest pause period by its variation ID.",
        "operationId": "deleteLoanInterestPauseByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "variationId",
            "in": "path",
            "name": "variationId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": { "204": { "description": "No Content" } },
        "summary": "Delete an interest pause period by external id",
        "tags": ["Loan Interest Pause"],
        "x-alternative-operation-id": "deleteInterestPauseByExternalId"
      },
      "put": {
        "description": "Updates a specific interest pause period by its variation ID.",
        "operationId": "updateLoanInterestPauseByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "variationId",
            "in": "path",
            "name": "variationId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InterestPauseRequestDto" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "Command successfully processed"
          }
        },
        "summary": "Update an interest pause period by external id",
        "tags": ["Loan Interest Pause"],
        "x-alternative-operation-id": "updateInterestPauseByExternalId"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/originators": {
      "get": {
        "description": "Retrieves all originators attached to a specific loan using loan external ID. Requires READ_LOAN permission.",
        "operationId": "retrieveOriginatorsByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorsResponse" }
              }
            },
            "description": "OK - Returns wrapped list of originators (may be empty)"
          },
          "403": { "description": "Insufficient permissions" },
          "404": { "description": "Loan not found" }
        },
        "summary": "Retrieve originators for a loan by loan external ID",
        "tags": ["Loan Originators"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}/originators/external-id/{originatorExternalId}": {
      "delete": {
        "operationId": "detachOriginatorFromLoanByExternalIds",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "originatorExternalId",
            "in": "path",
            "name": "originatorExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Loan not in correct status" },
          "404": { "description": "Loan, originator, or mapping not found" }
        },
        "summary": "Detach originator from loan by external IDs",
        "tags": ["Loan Originators"]
      },
      "post": {
        "operationId": "attachOriginatorToLoanByExternalIds",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "originatorExternalId",
            "in": "path",
            "name": "originatorExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": {
            "description": "Loan not in correct status, originator not ACTIVE, duplicate mapping"
          },
          "404": { "description": "Loan or originator not found" }
        },
        "summary": "Attach originator to loan by external IDs",
        "tags": ["Loan Originators"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}/originators/{originatorId}": {
      "delete": {
        "operationId": "detachOriginatorFromLoanByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Loan not in correct status" },
          "404": { "description": "Loan, originator, or mapping not found" }
        },
        "summary": "Detach originator from loan by loan external ID and originator ID",
        "tags": ["Loan Originators"]
      },
      "post": {
        "operationId": "attachOriginatorToLoanByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": {
            "description": "Loan not in correct status, originator not ACTIVE, duplicate mapping"
          },
          "404": { "description": "Loan or originator not found" }
        },
        "summary": "Attach originator to loan by loan external ID and originator ID",
        "tags": ["Loan Originators"]
      }
    },
    "/v1/loans/external-id/{loanExternalId}/template": {
      "get": {
        "operationId": "retrieveApprovalTemplateByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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": ["Loans"],
        "x-alternative-operation-id": "retrieveApprovalTemplate_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/transactions": {
      "get": {
        "description": "Retrieves transactions of a loan",
        "operationId": "retrieveAllLoanTransactionsByExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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": "retrieveTransactionsByExternalLoanId"
      },
      "post": {
        "description": "This API covers the major loan transaction functionality\n\nExample Requests:\n\nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=repayment | Make a Repayment | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=merchantIssuedRefund | Merchant Issued Refund | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=payoutRefund | Payout Refund | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=goodwillCredit | Goodwil Credit | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=chargeRefund | Charge Refund | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=waiveinterest | Waive Interest | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=writeoff | Write-off Loan | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=close-rescheduled | Close Rescheduled Loan | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=close | Close Loan | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=undowriteoff | Undo Loan Write-off | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=recoverypayment | Make Recovery Payment | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=refundByCash | Make a Refund of an Active Loan by Cash | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=foreclosure | Foreclosure of an Active Loan | \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=creditBalanceRefund | Credit Balance Refund |  \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=charge-off | Charge-off Loan |  \nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions?command=downPayment | Down Payment |  \n",
        "operationId": "handleCommandsLoanTransactionByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/transactions/external-id/{externalTransactionId}": {
      "get": {
        "description": "Retrieves a Transaction Details\n\nExample Request:\n\nloans/external-id/7dd80a7c-ycba-a446-t378-91eb6f53e854/transactions/external-id/5dd80a7c-ccba-4446-b378-01eb6f53e871",
        "operationId": "retrieveOneLoanTransactionByLoanExternalIdAndTransactionExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "externalTransactionId",
            "in": "path",
            "name": "externalTransactionId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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": "retrieveTransactionByLoanExternalIdAndTransactionExternalId"
      },
      "post": {
        "description": "Note: there is no need to specify command={transactionType} parameter.\n\nMandatory Fields: transactionDate, transactionAmount",
        "operationId": "adjustLoanTransactionByLoanAndTransactionExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "externalTransactionId",
            "in": "path",
            "name": "externalTransactionId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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-alternative-operation-id": "adjustLoanTransaction_3"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/transactions/external-id/{transactionExternalId}": {
      "put": {
        "description": "Undo a Waive Charge Transaction",
        "operationId": "undoWaiveChargeLoanTransactionByLoanAndTransactionExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "transactionExternalId",
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "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_3"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/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": "previewReAgeLoanScheduleByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/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": "previewReAmortizeLoanScheduleByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/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": "retrieveTemplateLoanTransactionByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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_1"
      }
    },
    "/v1/loans/external-id/{loanExternalId}/transactions/{transactionId}": {
      "get": {
        "description": "Retrieves a Transaction Details\n\nExample Request:\n\nloans/5/transactions/3",
        "operationId": "retrieveOneLoanTransactionByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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": "retrieveTransactionByLoanExternalIdAndTransactionId"
      },
      "post": {
        "description": "Note: there is no need to specify command={transactionType} parameter.\n\nMandatory Fields: transactionDate, transactionAmount",
        "operationId": "adjustLoanTransactionByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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-alternative-operation-id": "adjustLoanTransaction_2"
      },
      "put": {
        "description": "Undo a Waive Charge Transaction",
        "operationId": "undoWaiveChargeLoanTransactionByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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_2"
      }
    },
    "/v1/loans/glimAccount/{glimId}": {
      "get": {
        "operationId": "getGlimRepaymentTemplate",
        "parameters": [
          {
            "in": "path",
            "name": "glimId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Loans"]
      },
      "post": {
        "description": "Approve GLIM Application:\nMandatory Fields: approvedOnDate\nOptional Fields: approvedLoanAmount and expectedDisbursementDate\nApproves the GLIM application\n\nUndo GLIM Application Approval:\nUndoes the GLIM Application Approval\n\nReject GLIM Application:\nMandatory Fields: rejectedOnDate\nAllows you to reject the GLIM 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\n",
        "operationId": "handleCommandsGlimLoan",
        "parameters": [
          {
            "in": "path",
            "name": "glimId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "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 GLIM Application | Undo GLIM Application Approval | Reject GLIM Application | Disburse Loan Disburse Loan To Savings Account | Undo Loan Disbursal",
        "tags": ["Loans"],
        "x-alternative-operation-id": "glimStateTransitions"
      }
    },
    "/v1/loans/is-catch-up-running": {
      "get": {
        "description": "Retrieves whether Loan COB catch up is running, and the current execution date if it is running.",
        "operationId": "isCatchUpRunning",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/IsCatchUpRunningDTO" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieves whether Loan COB catch up is running",
        "tags": ["Loan COB Catch Up"]
      }
    },
    "/v1/loans/loanreassignment": {
      "post": {
        "operationId": "loanReassignment",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Bulk Loans"]
      }
    },
    "/v1/loans/loanreassignment/template": {
      "get": {
        "operationId": "loanReassignmentTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          {
            "in": "query",
            "name": "fromLoanOfficerId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Bulk Loans"]
      }
    },
    "/v1/loans/locked": {
      "get": {
        "description": "Returns the locked loan IDs",
        "operationId": "retrieveLockedAccounts",
        "parameters": [
          { "in": "query", "name": "page", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAccountLockResponseDTO" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List locked loan accounts",
        "tags": ["Loan Account Lock"]
      }
    },
    "/v1/loans/oldest-cob-closed": {
      "get": {
        "description": "Retrieves the COB business date and the oldest COB processed loan",
        "operationId": "getOldestCOBProcessedLoan",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/OldestCOBProcessedLoanDTO" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieves the oldest COB processed loan",
        "tags": ["Loan COB Catch Up"]
      }
    },
    "/v1/loans/repayments/downloadtemplate": {
      "get": {
        "operationId": "getLoanRepaymentTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } },
          { "in": "query", "name": "includeLookups", "schema": { "type": "boolean" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Loans"]
      }
    },
    "/v1/loans/repayments/uploadtemplate": {
      "post": {
        "operationId": "postLoanRepaymentTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload Loan repayments template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Loans"]
      }
    },
    "/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": ["Loans"],
        "x-alternative-operation-id": "template_10"
      }
    },
    "/v1/loans/uploadtemplate": {
      "post": {
        "operationId": "postLoanTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload Loan template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Loans"]
      }
    },
    "/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": ["Loans"]
      },
      "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": ["Loans"],
        "x-alternative-operation-id": "retrieveLoan"
      },
      "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": ["Loans"],
        "x-alternative-operation-id": "stateTransitions"
      },
      "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": ["Loans"],
        "x-alternative-operation-id": "modifyLoanApplication"
      }
    },
    "/v1/loans/{loanId}/approved-amount": {
      "get": {
        "operationId": "retrieveApprovedAmountHistoryLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/LoanApprovedAmountHistoryData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Collects and returns the approved amount modification history for a given loan",
        "tags": ["Loans"],
        "x-alternative-operation-id": "getLoanApprovedAmountHistory"
      },
      "put": {
        "operationId": "updateApprovedAmountLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutLoansApprovedAmountRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutLoansApprovedAmountResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modifies the approved amount of the loan",
        "tags": ["Loans"],
        "x-alternative-operation-id": "modifyLoanApprovedAmount"
      }
    },
    "/v1/loans/{loanId}/available-disbursement-amount": {
      "put": {
        "description": "Modifies the available disbursement amount of the loan, this indirectly modifies the approved amount that can be disbursed on the loan",
        "operationId": "updateAvailableDisbursementAmountLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutLoansAvailableDisbursementAmountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutLoansAvailableDisbursementAmountResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modifies the available disbursement amount of the loan",
        "tags": ["Loans"],
        "x-alternative-operation-id": "modifyLoanAvailableDisbursementAmount"
      }
    },
    "/v1/loans/{loanId}/buydown-fees": {
      "get": {
        "description": "Returns a list of all Buy Down fee entries with amortization details for the specified loan.",
        "operationId": "retrieveLoanBuyDownFeeAmortizationDetails",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/BuyDownFeeAmortizationDetails" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Get the amortization details of Buy Down fees for a loan",
        "tags": ["Loan Buy Down Fees"]
      }
    },
    "/v1/loans/{loanId}/buydown-fees/external-id/{loanTransactionExternalId}": {
      "get": {
        "description": "Retrieves BuyDown Fees allocation data according to the Loan ID and Loan Transaction external IDExample Requests:\n\n/loans/1/buydown-fees/external-id/1\n\n\n/loans/1/buydown-fees/external-id/1?fields=baseLoanTransaction,unrecognizedAmount",
        "operationId": "getBuyDownFeesAllocationDataByTransactionExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanTransactionExternalId",
            "in": "path",
            "name": "loanTransactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAmortizationAllocationResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a BuyDown Fees allocation data",
        "tags": ["Loan Buy Down Fees"]
      }
    },
    "/v1/loans/{loanId}/buydown-fees/{loanTransactionId}": {
      "get": {
        "description": "Retrieves BuyDown Fees allocation data according to the Loan ID and Loan Transaction IDExample Requests:\n\n/loans/1/buydown-fees/1\n\n\n/loans/1/buydown-fees/1?fields=baseLoanTransaction,unrecognizedAmount",
        "operationId": "retrieveBuyDownFeesAllocationData",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanTransactionId",
            "in": "path",
            "name": "loanTransactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAmortizationAllocationResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a BuyDown Fees allocation data",
        "tags": ["Loan Buy Down Fees"]
      }
    },
    "/v1/loans/{loanId}/capitalized-incomes": {
      "get": {
        "operationId": "fetchCapitalizedIncomeDetails",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/CapitalizedIncomeDetails" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Fetch the Capitalized Income related informations",
        "tags": ["Loan Capitalized Income"]
      }
    },
    "/v1/loans/{loanId}/capitalized-incomes/external-id/{loanTransactionExternalId}": {
      "get": {
        "description": "Retrieves capitalized income allocation data according to the Loan ID and Loan Transaction external IDExample Requests:\n\n/loans/1/capitalized-incomes/external-id/1\n\n\n/loans/1/capitalized-incomes/external-id/1?fields=baseLoanTransaction,unrecognizedAmount",
        "operationId": "getCapitalizedIncomeAllocationDataByTransactionExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanTransactionExternalId",
            "in": "path",
            "name": "loanTransactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAmortizationAllocationResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a capitalized income allocation data",
        "tags": ["Loan Capitalized Income"]
      }
    },
    "/v1/loans/{loanId}/capitalized-incomes/{loanTransactionId}": {
      "get": {
        "description": "Retrieves capitalized income allocation data according to the Loan ID and Loan Transaction IDExample Requests:\n\n/loans/1/capitalized-incomes/1\n\n\n/loans/1/capitalized-incomes/1?fields=baseLoanTransaction,unrecognizedAmount",
        "operationId": "retrieveCapitalizedIncomeAllocationData",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanTransactionId",
            "in": "path",
            "name": "loanTransactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanAmortizationAllocationResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a capitalized income allocation data",
        "tags": ["Loan Capitalized Income"]
      }
    },
    "/v1/loans/{loanId}/charges": {
      "get": {
        "description": "It lists all the Loan Charges specific to a Loan \n\nExample Requests:\n\nloans/1/charges\n\n\nloans/1/charges?fields=name,amountOrPercentage",
        "operationId": "retrieveAllLoanCharges",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetLoansLoanIdChargesChargeIdResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Loan Charges",
        "tags": ["Loan Charges"]
      },
      "post": {
        "description": "Creates a Loan Charge | Pay a Loan Charge",
        "operationId": "createOrPayLoanCharge",
        "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/PostLoansLoanIdChargesRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Loan Charge (no command provided) or Pay a charge (command=pay)",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "executeLoanCharge"
      }
    },
    "/v1/loans/{loanId}/charges/external-id/{loanChargeExternalId}": {
      "delete": {
        "description": "Note: Currently, A Loan Charge may only be removed from Loans that are not yet approved.",
        "operationId": "deleteLoanChargeByChargeExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteLoansLoanIdChargesChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "deleteLoanCharge_1"
      },
      "get": {
        "description": "Retrieves Loan Charge according to the Loan ID and Loan Charge External IDExample Requests:\n\n/loans/1/charges/1\n\n\n/loans/1/charges/external-id/1?fields=name,amountOrPercentage",
        "operationId": "retrieveOneLoanChargeByChargeExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "retrieveLoanCharge_1"
      },
      "post": {
        "description": "Loan Charge will be paid if the loan is linked with a savings account | Waive Loan Charge | Add Charge Adjustment",
        "operationId": "executeLoanChargeByChargeExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesChargeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Pay / Waive / Adjustment for Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "executeLoanCharge_3"
      },
      "put": {
        "description": "Currently Loan Charges may be updated only if the Loan is not yet approved",
        "operationId": "updateLoanChargeByChargeExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutLoansLoanIdChargesChargeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "updateLoanCharge_1"
      }
    },
    "/v1/loans/{loanId}/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\nloans/1/charges/template\n\n",
        "operationId": "retrieveTemplateLoanCharge",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoansLoanIdChargesTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Loan Charges Template",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "retrieveTemplate_8"
      }
    },
    "/v1/loans/{loanId}/charges/{loanChargeId}": {
      "delete": {
        "description": "Note: Currently, A Loan Charge may only be removed from Loans that are not yet approved.",
        "operationId": "deleteLoanCharge",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteLoansLoanIdChargesChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Loan Charge",
        "tags": ["Loan Charges"]
      },
      "get": {
        "description": "Retrieves Loan Charge according to the Loan ID and Loan Charge IDExample Requests:\n\n/loans/1/charges/1\n\n\n/loans/1/charges/1?fields=name,amountOrPercentage",
        "operationId": "retrieveOneLoanCharge",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "retrieveLoanCharge"
      },
      "post": {
        "description": "Loan Charge will be paid if the loan is linked with a savings account | Waive Loan Charge | Add Charge Adjustment",
        "operationId": "executeLoanChargeOnExistingCharge",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesChargeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Pay / Waive / Adjustment for Loan Charge",
        "tags": ["Loan Charges"],
        "x-alternative-operation-id": "executeLoanCharge_2"
      },
      "put": {
        "description": "Currently Loan Charges may be updated only if the Loan is not yet approved",
        "operationId": "updateLoanCharge",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutLoansLoanIdChargesChargeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutLoansLoanIdChargesChargeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Loan Charge",
        "tags": ["Loan Charges"]
      }
    },
    "/v1/loans/{loanId}/collaterals": {
      "get": {
        "description": "Example Requests:\n\nloans/1/collaterals\n\n\nloans/1/collaterals?fields=value,description",
        "operationId": "retrieveCollateralDetails",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/CollateralData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Loan Collaterals",
        "tags": ["Loan Collateral"]
      },
      "post": {
        "description": "Note: Currently, Collaterals may be added only before a Loan is approved",
        "operationId": "createCollateral",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/LoansLoanIdCollateralsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansLoanIdCollateralsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Collateral",
        "tags": ["Loan Collateral"]
      }
    },
    "/v1/loans/{loanId}/collaterals/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\nExample Request:\n\nloans/1/collaterals/template",
        "operationId": "newCollateralTemplate",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/CollateralData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Collateral Details Template",
        "tags": ["Loan Collateral"]
      }
    },
    "/v1/loans/{loanId}/collaterals/{collateralId}": {
      "delete": {
        "description": "Note: A collateral can only be removed from Loans that are not yet approved.",
        "operationId": "deleteCollateral",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "collateralId",
            "in": "path",
            "name": "collateralId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteLoansLoanIdCollateralsCollateralIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Remove a Collateral",
        "tags": ["Loan Collateral"]
      },
      "get": {
        "description": "Example Requests:\n\n/loans/1/collaterals/1\n\n\n/loans/1/collaterals/1?fields=description,description",
        "operationId": "retrieveCollateralDetails_1",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "collateralId",
            "in": "path",
            "name": "collateralId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoansLoanIdCollateralsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Collateral",
        "tags": ["Loan Collateral"]
      },
      "put": {
        "operationId": "updateCollateral",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "collateralId",
            "in": "path",
            "name": "collateralId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoansLoandIdCollateralsCollateralIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutLoansLoanIdCollateralsCollateralIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Collateral",
        "tags": ["Loan Collateral"]
      }
    },
    "/v1/loans/{loanId}/deferredincome": {
      "get": {
        "deprecated": true,
        "operationId": "fetchLoanCapitalizedIncomeData",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanCapitalizedIncomeData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Fetch the Capitalized Income related informations",
        "tags": ["Loan Capitalized Income"]
      }
    },
    "/v1/loans/{loanId}/delinquency-actions": {
      "get": {
        "operationId": "retrieveDelinquencyActionsLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetDelinquencyActionsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve delinquency actions related to the loan",
        "tags": ["Loans"],
        "x-alternative-operation-id": "getLoanDelinquencyActions"
      },
      "post": {
        "operationId": "createDelinquencyActionLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoansDelinquencyActionRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansDelinquencyActionResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Adds a new delinquency action for a loan",
        "tags": ["Loans"],
        "x-alternative-operation-id": "createLoanDelinquencyAction"
      }
    },
    "/v1/loans/{loanId}/delinquencytags": {
      "get": {
        "operationId": "retrieveDelinquencyTagHistoryLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetDelinquencyTagHistoryResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve the Loan Delinquency Tag history using the Loan Id",
        "tags": ["Loans"],
        "x-alternative-operation-id": "getDelinquencyTagHistory"
      }
    },
    "/v1/loans/{loanId}/disbursements/editDisbursements": {
      "put": {
        "operationId": "addAndDeleteDisbursementDetail",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostAddAndDeleteDisbursementDetailRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Loan Disbursement Details"]
      }
    },
    "/v1/loans/{loanId}/disbursements/{disbursementId}": {
      "get": {
        "operationId": "retriveDetail",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "disbursementId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Loan Disbursement Details"]
      },
      "put": {
        "operationId": "updateDisbursementDate",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "disbursementId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutLoansLoanIdDisbursementsDisbursementIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Loan Disbursement Details"]
      }
    },
    "/v1/loans/{loanId}/guarantors": {
      "get": {
        "operationId": "retrieveGuarantorDetails",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GuarantorData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Guarantors"]
      },
      "post": {
        "operationId": "createGuarantor",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/GuarantorsRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Guarantors"]
      }
    },
    "/v1/loans/{loanId}/guarantors/accounts/template": {
      "get": {
        "operationId": "accountsTemplate",
        "parameters": [
          { "in": "query", "name": "clientId", "schema": { "type": "integer", "format": "int64" } },
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/GuarantorData" } }
            },
            "description": "default response"
          }
        },
        "tags": ["Guarantors"]
      }
    },
    "/v1/loans/{loanId}/guarantors/downloadtemplate": {
      "get": {
        "operationId": "getGuarantorTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Guarantors"]
      }
    },
    "/v1/loans/{loanId}/guarantors/template": {
      "get": {
        "operationId": "newGuarantorTemplate",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/GuarantorData" } }
            },
            "description": "default response"
          }
        },
        "tags": ["Guarantors"]
      }
    },
    "/v1/loans/{loanId}/guarantors/uploadtemplate": {
      "post": {
        "operationId": "postGuarantorTemplate",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload guarantor template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Guarantors"]
      }
    },
    "/v1/loans/{loanId}/guarantors/{guarantorId}": {
      "delete": {
        "operationId": "deleteGuarantor",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "guarantorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "guarantorFundingId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Guarantors"]
      },
      "get": {
        "operationId": "retrieveGuarantorDetails_1",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "guarantorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/GuarantorData" } }
            },
            "description": "default response"
          }
        },
        "tags": ["Guarantors"]
      },
      "put": {
        "operationId": "updateGuarantor",
        "parameters": [
          {
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "guarantorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/GuarantorsRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Guarantors"]
      }
    },
    "/v1/loans/{loanId}/interest-pauses": {
      "get": {
        "description": "Fetches a list of all active interest pause periods for a specific loan.",
        "operationId": "retrieveAllLoanInterestPauses",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/InterestPauseResponseDto" }
                }
              }
            },
            "description": "List of interest pause periods"
          }
        },
        "summary": "Retrieve all interest pause periods for a loan",
        "tags": ["Loan Interest Pause"],
        "x-alternative-operation-id": "retrieveInterestPauses"
      },
      "post": {
        "description": "Allows users to define a period during which no interest will be accrued for a specific loan.",
        "operationId": "createLoanInterestPause",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InterestPauseRequestDto" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "Command successfully processed"
          }
        },
        "summary": "Create a new interest pause period for a loan",
        "tags": ["Loan Interest Pause"],
        "x-alternative-operation-id": "createInterestPause"
      }
    },
    "/v1/loans/{loanId}/interest-pauses/{variationId}": {
      "delete": {
        "description": "Deletes a specific interest pause period by its variation ID.",
        "operationId": "deleteLoanInterestPause",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "variationId",
            "in": "path",
            "name": "variationId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": { "204": { "description": "No Content" } },
        "summary": "Delete an interest pause period",
        "tags": ["Loan Interest Pause"],
        "x-alternative-operation-id": "deleteInterestPause"
      },
      "put": {
        "description": "Updates a specific interest pause period by its variation ID.",
        "operationId": "updateLoanInterestPause",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "variationId",
            "in": "path",
            "name": "variationId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/InterestPauseRequestDto" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "Command successfully processed"
          }
        },
        "summary": "Update an interest pause period",
        "tags": ["Loan Interest Pause"],
        "x-alternative-operation-id": "updateInterestPause"
      }
    },
    "/v1/loans/{loanId}/originators": {
      "get": {
        "description": "Retrieves all originators attached to a specific loan. Requires READ_LOAN permission.",
        "operationId": "retrieveOriginatorsByLoanId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorsResponse" }
              }
            },
            "description": "OK - Returns wrapped list of originators (may be empty)"
          },
          "403": { "description": "Insufficient permissions" },
          "404": { "description": "Loan not found" }
        },
        "summary": "Retrieve originators for a loan by loan ID",
        "tags": ["Loan Originators"]
      }
    },
    "/v1/loans/{loanId}/originators/external-id/{originatorExternalId}": {
      "delete": {
        "operationId": "detachOriginatorFromLoanByOriginatorExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "originatorExternalId",
            "in": "path",
            "name": "originatorExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Loan not in correct status" },
          "404": { "description": "Loan, originator, or mapping not found" }
        },
        "summary": "Detach originator from loan by loan ID and originator external ID",
        "tags": ["Loan Originators"]
      },
      "post": {
        "operationId": "attachOriginatorToLoanByOriginatorExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "originatorExternalId",
            "in": "path",
            "name": "originatorExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": {
            "description": "Loan not in correct status, originator not ACTIVE, duplicate mapping"
          },
          "404": { "description": "Loan or originator not found" }
        },
        "summary": "Attach originator to loan by loan ID and originator external ID",
        "tags": ["Loan Originators"]
      }
    },
    "/v1/loans/{loanId}/originators/{originatorId}": {
      "delete": {
        "description": "Detaches an originator from a loan. Loan must be in 'Submitted and Pending Approval' status. Requires DETACH_LOAN_ORIGINATOR permission.",
        "operationId": "detachOriginatorFromLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK - Originator detached"
          },
          "403": { "description": "Loan not in correct status or insufficient permissions" },
          "404": { "description": "Loan, originator, or mapping not found" }
        },
        "summary": "Detach originator from loan by IDs",
        "tags": ["Loan Originators"]
      },
      "post": {
        "description": "Attaches an originator to a loan. Loan must be in 'Submitted and Pending Approval' status. Requires ATTACH_LOAN_ORIGINATOR permission.",
        "operationId": "attachOriginatorToLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK - Originator attached"
          },
          "403": {
            "description": "Loan not in correct status, originator not ACTIVE, duplicate mapping, or insufficient permissions"
          },
          "404": { "description": "Loan or originator not found" }
        },
        "summary": "Attach originator to loan by IDs",
        "tags": ["Loan Originators"]
      }
    },
    "/v1/loans/{loanId}/postdatedchecks": {
      "get": {
        "description": "Get All Post dated Checks",
        "operationId": "getPostDatedChecks",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetPostDatedChecks" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Get All Post Dated Checks",
        "tags": ["repayment with post dated checks"]
      }
    },
    "/v1/loans/{loanId}/postdatedchecks/{installmentId}": {
      "get": {
        "description": "Get Post Dated Check",
        "operationId": "getPostDatedCheck",
        "parameters": [
          {
            "description": "installmentId",
            "in": "path",
            "name": "installmentId",
            "required": true,
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetPostDatedChecks" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Get Post Dated Check",
        "tags": ["repayment with post dated checks"]
      }
    },
    "/v1/loans/{loanId}/postdatedchecks/{postDatedCheckId}": {
      "delete": {
        "description": "Delete Post Dated Check",
        "operationId": "deletePostDatedCheck",
        "parameters": [
          {
            "description": "postDatedCheckId",
            "in": "path",
            "name": "postDatedCheckId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/DeletePostDatedCheck" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete Post Dated Check",
        "tags": ["repayment with post dated checks"]
      },
      "put": {
        "description": "Update Post Dated Check, Bounced Check",
        "operationId": "updatePostDatedChecks",
        "parameters": [
          {
            "description": "postDatedCheckId",
            "in": "path",
            "name": "postDatedCheckId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "editType",
            "in": "query",
            "name": "editType",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/UpdatePostDatedCheckRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/UpdatePostDatedCheckResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Post Dated Check, Bounced Check",
        "tags": ["repayment with post dated checks"]
      }
    },
    "/v1/loans/{loanId}/schedule": {
      "post": {
        "description": "Calculate loan repayment schedule based on Loan term variations:\n\nMandatory Fields: exceptions,locale,dateFormat\n\nUpdates loan repayment schedule based on Loan term variations:\n\nMandatory Fields: exceptions,locale,dateFormat\n\nUpdates loan repayment schedule by removing Loan term variations:\n\nIt updates the loan repayment schedule by removing Loan term variations\n\nShowing request/response for 'Updates loan repayment schedule by removing Loan term variations'",
        "operationId": "handleCommandsLoanSchedule",
        "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/PostLoansLoanIdScheduleRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansLoanIdScheduleResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Calculate loan repayment schedule based on Loan term variations | Updates loan repayment schedule based on Loan term variations | Updates loan repayment schedule by removing Loan term variations",
        "tags": ["Loan Rescheduling"],
        "x-alternative-operation-id": "calculateLoanScheduleOrSubmitVariableSchedule"
      }
    },
    "/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": ["Loans"]
      }
    },
    "/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"
      },
      "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"
      }
    },
    "/v1/loans/{loanId}/transactions/external-id/{externalTransactionId}": {
      "get": {
        "description": "Retrieves a Transaction Details\n\nExample Request:\n\nloans/5/transactions/external-id/5dd80a7c-ccba-4446-b378-01eb6f53e871",
        "operationId": "retrieveOneLoanTransactionByExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "externalTransactionId",
            "in": "path",
            "name": "externalTransactionId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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": "retrieveTransactionByTransactionExternalId"
      },
      "post": {
        "description": "Note: there is no need to specify command={transactionType} parameter.\n\nMandatory Fields: transactionDate, transactionAmount",
        "operationId": "adjustLoanTransactionByTransactionExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "externalTransactionId",
            "in": "path",
            "name": "externalTransactionId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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-alternative-operation-id": "adjustLoanTransaction_1"
      }
    },
    "/v1/loans/{loanId}/transactions/external-id/{transactionExternalId}": {
      "put": {
        "description": "Undo a Waive Charge Transaction",
        "operationId": "undoWaiveChargeLoanTransactionByTransactionExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "transactionExternalId",
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "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_1"
      }
    },
    "/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"
      }
    },
    "/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"
      }
    },
    "/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"
      }
    },
    "/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"
      },
      "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"]
      },
      "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"
      }
    },
    "/v1/makercheckers": {
      "get": {
        "description": "Get a list of entries that can be checked by the requestor that match the criteria supplied.\n\nExample Requests:\n\nmakercheckers\n\nmakercheckers?fields=madeOnDate,maker,processingResult\n\nmakercheckers?makerDateTimeFrom=2013-03-25 08:00:00&makerDateTimeTo=2013-04-04 18:00:00\n\nmakercheckers?officeId=1\n\nmakercheckers?officeId=1&includeJson=true",
        "operationId": "retrieveCommands",
        "parameters": [
          { "in": "query", "name": "actionName", "schema": { "type": "string" } },
          { "in": "query", "name": "entityName", "schema": { "type": "string" } },
          {
            "in": "query",
            "name": "resourceId",
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "makerId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "username", "schema": { "type": "string" } },
          { "in": "query", "name": "makerDateTimeFrom", "schema": { "type": "string" } },
          { "in": "query", "name": "makerDateTimeTo", "schema": { "type": "string" } },
          { "in": "query", "name": "clientId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "loanid", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "groupId", "schema": { "type": "integer", "format": "int64" } },
          {
            "in": "query",
            "name": "savingsAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } },
          { "in": "query", "name": "locale", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AuditData" } }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Maker Checker Entries",
        "tags": ["Maker Checker (or 4-eye) functionality"]
      }
    },
    "/v1/makercheckers/searchtemplate": {
      "get": {
        "description": "This is a convenience resource. It can be useful when building a Checker Inbox UI. \"appUsers\" are data scoped to the office/branch the requestor is associated with. \"actionNames\" and \"entityNames\" returned are those that the requestor has Checker approval permissions for.\n\nExample Requests:\n\nmakercheckers/searchtemplate\nmakercheckers/searchtemplate?fields=entityNames",
        "operationId": "retrieveAuditSearchTemplate_1",
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/AuditSearchData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Maker Checker Search Template",
        "tags": ["Maker Checker (or 4-eye) functionality"]
      }
    },
    "/v1/makercheckers/{auditId}": {
      "delete": {
        "operationId": "deleteMakerCheckerEntry",
        "parameters": [
          {
            "description": "auditId",
            "in": "path",
            "name": "auditId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostMakerCheckersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete Maker Checker Entry",
        "tags": ["Maker Checker (or 4-eye) functionality"]
      },
      "post": {
        "operationId": "approveMakerCheckerEntry",
        "parameters": [
          {
            "description": "auditId",
            "in": "path",
            "name": "auditId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostMakerCheckersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Approve Maker Checker Entry | Reject Maker Checker Entry",
        "tags": ["Maker Checker (or 4-eye) functionality"]
      }
    },
    "/v1/notifications": {
      "get": {
        "description": "Returns a paginated list of notifications for the authenticated user, with optional filtering by read status.",
        "operationId": "getAllNotifications",
        "parameters": [
          {
            "description": "orderBy",
            "in": "query",
            "name": "orderBy",
            "schema": { "type": "string" }
          },
          {
            "description": "limit",
            "in": "query",
            "name": "limit",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "offset",
            "in": "query",
            "name": "offset",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "sortOrder",
            "in": "query",
            "name": "sortOrder",
            "schema": { "type": "string" }
          },
          {
            "description": "isRead",
            "in": "query",
            "name": "isRead",
            "schema": { "type": "boolean" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetNotificationsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve all Notifications",
        "tags": ["Notification"]
      },
      "put": {
        "description": "Updates the read status of all notifications for the authenticated user.",
        "operationId": "updateNotificationReadStatus",
        "responses": {
          "default": { "content": { "application/json": {} }, "description": "default response" }
        },
        "summary": "Update Notification Read Status",
        "tags": ["Notification"],
        "x-alternative-operation-id": "update_5"
      }
    },
    "/v1/offices": {
      "get": {
        "description": "Example Requests:\n\noffices\n\n\noffices?fields=id,name,openingDate",
        "operationId": "retrieveAllOffices",
        "parameters": [
          {
            "description": "includeAllOffices",
            "in": "query",
            "name": "includeAllOffices",
            "schema": { "type": "boolean", "default": false }
          },
          {
            "description": "orderBy",
            "in": "query",
            "name": "orderBy",
            "schema": { "type": "string" }
          },
          {
            "description": "sortOrder",
            "in": "query",
            "name": "sortOrder",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetOfficesResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Offices",
        "tags": ["Offices"],
        "x-alternative-operation-id": "retrieveOffices"
      },
      "post": {
        "description": "Mandatory Fields\nname, openingDate, parentId",
        "operationId": "createOffice",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/PostOfficesRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostOfficesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create an Office",
        "tags": ["Offices"]
      }
    },
    "/v1/offices/downloadtemplate": {
      "get": {
        "operationId": "getOfficeTemplate",
        "parameters": [{ "in": "query", "name": "dateFormat", "schema": { "type": "string" } }],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Offices"]
      }
    },
    "/v1/offices/external-id/{externalId}": {
      "get": {
        "description": "Example Requests:\n\noffices/external-id/asd123\n\n\noffices/external-id/asd123?template=true\n\n\noffices/external-id/asd123?fields=id,name,parentName",
        "operationId": "retrieveOneOfficeByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetOfficesResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve an Office using external id",
        "tags": ["Offices"],
        "x-alternative-operation-id": "retrieveOfficeByExternalId"
      },
      "put": {
        "operationId": "updateOfficeByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutOfficesOfficeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutOfficesOfficeIdResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update Office",
        "tags": ["Offices"],
        "x-alternative-operation-id": "updateOfficeWithExternalId"
      }
    },
    "/v1/offices/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\noffices/template",
        "operationId": "retrieveTemplateOffice",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetOfficesTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Office Details Template",
        "tags": ["Offices"],
        "x-alternative-operation-id": "retrieveOfficeTemplate_1"
      }
    },
    "/v1/offices/uploadtemplate": {
      "post": {
        "operationId": "postOfficeTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload office template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Offices"]
      }
    },
    "/v1/offices/{officeId}": {
      "get": {
        "description": "Example Requests:\n\noffices/1\n\n\noffices/1?template=true\n\n\noffices/1?fields=id,name,parentName",
        "operationId": "retrieveOneOffice",
        "parameters": [
          {
            "description": "officeId",
            "in": "path",
            "name": "officeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetOfficesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve an Office",
        "tags": ["Offices"],
        "x-alternative-operation-id": "retrieveOffice"
      },
      "put": {
        "operationId": "updateOffice",
        "parameters": [
          {
            "description": "officeId",
            "in": "path",
            "name": "officeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutOfficesOfficeIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutOfficesOfficeIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Office",
        "tags": ["Offices"]
      }
    },
    "/v1/officetransactions": {
      "get": {
        "operationId": "retrieveOfficeTransactions",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        }
      },
      "post": {
        "operationId": "transferMoneyFrom",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        }
      }
    },
    "/v1/officetransactions/template": {
      "get": {
        "operationId": "newOfficeTransactionDetails",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        }
      }
    },
    "/v1/officetransactions/{transactionId}": {
      "delete": {
        "operationId": "delete_2",
        "parameters": [
          {
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "x-alternative-operation-id": "delete_7"
      }
    },
    "/v1/password/forgot": {
      "post": {
        "description": "Requests a password reset for the user with the given email.\nIf the email exists and the user is active, a temporary password will be sent to the email address.\nThe temporary password expires in 1 hour.",
        "operationId": "forgotPassword",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ForgotPasswordRequest" }
            }
          },
          "required": true
        },
        "responses": { "200": { "description": "OK" } },
        "summary": "Request password reset",
        "tags": ["Password Management"]
      }
    },
    "/v1/passwordpreferences": {
      "get": {
        "description": "Returns the password policies and their current status (active/inactive).",
        "operationId": "retrieveAllPasswordPreferences",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetPasswordPreferencesTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Password Preferences",
        "tags": ["Password preferences"],
        "x-alternative-operation-id": "retrieve_1"
      },
      "put": {
        "operationId": "updatePasswordPreferences",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutPasswordPreferencesTemplateRequest" }
            }
          },
          "required": true
        },
        "responses": { "200": { "description": "OK" } },
        "summary": "Update password preferences",
        "tags": ["Password preferences"],
        "x-alternative-operation-id": "update_25"
      }
    },
    "/v1/passwordpreferences/template": {
      "get": {
        "description": "ARGUMENTS\nExample Requests:\n\npasswordpreferences",
        "operationId": "retrieveTemplatePasswordPreferences",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetPasswordPreferencesTemplateResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Application Password validation policies",
        "tags": ["Password preferences"],
        "x-alternative-operation-id": "template_21"
      }
    },
    "/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 Type"]
      },
      "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 Type"]
      }
    },
    "/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 Type"],
        "x-alternative-operation-id": "deleteCode_1"
      },
      "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 Type"]
      },
      "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 Type"]
      }
    },
    "/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 KiKé Group 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": ["Permissions"]
      },
      "put": {
        "operationId": "updatePermissions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutPermissionsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Enable/Disable Permissions for Maker Checker",
        "tags": ["Permissions"],
        "x-alternative-operation-id": "updatePermissionsDetails"
      }
    },
    "/v1/povertyLine/{ppiName}": {
      "get": {
        "operationId": "retrieveAll_6",
        "parameters": [
          { "in": "path", "name": "ppiName", "required": true, "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Poverty Line"],
        "x-alternative-operation-id": "retrieveAll_12"
      }
    },
    "/v1/povertyLine/{ppiName}/{likelihoodId}": {
      "get": {
        "operationId": "retrieveAll_7",
        "parameters": [
          { "in": "path", "name": "ppiName", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "likelihoodId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Poverty Line"],
        "x-alternative-operation-id": "retrieveAll_13"
      }
    },
    "/v1/products/{type}": {
      "get": {
        "description": "Lists Share Products\n\nMandatory Fields: limit, offset\n\nExample Requests:\n\nshareproducts",
        "operationId": "retrieveAllShareProducts",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetProductsTypeResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Share Products",
        "tags": ["Products"],
        "x-alternative-operation-id": "retrieveAllProducts"
      },
      "post": {
        "description": "Creates a Share Product\n\nMandatory Fields: name, shortName, description, currencyCode, digitsAfterDecimal,inMultiplesOf, locale, totalShares, unitPrice, nominalShares,allowDividendCalculationForInactiveClients,accountingRule\n\nMandatory Fields for Cash based accounting (accountingRule = 2): shareReferenceId, shareSuspenseId, shareEquityId, incomeFromFeeAccountId\n\nOptional Fields: sharesIssued, minimumShares, maximumShares, minimumActivePeriodForDividends, minimumactiveperiodFrequencyType, lockinPeriodFrequency, lockinPeriodFrequencyType, marketPricePeriods, chargesSelected",
        "operationId": "createShareProduct",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostProductsTypeRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostProductsTypeResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Share Product",
        "tags": ["Products"],
        "x-alternative-operation-id": "createProduct"
      }
    },
    "/v1/products/{type}/template": {
      "get": {
        "operationId": "retrieveTemplateShareProduct",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve Share Product Template",
        "tags": ["Products"],
        "x-alternative-operation-id": "retrieveTemplate_13"
      }
    },
    "/v1/products/{type}/{productId}": {
      "get": {
        "description": "Retrieves a Share Product\n\nExample Requests:\n\nproducts/share/1\n\n\nproducts/share/1?template=true",
        "operationId": "retrieveOneShareProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetProductsTypeProductIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Share Product",
        "tags": ["Products"],
        "x-alternative-operation-id": "retrieveProduct"
      },
      "post": {
        "operationId": "handleCommandsShareProduct",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Handle Share Product commands",
        "tags": ["Products"],
        "x-alternative-operation-id": "handleCommands_3"
      },
      "put": {
        "description": "Updates a Share Product",
        "operationId": "updateShareProduct",
        "parameters": [
          {
            "description": "type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutProductsTypeProductIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutProductsTypeProductIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Share Product",
        "tags": ["Products"],
        "x-alternative-operation-id": "updateProduct"
      }
    },
    "/v1/provisioningcategory": {
      "get": {
        "operationId": "retrieveAll_8",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/ProvisioningCategoryData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Provisioning Category"],
        "x-alternative-operation-id": "retrieveAll_15"
      },
      "post": {
        "operationId": "createProvisioningCategory",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Provisioning Category"]
      }
    },
    "/v1/provisioningcategory/{categoryId}": {
      "delete": {
        "operationId": "deleteProvisioningCategory",
        "parameters": [
          {
            "in": "path",
            "name": "categoryId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Provisioning Category"]
      },
      "put": {
        "operationId": "updateProvisioningCategory",
        "parameters": [
          {
            "in": "path",
            "name": "categoryId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Provisioning Category"]
      }
    },
    "/v1/provisioningcriteria": {
      "get": {
        "description": "Retrieves all created Provisioning Criterias",
        "operationId": "retrieveAllProvisioningCriteria",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetProvisioningCriteriaResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieves all created Provisioning Criterias",
        "tags": ["Provisioning Criteria"],
        "x-alternative-operation-id": "retrieveAllProvisioningCriterias"
      },
      "post": {
        "description": "Creates a new Provisioning Criteria\n\nMandatory Fields: \ncriteriaName\nprovisioningcriteria\n\nOptional Fields: \nloanProducts",
        "operationId": "createProvisioningCriteria",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostProvisioningCriteriaRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostProvisioningCriteriaResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a new Provisioning Criteria",
        "tags": ["Provisioning Criteria"]
      }
    },
    "/v1/provisioningcriteria/template": {
      "get": {
        "operationId": "retrieveTemplate_1",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ProvisioningCriteriaData" }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Provisioning Criteria"],
        "x-alternative-operation-id": "retrieveTemplate_3"
      }
    },
    "/v1/provisioningcriteria/{criteriaId}": {
      "delete": {
        "description": "Deletes Provisioning Criteria",
        "operationId": "deleteProvisioningCriteria",
        "parameters": [
          {
            "description": "criteriaId",
            "in": "path",
            "name": "criteriaId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteProvisioningCriteriaResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Deletes Provisioning Criteria",
        "tags": ["Provisioning Criteria"]
      },
      "get": {
        "description": "Retrieves a Provisioning Criteria",
        "operationId": "retrieveOneProvisioningCriteria",
        "parameters": [
          {
            "description": "criteriaId",
            "in": "path",
            "name": "criteriaId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetProvisioningCriteriaCriteriaIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieves a Provisioning Criteria",
        "tags": ["Provisioning Criteria"],
        "x-alternative-operation-id": "retrieveProvisioningCriteria"
      },
      "put": {
        "description": "Updates a new Provisioning Criteria\n\nOptional Fields\ncriteriaName, loanProducts, provisioningcriteria",
        "operationId": "updateProvisioningCriteria",
        "parameters": [
          {
            "description": "criteriaId",
            "in": "path",
            "name": "criteriaId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutProvisioningCriteriaRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutProvisioningCriteriaResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Updates a new Provisioning Criteria",
        "tags": ["Provisioning Criteria"]
      }
    },
    "/v1/provisioningentries": {
      "get": {
        "operationId": "retrieveAllProvisioningEntries",
        "parameters": [
          {
            "description": "offset",
            "in": "query",
            "name": "offset",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "limit",
            "in": "query",
            "name": "limit",
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PageProvisioningEntryData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List all Provisioning Entries Metadata",
        "tags": ["Provisioning Entries"]
      },
      "post": {
        "description": "Creates a new Provisioning Entries\n\nMandatory Fields\ndate\ndateFormat\nlocale\nOptional Fields\ncreatejournalentries",
        "operationId": "createProvisioningEntries",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ProvisionEntryRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostProvisioningEntriesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create new Provisioning Entries",
        "tags": ["Provisioning Entries"]
      }
    },
    "/v1/provisioningentries/entries": {
      "get": {
        "operationId": "retrieveProvisioningEntriesLoanProducts",
        "parameters": [
          { "in": "query", "name": "entryId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          {
            "in": "query",
            "name": "productId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "categoryId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PageLoanProductProvisioningEntryData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Provisioning Entries Loan Products Given a Query",
        "tags": ["Provisioning Entries"],
        "x-alternative-operation-id": "retrieveProviioningEntries"
      }
    },
    "/v1/provisioningentries/{entryId}": {
      "get": {
        "description": "Returns the metadata of a generated Provisioning Entry.",
        "operationId": "retrieveOneProvisioningEntry",
        "parameters": [
          {
            "description": "entryId",
            "in": "path",
            "name": "entryId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ProvisioningEntryData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieves a Provisioning Entry Metadata",
        "tags": ["Provisioning Entries"],
        "x-alternative-operation-id": "retrieveProvisioningEntry"
      },
      "post": {
        "description": "Recreates Provisioning Entry | createjournalentry.",
        "operationId": "modifyProvisioningEntry",
        "parameters": [
          {
            "description": "entryId",
            "in": "path",
            "name": "entryId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command=createjournalentry\ncommand=recreateprovisioningentry",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutProvisioningEntriesRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutProvisioningEntriesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Recreates Provisioning Entry",
        "tags": ["Provisioning Entries"]
      }
    },
    "/v1/rates": {
      "get": {
        "operationId": "retrieveAllRates",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RateData" } }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List all rates",
        "tags": ["Rate"],
        "x-alternative-operation-id": "getAllRates"
      },
      "post": {
        "operationId": "createRate",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/RateRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create a rate",
        "tags": ["Rate"]
      }
    },
    "/v1/rates/{rateId}": {
      "get": {
        "operationId": "retrieveOneRate",
        "parameters": [
          {
            "in": "path",
            "name": "rateId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/RateData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a rate",
        "tags": ["Rate"],
        "x-alternative-operation-id": "retrieveRate"
      },
      "put": {
        "operationId": "updateRate",
        "parameters": [
          {
            "in": "path",
            "name": "rateId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/RateRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update a rate",
        "tags": ["Rate"]
      }
    },
    "/v1/recurringdepositaccounts": {
      "get": {
        "description": "Lists Recurring deposit applications/accounts\n\nExample Requests:\n\nrecurringdepositaccounts\n\n\nrecurringdepositaccounts?fields=name",
        "operationId": "retrieveAllRecurringDepositAccounts",
        "parameters": [
          {
            "description": "paged",
            "in": "query",
            "name": "paged",
            "schema": { "type": "boolean" }
          },
          {
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetRecurringDepositAccountsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Recurring deposit applications/accounts",
        "tags": ["Recurring Deposit Account"],
        "x-alternative-operation-id": "retrieveAll_31"
      },
      "post": {
        "description": "Submits new recurring deposit application\n\nMandatory Fields: clientId or groupId, productId, submittedOnDate, depositAmount, depositPeriod, depositPeriodFrequencyId\n\nOptional Fields: accountNo, externalId, fieldOfficerId,linkAccountId(if provided initial deposit amount will be collected from this account),transferInterestToSavings(By enabling this flag all interest postings will be transferred to linked saving account )\n\nInherited from Product (if not provided): interestCompoundingPeriodType, interestCalculationType, interestCalculationDaysInYearType, lockinPeriodFrequency, lockinPeriodFrequencyType, preClosurePenalApplicable, preClosurePenalInterest, preClosurePenalInterestOnTypeId, charts, withHoldTax",
        "operationId": "submitApplicationRecurringDepositAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostRecurringDepositAccountsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostRecurringDepositAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Submit new recurring deposit application",
        "tags": ["Recurring Deposit Account"],
        "x-alternative-operation-id": "submitApplication_1"
      }
    },
    "/v1/recurringdepositaccounts/downloadtemplate": {
      "get": {
        "operationId": "getRecurringDepositTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "staffId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Recurring Deposit Account"]
      }
    },
    "/v1/recurringdepositaccounts/template": {
      "get": {
        "description": "This is a convenience resource. It can be useful when building maintenance user interface screens for recurring deposit applications. The template data returned consists of any or all of:\n\nField Defaults\nAllowed Value Lists\n\nExample Requests:\n\nrecurringdepositaccounts/template?clientId=1\n\n\nrecurringdepositaccounts/template?clientId=1&productId=1",
        "operationId": "retrieveTemplateRecurringDepositAccount",
        "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": "staffInSelectedOfficeOnly",
            "in": "query",
            "name": "staffInSelectedOfficeOnly",
            "schema": { "type": "boolean", "default": false }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRecurringDepositAccountsTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve recurring Deposit Account Template",
        "tags": ["Recurring Deposit Account"],
        "x-alternative-operation-id": "template_13"
      }
    },
    "/v1/recurringdepositaccounts/transactions/downloadtemplate": {
      "get": {
        "operationId": "getRecurringDepositTransactionTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Recurring Deposit Account"]
      }
    },
    "/v1/recurringdepositaccounts/transactions/uploadtemplate": {
      "post": {
        "operationId": "postRecurringDepositTransactionsTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload recurring deposit transactions template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Recurring Deposit Account"]
      }
    },
    "/v1/recurringdepositaccounts/uploadtemplate": {
      "post": {
        "operationId": "postRecurringDepositTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload recurring deposit template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Recurring Deposit Account"]
      }
    },
    "/v1/recurringdepositaccounts/{accountId}": {
      "delete": {
        "description": "At present we support hard delete of recurring deposit application so long as its in 'Submitted and pending approval' state. One the application is moves past this state, it is not possible to do a 'hard' delete of the application or the account. An API endpoint will be added to close/de-activate the recurring deposit account.",
        "operationId": "deleteRecurringDepositAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteRecurringDepositAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a recurring deposit application",
        "tags": ["Recurring Deposit Account"],
        "x-alternative-operation-id": "delete_16"
      },
      "get": {
        "description": "Retrieves a recurring deposit application/account\n\nExample Requests :\n\nrecurringdepositaccounts/1\n\n\nrecurringdepositaccounts/1?associations=all",
        "operationId": "retrieveOneRecurringDepositAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "staffInSelectedOfficeOnly",
            "in": "query",
            "name": "staffInSelectedOfficeOnly",
            "schema": { "type": "boolean", "default": false }
          },
          {
            "description": "chargeStatus",
            "in": "query",
            "name": "chargeStatus",
            "schema": { "type": "string", "default": "all" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRecurringDepositAccountsAccountIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a recurring deposit application/account",
        "tags": ["Recurring Deposit Account"],
        "x-alternative-operation-id": "retrieveOne_22"
      },
      "post": {
        "description": "Approve recurring deposit application:\n\nApproves recurring deposit application so long as its in 'Submitted and pending approval' state.\n\nUndo approval recurring deposit application:\n\nWill move 'approved' recurring deposit application back to 'Submitted and pending approval' state.\n\nReject recurring deposit application\n\nRejects recurring deposit application so long as its in 'Submitted and pending approval' state.\n\nWithdraw recurring deposit application:\n\nUsed when an applicant withdraws from the recurring deposit application. It must be in 'Submitted and pending approval' state.\n\nActivate a recurring deposit account:\n\nResults in an approved recurring deposit application being converted into an 'active' recurring deposit account.\n\nUpdate the recommended deposit amount for a recurring deposit account:\n\nUpdates the recommended deposit amount for a RD account as on the effective date.\n\nClose a recurring deposit account\n\nResults in a Matured recurring deposit account being converted into a 'closed' recurring deposit account.\n\nOn account close allowed actions are.Premature Close a recurring deposit account:\n\nResults in an Active recurring deposit account being converted into a 'Premature Closed' recurring deposit account with options to withdraw prematured amount. (premature amount is calculated using interest rate chart applicable along with penal interest if any.)\n\nOn account premature closure allowed actions are.\n\nCalculate Premature amount on Recurring deposit account:\n\nCalculate premature amount on recurring deposit till premature close date. Premature amount is calculated based on interest chart and penal interest applicable if any.\n\nCalculate Interest on recurring Deposit Account:\n\nCalculates interest earned on a recurring deposit account based on todays date. It does not attempt to post or credit the interest on the account. That is responsibility of the Post Interest API that will likely be called by overnight process.\n\nPost Interest on recurring Deposit Account:\n\nCalculates and Posts interest earned on a recurring deposit account based on todays date and whether an interest posting or crediting event is due.\n\nShowing request/response for 'Post Interest on recurring Deposit Account'",
        "operationId": "handleCommandsRecurringDepositAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRecurringDepositAccountsAccountIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostRecurringDepositAccountsAccountIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Approve recurring deposit application | Undo approval recurring deposit application | Reject recurring deposit application | Withdraw recurring deposit application | Activate a recurring deposit account | Update the recommended deposit amount for a recurring deposit account | Close a recurring deposit account | Premature Close a recurring deposit account | Calculate Premature amount on Recurring deposit account | Calculate Interest on recurring Deposit Account | Post Interest on recurring Deposit Account",
        "tags": ["Recurring Deposit Account"],
        "x-alternative-operation-id": "handleCommands_5"
      },
      "put": {
        "description": "Recurring deposit 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. Specific api endpoints will be created to allow change of interest detail such as rate, compounding period, posting period etc",
        "operationId": "updateRecurringDepositAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutRecurringDepositAccountsAccountIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutRecurringDepositAccountsAccountIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modify a recurring deposit application",
        "tags": ["Recurring Deposit Account"],
        "x-alternative-operation-id": "update_18"
      }
    },
    "/v1/recurringdepositaccounts/{accountId}/template": {
      "get": {
        "operationId": "accountClosureTemplateRecurringDepositAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve recurring deposit account closure template",
        "tags": ["Recurring Deposit Account"],
        "x-alternative-operation-id": "accountClosureTemplate_1"
      }
    },
    "/v1/recurringdepositaccounts/{recurringDepositAccountId}/transactions": {
      "post": {
        "description": "Deposit Transaction:\n\nUsed for a deposit transaction\n\nWithdrawal Transaction:\n\nUsed for a Withdrawal Transaction\n\nShowing request/response for Deposit Transaction",
        "operationId": "transactionRecurringDepositAccountTransaction",
        "parameters": [
          {
            "description": "recurringDepositAccountId",
            "in": "path",
            "name": "recurringDepositAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRecurringDepositAccountsRecurringDepositAccountIdTransactionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostRecurringDepositAccountsRecurringDepositAccountIdTransactionsResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Deposit Transaction | Withdrawal Transaction",
        "tags": ["Recurring Deposit Account Transactions"],
        "x-alternative-operation-id": "transaction_1"
      }
    },
    "/v1/recurringdepositaccounts/{recurringDepositAccountId}/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\nExample Requests:\n\nrecurringdepositaccounts/1/transactions/template?command=deposit\n\nrecurringdepositaccounts/1/transactions/template?command=withdrawal",
        "operationId": "retrieveTemplateRecurringDepositAccountTransaction",
        "parameters": [
          {
            "description": "recurringDepositAccountId",
            "in": "path",
            "name": "recurringDepositAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRecurringDepositAccountsRecurringDepositAccountIdTransactionsTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Recurring Deposit Account Transaction Template",
        "tags": ["Recurring Deposit Account Transactions"],
        "x-alternative-operation-id": "retrieveTemplate_16"
      }
    },
    "/v1/recurringdepositaccounts/{recurringDepositAccountId}/transactions/{transactionId}": {
      "get": {
        "description": "Retrieves Recurring Deposit Account Transaction\n\nExample Requests:\n\nrecurringdepositaccounts/1/transactions/1",
        "operationId": "retrieveOneRecurringDepositAccountTransaction",
        "parameters": [
          {
            "description": "recurringDepositAccountId",
            "in": "path",
            "name": "recurringDepositAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "transactionId",
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRecurringDepositAccountsRecurringDepositAccountIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Recurring Deposit Account Transaction",
        "tags": ["Recurring Deposit Account Transactions"],
        "x-alternative-operation-id": "retrieveOne_21"
      },
      "post": {
        "description": "Adjust Transaction:\n\nThis command modifies the given transaction.\n\nUndo transaction:\n\nThis command reverses the given transaction.\n\nShowing request/response for 'Adjust Transaction'",
        "operationId": "handleCommandsRecurringDepositAccountTransaction",
        "parameters": [
          {
            "description": "recurringDepositAccountId",
            "in": "path",
            "name": "recurringDepositAccountId",
            "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/PostRecurringDepositAccountsRecurringDepositAccountIdTransactionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostRecurringDepositAccountsRecurringDepositAccountIdTransactionsTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Adjust Transaction | Undo transaction",
        "tags": ["Recurring Deposit Account Transactions"],
        "x-alternative-operation-id": "handleTransactionCommands"
      }
    },
    "/v1/recurringdepositproducts": {
      "get": {
        "description": "Lists Recuring Deposit Products\n\nExample Requests:\n\nrecurringdepositproducts\n\n\nrecurringdepositproducts?fields=name",
        "operationId": "retrieveAllRecurringDepositProducts",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetRecurringDepositProductsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Recuring Deposit Products",
        "tags": ["Recurring Deposit Product"],
        "x-alternative-operation-id": "retrieveAll_32"
      },
      "post": {
        "description": "Creates a Recurring Deposit Product\n\nMandatory Fields: name, shortName, description, currencyCode, digitsAfterDecimal,inMultiplesOf, interestCompoundingPeriodType, interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minDepositTerm, minDepositTermTypeId, accountingRule, depositAmount, charts\n\nMandatory Fields for Cash based accounting (accountingRule = 2): savingsReferenceAccountId, savingsControlAccountId, interestOnSavingsAccountId, incomeFromFeeAccountId, transfersInSuspenseAccountId, incomeFromPenaltyAccountId\n\nOptional Fields: lockinPeriodFrequency, lockinPeriodFrequencyType, maxDepositTerm, maxDepositTermTypeId, inMultiplesOfDepositTerm, inMultiplesOfDepositTermTypeId, preClosurePenalApplicable, preClosurePenalInterest, preClosurePenalInterestOnTypeId, feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, charges, minDepositAmount, maxDepositAmount, withHoldTax, taxGroupId",
        "operationId": "createRecurringDepositProduct",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostRecurringDepositProductsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostRecurringDepositProductsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Recurring Deposit Product",
        "tags": ["Recurring Deposit Product"],
        "x-alternative-operation-id": "create_12"
      }
    },
    "/v1/recurringdepositproducts/template": {
      "get": {
        "operationId": "retrieveTemplateRecurringDepositProduct",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve Recurring Deposit Product Template",
        "tags": ["Recurring Deposit Product"],
        "x-alternative-operation-id": "retrieveTemplate_17"
      }
    },
    "/v1/recurringdepositproducts/{productId}": {
      "delete": {
        "description": "Deletes a Recurring Deposit Product",
        "operationId": "deleteRecurringDepositProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteRecurringDepositProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Recurring Deposit Product",
        "tags": ["Recurring Deposit Product"],
        "x-alternative-operation-id": "delete_17"
      },
      "get": {
        "description": "Retrieves a Recurring Deposit Product\n\nExample Requests:\n\nrecurringdepositproducts/1\n\n\nrecurringdepositproducts/1?template=true\n\n\nrecurringdepositproducts/1?fields=name,description",
        "operationId": "retrieveOneRecurringDepositProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Recurring Deposit Product",
        "tags": ["Recurring Deposit Product"],
        "x-alternative-operation-id": "retrieveOne_23"
      },
      "put": {
        "description": "Updates a Recurring Deposit Product",
        "operationId": "updateRecurringDepositProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutRecurringDepositProductsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutRecurringDepositProductsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Recurring Deposit Product",
        "tags": ["Recurring Deposit Product"],
        "x-alternative-operation-id": "update_19"
      }
    },
    "/v1/reportmailingjobrunhistory": {
      "get": {
        "description": "The list capability of report mailing job history can support pagination and sorting.\n\nExample Requests:\n\nreportmailingjobrunhistory/1",
        "operationId": "retrieveAllReportMailingJobRunHistory",
        "parameters": [
          {
            "description": "reportMailingJobId",
            "in": "query",
            "name": "reportMailingJobId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ReportMailingJobRunHistoryData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Report Mailing Job History",
        "tags": ["List Report Mailing Job History"],
        "x-alternative-operation-id": "retrieveAllByReportMailingJobId"
      }
    },
    "/v1/reportmailingjobs": {
      "get": {
        "description": "Example Requests:\n\nreportmailingjobs",
        "operationId": "retrieveAllReportMailingJobs",
        "parameters": [
          {
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetReportMailingJobsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Report Mailing Jobs",
        "tags": ["Report Mailing Jobs"]
      },
      "post": {
        "description": "Mandatory Fields: name, startDateTime, stretchyReportId, emailRecipients, emailSubject, emailMessage, emailAttachmentFileFormatId, recurrence, isActive\n\nOptional Fields: description, stretchyReportParamMap",
        "operationId": "createReportMailingJob",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostReportMailingJobsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostReportMailingJobsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Report Mailing Job",
        "tags": ["Report Mailing Jobs"]
      }
    },
    "/v1/reportmailingjobs/template": {
      "get": {
        "description": "This is a convenience resource. It can be useful when building maintenance user interface screens for report mailing job applications. The template data returned consists of any or all of:\n\nField Defaults\nAllowed description Lists\nExample Request:\n\nreportmailingjobs/template",
        "operationId": "retrieveTemplateReportMailingJob",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetReportMailingJobsTemplate" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Report Mailing Job Details Template",
        "tags": ["Report Mailing Jobs"],
        "x-alternative-operation-id": "retrieveReportMailingJobTemplate"
      }
    },
    "/v1/reportmailingjobs/{entityId}": {
      "delete": {
        "operationId": "deleteReportMailingJob",
        "parameters": [
          {
            "description": "entityId",
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteReportMailingJobsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Report Mailing Job",
        "tags": ["Report Mailing Jobs"]
      },
      "get": {
        "description": "Example Requests:\n\nreportmailingjobs/1\n\n\nreportmailingjobs/1?template=true",
        "operationId": "retrieveOneReportMailingJob",
        "parameters": [
          {
            "description": "entityId",
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetReportMailingJobsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Report Mailing Job",
        "tags": ["Report Mailing Jobs"],
        "x-alternative-operation-id": "retrieveReportMailingJob"
      },
      "put": {
        "operationId": "updateReportMailingJob",
        "parameters": [
          {
            "description": "entityId",
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutReportMailingJobsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutReportMailingJobsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Report Mailing Job\n",
        "tags": ["Report Mailing Jobs"]
      }
    },
    "/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"
      },
      "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"]
      }
    },
    "/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"
      }
    },
    "/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"]
      },
      "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"
      },
      "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"]
      }
    },
    "/v1/rescheduleloans": {
      "get": {
        "description": "Retrieve all reschedule requests.",
        "operationId": "retrieveAllRescheduleLoans",
        "parameters": [
          { "in": "query", "name": "command", "schema": { "type": "string" } },
          { "in": "query", "name": "loanId", "schema": { "type": "integer", "format": "int64" } }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetLoanRescheduleRequestResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve all reschedule requests",
        "tags": ["Reschedule Loans"],
        "x-alternative-operation-id": "retrieveAllRescheduleRequest"
      },
      "post": {
        "description": "Create a loan reschedule request.",
        "operationId": "createRescheduleLoan",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostCreateRescheduleLoansRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostCreateRescheduleLoansResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create loan reschedule request",
        "tags": ["Reschedule Loans"],
        "x-alternative-operation-id": "createLoanRescheduleRequest"
      }
    },
    "/v1/rescheduleloans/template": {
      "get": {
        "description": "Retrieve all reschedule loan reasons as a template",
        "operationId": "retrieveAllRescheduleLoanReasons",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetRescheduleReasonsTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve all reschedule loan reasons",
        "tags": ["Reschedule Loans"],
        "x-alternative-operation-id": "retrieveTemplate_10"
      }
    },
    "/v1/rescheduleloans/{scheduleId}": {
      "get": {
        "description": "Retrieve loan reschedule request by schedule id",
        "operationId": "retrieveOneRescheduleLoan",
        "parameters": [
          {
            "in": "path",
            "name": "scheduleId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetLoanRescheduleRequestResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve loan reschedule request by schedule id",
        "tags": ["Reschedule Loans"],
        "x-alternative-operation-id": "readLoanRescheduleRequest"
      },
      "post": {
        "description": "Update a loan reschedule request by either approving/rejecting it.",
        "operationId": "updateRescheduleLoan",
        "parameters": [
          {
            "in": "path",
            "name": "scheduleId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostUpdateRescheduleLoansRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostUpdateRescheduleLoansResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update loan reschedule request",
        "tags": ["Reschedule Loans"],
        "x-alternative-operation-id": "updateLoanRescheduleRequest"
      }
    },
    "/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"]
      },
      "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"]
      }
    },
    "/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"]
      },
      "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"],
        "x-alternative-operation-id": "retrieveRole"
      },
      "post": {
        "description": "Description : Enable role in case role is disabled. | Disable the role in case role is not associated with any users.\n\n\n\n\n\nExample Request:   https://DomainName/api/v1/roles/{roleId}?command=enable\n\n\n\n\n\nhttps://DomainName/api/v1/roles/{roleId}?command=disable",
        "operationId": "handleCommandsRole",
        "parameters": [
          {
            "description": "roleId",
            "in": "path",
            "name": "roleId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostRolesRoleIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Enable Role | Disable Role",
        "tags": ["Roles"],
        "x-alternative-operation-id": "actionsOnRoles"
      },
      "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"]
      }
    },
    "/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"]
      },
      "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"]
      }
    },
    "/v1/runaccruals": {
      "post": {
        "description": "Mandatory Fields\n\ntillDate\n",
        "operationId": "executePeriodicAccrualAccounting",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostRunaccrualsRequest" }
            }
          },
          "required": true
        },
        "responses": { "200": { "description": "OK" } },
        "summary": "Executes Periodic Accrual Accounting",
        "tags": ["Periodic Accrual Accounting"]
      }
    },
    "/v1/runreports/availableExports/{reportName}": {
      "get": {
        "description": "Returns the list of all available export types for a given report.",
        "operationId": "retrieveAllAvailableExports",
        "parameters": [
          {
            "description": "Name of the report to get available export types for",
            "example": "Client Listing",
            "in": "path",
            "name": "reportName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/ReportExportType" }
                }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad Request - Invalid report name or parameters" },
          "500": { "description": "Internal Server Error" }
        },
        "summary": "Return all available export types for the specific report",
        "tags": ["Run Reports"]
      }
    },
    "/v1/runreports/{reportName}": {
      "get": {
        "description": "This resource allows you to run and receive output from pre-defined KiKé Group 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 KiKé Group 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": ["Run Reports"]
      }
    },
    "/v1/savingsaccounts": {
      "get": {
        "description": "Lists savings applications/accounts\n\nExample Requests:\n\nsavingsaccounts\n\n\nsavingsaccounts?fields=name",
        "operationId": "retrieveAllSavingsAccounts",
        "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetSavingsAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List savings applications/accounts",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "retrieveAll_33"
      },
      "post": {
        "description": "Submits new savings application\n\nMandatory Fields: clientId or groupId, productId, submittedOnDate\n\nOptional Fields: accountNo, externalId, fieldOfficerId\n\nInherited from Product (if not provided): nominalAnnualInterestRate, interestCompoundingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, allowOverdraft, overdraftLimit, withHoldTax\n\nAdditional Mandatory Field if Entity-Datatable Check is enabled for the entity of type Savings: datatables",
        "operationId": "submitSavingsApplication",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostSavingsAccountsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostSavingsAccountsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Submit new savings application",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "submitApplication_2"
      }
    },
    "/v1/savingsaccounts/downloadtemplate": {
      "get": {
        "operationId": "getSavingsTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "staffId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Savings Account"]
      }
    },
    "/v1/savingsaccounts/external-id/{externalId}": {
      "delete": {
        "description": "At present we support hard delete of savings application so long as its in 'Submitted and pending approval' state. One the application is moves past this state, it is not possible to do a 'hard' delete of the application or the account. An API endpoint will be added to close/de-activate the savings account.",
        "operationId": "deleteSavingsAccountByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteSavingsAccountsAccountIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a savings application by externalId",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "delete_19"
      },
      "get": {
        "operationId": "retrieveSavingsAccountByExternalId",
        "parameters": [
          { "in": "path", "name": "externalId", "required": true, "schema": { "type": "string" } },
          {
            "in": "query",
            "name": "staffInSelectedOfficeOnly",
            "schema": { "type": "boolean", "default": false }
          },
          {
            "in": "query",
            "name": "chargeStatus",
            "schema": { "type": "string", "default": "all" }
          },
          { "in": "query", "name": "associations", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/SavingsAccountData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a savings account by external ID",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "retrieveOne_26"
      },
      "post": {
        "description": "Approve savings application:\n\nApproves savings application so long as its in 'Submitted and pending approval' state.\n\nUndo approval savings application:\n\nWill move 'approved' savings application back to 'Submitted and pending approval' state.\n\nAssign Savings Officer:\n\nAllows you to assign Savings Officer for existing Savings Account.\n\nUnassign Savings Officer:\n\nAllows you to unassign the Savings Officer.\n\nReject savings application:\n\nRejects savings application so long as its in 'Submitted and pending approval' state.\n\nWithdraw savings application:\n\nUsed when an applicant withdraws from the savings application. It must be in 'Submitted and pending approval' state.\n\nActivate a savings account:\n\nResults in an approved savings application being converted into an 'active' savings account.\n\nClose a savings account:\n\nResults in an Activated savings application being converted into an 'closed' savings account.\n\nclosedOnDate is closure date of savings account\n\nwithdrawBalance is a boolean description, true value of this field performs a withdrawal transaction with account's running balance.\n\nMandatory Fields: dateFormat,locale,closedOnDate\n\nOptional Fields: note, withdrawBalance, paymentTypeId, accountNumber, checkNumber, routingCode, receiptNumber, bankNumber\n\nCalculate Interest on Savings Account:\n\nCalculates interest earned on a savings account based on todays date. It does not attempt to post or credit the interest on the account. That is responsibility of the Post Interest API that will likely be called by overnight process.\n\nPost Interest on Savings Account:\n\nCalculates and Posts interest earned on a savings account based on today's date and whether an interest posting or crediting event is due.\n\nBlock Savings Account:\n\nBlocks Savings account from all types of credit and debit transactions\n\nUnblock Savings Account:\n\nUnblock a blocked account. On unblocking account, user can perform debit and credit transactions\n\nBlock Savings Account Credit transactions:\n\nSavings account will be blocked from all types of credit transactions.\n\nUnblock Savings Account Credit transactions:\n\nIt unblocks the Saving account's credit operations. Now all types of credits can be transacted to Savings account\n\nBlock Savings Account Debit transactions:\n\nAll types of debit operations from Savings account wil be blocked\n\nUnblock Savings Account debit transactions:\n\nIt unblocks the Saving account's debit operations. Now all types of debits can be transacted from Savings account\n\nShowing request/response for 'Unassign Savings Officer'",
        "operationId": "handleCommandsSavingsAccountByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostSavingsAccountsAccountIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostSavingsAccountsAccountIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Approve savings application | Undo approval savings application | Assign Savings Officer | Unassign Savings Officer | Reject savings application | Withdraw savings application | Activate a savings account | Close a savings account | Calculate Interest on Savings Account | Post Interest on Savings Account | Block Savings Account | Unblock Savings Account | Block Savings Account Credit transactions | Unblock Savings Account Credit transactions | Block Savings Account Debit transactions | Unblock Savings Account debit transactions",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "handleCommands_7"
      },
      "put": {
        "description": "Modify a savings application by externalId:\n\nSavings 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. Specific api endpoints will be created to allow change of interest detail such as rate, compounding period, posting period etc\n\nModify savings account withhold tax applicability:\n\nSavings application's withhold tax can be modified when in 'Active' state. Once the application is activated, can modify the account withhold tax to post tax or vice-versaShowing request/response for 'Modify a savings application'",
        "operationId": "updateSavingsAccountByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutSavingsAccountsAccountIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutSavingsAccountsAccountIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modify a savings application | Modify savings account withhold tax applicability by externalId",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "update_21"
      }
    },
    "/v1/savingsaccounts/external-id/{savingsExternalId}/transactions": {
      "post": {
        "operationId": "createSavingsAccountTransactionBySavingsExternalId",
        "parameters": [
          {
            "in": "path",
            "name": "savingsExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostSavingsAccountTransactionsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostSavingsAccountTransactionsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a savings account transaction",
        "tags": ["Savings Account Transactions"]
      }
    },
    "/v1/savingsaccounts/external-id/{savingsExternalId}/transactions/external-id/{transactionExternalId}": {
      "get": {
        "operationId": "retrieveOneSavingsAccountTransactionBySavingsAndTransactionExternalId",
        "parameters": [
          {
            "in": "path",
            "name": "savingsExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/SavingsAccountTransactionData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a savings account transaction by external ID",
        "tags": ["Savings Account Transactions"]
      },
      "post": {
        "description": "Undo/Reverse/Modify/Release Amount transaction API by external ID\n\nExample Requests:\n\n\nsavingsaccounts/external-id/{savingsExternalId}/transactions/external-id/{transactionExternalId}?command=reverse\n\nAccepted command = undo, reverse, modify, releaseAmount",
        "operationId": "adjustSavingsAccountTransactionBySavingsAndTransactionExternalId",
        "parameters": [
          {
            "in": "path",
            "name": "savingsExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSavingsAccountBulkReversalTransactionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Undo/Reverse/Modify/Release Amount transaction API by external ID",
        "tags": ["Savings Account Transactions"]
      }
    },
    "/v1/savingsaccounts/external-id/{savingsExternalId}/transactions/query": {
      "post": {
        "operationId": "advancedQuerySavingsAccountTransactionsBySavingsExternalId",
        "parameters": [
          {
            "description": "savings account external ID",
            "in": "path",
            "name": "savingsExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PagedLocalRequestAdvancedQueryRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "OK"
          }
        },
        "summary": "Advanced search Savings Account Transactions",
        "tags": ["Savings Account Transactions"]
      }
    },
    "/v1/savingsaccounts/external-id/{savingsExternalId}/transactions/search": {
      "get": {
        "operationId": "searchSavingsAccountTransactionsBySavingsExternalId",
        "parameters": [
          {
            "description": "savings account external ID",
            "in": "path",
            "name": "savingsExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "minimum value date (inclusive)",
            "example": "2023-08-08",
            "in": "query",
            "name": "fromDate",
            "schema": { "type": "string" }
          },
          {
            "description": "maximum value date (inclusive)",
            "example": "2023-08-15",
            "in": "query",
            "name": "toDate",
            "schema": { "type": "string" }
          },
          {
            "description": "minimum booking date (inclusive)",
            "example": "2023-08-08",
            "in": "query",
            "name": "fromSubmittedDate",
            "schema": { "type": "string" }
          },
          {
            "description": "maximum booking date (inclusive)",
            "example": "2023-08-15",
            "in": "query",
            "name": "toSubmittedDate",
            "schema": { "type": "string" }
          },
          {
            "description": "minimum transaction amount (inclusive)",
            "example": 1000,
            "in": "query",
            "name": "fromAmount",
            "schema": { "type": "number" }
          },
          {
            "description": "maximum transaction amount (inclusive)",
            "example": 50000000,
            "in": "query",
            "name": "toAmount",
            "schema": { "type": "number" }
          },
          {
            "description": "transaction types",
            "example": "1,2,4,20,21",
            "in": "query",
            "name": "types",
            "schema": { "type": "string" }
          },
          {
            "description": "credit",
            "in": "query",
            "name": "credit",
            "schema": { "type": "boolean" }
          },
          {
            "description": "debit",
            "in": "query",
            "name": "debit",
            "schema": { "type": "boolean" }
          },
          {
            "description": "offset",
            "in": "query",
            "name": "offset",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "limit",
            "in": "query",
            "name": "limit",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "sort properties",
            "example": "createdDate,transactionDate,id",
            "in": "query",
            "name": "orderBy",
            "schema": { "type": "string" }
          },
          {
            "description": "sort direction",
            "in": "query",
            "name": "sortOrder",
            "schema": { "type": "string", "enum": ["ASC", "DESC"] }
          },
          {
            "description": "locale",
            "in": "query",
            "name": "locale",
            "schema": { "type": "string" }
          },
          {
            "description": "date format",
            "example": "yyyy-MM-dd",
            "in": "query",
            "name": "dateFormat",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavingsAccountTransactionsSearchResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Search Savings Account Transactions",
        "tags": ["Savings Account Transactions"]
      }
    },
    "/v1/savingsaccounts/external-id/{savingsExternalId}/transactions/template": {
      "get": {
        "operationId": "retrieveTemplateSavingsAccountTransactionBySavingsExternalId",
        "parameters": [
          {
            "in": "path",
            "name": "savingsExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve a savings account transaction template",
        "tags": ["Savings Account Transactions"]
      }
    },
    "/v1/savingsaccounts/external-id/{savingsExternalId}/transactions/{transactionId}": {
      "get": {
        "operationId": "retrieveOneSavingsAccountTransactionBySavingsExternalId",
        "parameters": [
          {
            "in": "path",
            "name": "savingsExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/SavingsAccountTransactionData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a savings account transaction",
        "tags": ["Savings Account Transactions"]
      },
      "post": {
        "description": "Undo/Reverse/Modify/Release Amount transaction API\n\nExample Requests:\n\n\nsavingsaccounts/external-id/{savingsExternalId}/transactions/{transactionId}?command=reverse\n\nAccepted command = undo, reverse, modify, releaseAmount",
        "operationId": "adjustSavingsAccountTransactionBySavingsExternalId",
        "parameters": [
          {
            "in": "path",
            "name": "savingsExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSavingsAccountBulkReversalTransactionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Undo/Reverse/Modify/Release Amount transaction API",
        "tags": ["Savings Account Transactions"]
      }
    },
    "/v1/savingsaccounts/gsim": {
      "post": {
        "operationId": "submitGSIMApplication",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Savings Account"]
      }
    },
    "/v1/savingsaccounts/gsim/{parentAccountId}": {
      "put": {
        "operationId": "updateGsim",
        "parameters": [
          {
            "in": "path",
            "name": "parentAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Savings Account"]
      }
    },
    "/v1/savingsaccounts/gsimcommands/{parentAccountId}": {
      "post": {
        "operationId": "handleGSIMCommands",
        "parameters": [
          {
            "in": "path",
            "name": "parentAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Savings Account"]
      }
    },
    "/v1/savingsaccounts/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\nsavingsaccounts/template?clientId=1\n\n\nsavingsaccounts/template?clientId=1&productId=1",
        "operationId": "retrieveSavingsAccountTemplate",
        "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": "staffInSelectedOfficeOnly",
            "in": "query",
            "name": "staffInSelectedOfficeOnly",
            "schema": { "type": "boolean", "default": false }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetSavingsAccountsTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Savings Account Template",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "template_14"
      }
    },
    "/v1/savingsaccounts/transactions/downloadtemplate": {
      "get": {
        "operationId": "getSavingsTransactionTemplate",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "tags": ["Savings Account"]
      }
    },
    "/v1/savingsaccounts/transactions/uploadtemplate": {
      "post": {
        "operationId": "postSavingsTransactionTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload savings transaction template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Savings Account"]
      }
    },
    "/v1/savingsaccounts/uploadtemplate": {
      "post": {
        "operationId": "postSavingsTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload savings template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Savings Account"]
      }
    },
    "/v1/savingsaccounts/{accountId}": {
      "delete": {
        "description": "At present we support hard delete of savings application so long as its in 'Submitted and pending approval' state. One the application is moves past this state, it is not possible to do a 'hard' delete of the application or the account. An API endpoint will be added to close/de-activate the savings account.",
        "operationId": "deleteSavingsAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteSavingsAccountsAccountIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a savings application",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "delete_18"
      },
      "get": {
        "operationId": "retrieveSavingsAccount",
        "parameters": [
          {
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "staffInSelectedOfficeOnly",
            "schema": { "type": "boolean", "default": false }
          },
          {
            "in": "query",
            "name": "chargeStatus",
            "schema": { "type": "string", "default": "all" }
          },
          { "in": "query", "name": "associations", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/SavingsAccountData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a savings account",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "retrieveOne_25"
      },
      "post": {
        "description": "Approve savings application:\n\nApproves savings application so long as its in 'Submitted and pending approval' state.\n\nUndo approval savings application:\n\nWill move 'approved' savings application back to 'Submitted and pending approval' state.\n\nAssign Savings Officer:\n\nAllows you to assign Savings Officer for existing Savings Account.\n\nUnassign Savings Officer:\n\nAllows you to unassign the Savings Officer.\n\nReject savings application:\n\nRejects savings application so long as its in 'Submitted and pending approval' state.\n\nWithdraw savings application:\n\nUsed when an applicant withdraws from the savings application. It must be in 'Submitted and pending approval' state.\n\nActivate a savings account:\n\nResults in an approved savings application being converted into an 'active' savings account.\n\nClose a savings account:\n\nResults in an Activated savings application being converted into an 'closed' savings account.\n\nclosedOnDate is closure date of savings account\n\nwithdrawBalance is a boolean description, true value of this field performs a withdrawal transaction with account's running balance.\n\nMandatory Fields: dateFormat,locale,closedOnDate\n\nOptional Fields: note, withdrawBalance, paymentTypeId, accountNumber, checkNumber, routingCode, receiptNumber, bankNumber\n\nCalculate Interest on Savings Account:\n\nCalculates interest earned on a savings account based on todays date. It does not attempt to post or credit the interest on the account. That is responsibility of the Post Interest API that will likely be called by overnight process.\n\nPost Interest on Savings Account:\n\nCalculates and Posts interest earned on a savings account based on today's date and whether an interest posting or crediting event is due.\n\nBlock Savings Account:\n\nBlocks Savings account from all types of credit and debit transactions\n\nUnblock Savings Account:\n\nUnblock a blocked account. On unblocking account, user can perform debit and credit transactions\n\nBlock Savings Account Credit transactions:\n\nSavings account will be blocked from all types of credit transactions.\n\nUnblock Savings Account Credit transactions:\n\nIt unblocks the Saving account's credit operations. Now all types of credits can be transacted to Savings account\n\nBlock Savings Account Debit transactions:\n\nAll types of debit operations from Savings account wil be blocked\n\nUnblock Savings Account debit transactions:\n\nIt unblocks the Saving account's debit operations. Now all types of debits can be transacted from Savings account\n\nShowing request/response for 'Unassign Savings Officer'",
        "operationId": "handleCommandsSavingsAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostSavingsAccountsAccountIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostSavingsAccountsAccountIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Approve savings application | Undo approval savings application | Assign Savings Officer | Unassign Savings Officer | Reject savings application | Withdraw savings application | Activate a savings account | Close a savings account | Calculate Interest on Savings Account | Post Interest on Savings Account | Block Savings Account | Unblock Savings Account | Block Savings Account Credit transactions | Unblock Savings Account Credit transactions | Block Savings Account Debit transactions | Unblock Savings Account debit transactions",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "handleCommands_6"
      },
      "put": {
        "description": "Modify a savings application:\n\nSavings 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. Specific api endpoints will be created to allow change of interest detail such as rate, compounding period, posting period etc\n\nModify savings account withhold tax applicability:\n\nSavings application's withhold tax can be modified when in 'Active' state. Once the application is activated, can modify the account withhold tax to post tax or vice-versaShowing request/response for 'Modify a savings application'",
        "operationId": "updateSavingsAccount",
        "parameters": [
          {
            "description": "accountId",
            "in": "path",
            "name": "accountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutSavingsAccountsAccountIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutSavingsAccountsAccountIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modify a savings application | Modify savings account withhold tax applicability",
        "tags": ["Savings Account"],
        "x-alternative-operation-id": "update_20"
      }
    },
    "/v1/savingsaccounts/{savingsAccountId}/charges": {
      "get": {
        "description": "Lists Savings Charges\n\nExample Requests:\n\nsavingsaccounts/1/charges\n\nsavingsaccounts/1/charges?chargeStatus=all\n\nsavingsaccounts/1/charges?chargeStatus=inactive\n\nsavingsaccounts/1/charges?chargeStatus=active\n\nsavingsaccounts/1/charges?fields=name,amountOrPercentage",
        "operationId": "retrieveAllSavingsAccountCharges",
        "parameters": [
          {
            "description": "savingsAccountId",
            "in": "path",
            "name": "savingsAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "chargeStatus",
            "in": "query",
            "name": "chargeStatus",
            "schema": { "type": "string", "default": "all" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetSavingsAccountsSavingsAccountIdChargesResponse"
                  }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Savings Charges",
        "tags": ["Savings Charges"]
      },
      "post": {
        "description": "Creates a Savings account Charge\n\nMandatory Fields for Savings account Charges: chargeId, amount\n\nchargeId, amount, dueDate, dateFormat, locale\n\nchargeId, amount, feeOnMonthDay, monthDayFormat, locale",
        "operationId": "createSavingsAccountCharge",
        "parameters": [
          {
            "description": "savingsAccountId",
            "in": "path",
            "name": "savingsAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSavingsAccountsSavingsAccountIdChargesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostSavingsAccountsSavingsAccountIdChargesResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Savings account Charge",
        "tags": ["Savings Charges"],
        "x-alternative-operation-id": "addSavingsAccountCharge"
      }
    },
    "/v1/savingsaccounts/{savingsAccountId}/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\nsavingsaccounts/1/charges/template",
        "operationId": "retrieveTemplateSavingsAccountCharge",
        "parameters": [
          {
            "description": "savingsAccountId",
            "in": "path",
            "name": "savingsAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSavingsAccountsSavingsAccountIdChargesTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Savings Charges Template",
        "tags": ["Savings Charges"],
        "x-alternative-operation-id": "retrieveTemplate_18"
      }
    },
    "/v1/savingsaccounts/{savingsAccountId}/charges/{savingsAccountChargeId}": {
      "delete": {
        "description": "Note: Currently, A Savings account Charge may only be removed from Savings that are not yet approved.",
        "operationId": "deleteSavingsAccountCharge",
        "parameters": [
          {
            "description": "savingsAccountId",
            "in": "path",
            "name": "savingsAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "savingsAccountChargeId",
            "in": "path",
            "name": "savingsAccountChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Savings account Charge",
        "tags": ["Savings Charges"]
      },
      "get": {
        "description": "Retrieves a Savings account Charge\n\nExample Requests:\n\n/savingsaccounts/1/charges/5\n\n\n/savingsaccounts/1/charges/5?fields=name,amountOrPercentage",
        "operationId": "retrieveOneSavingsAccountCharge",
        "parameters": [
          {
            "description": "savingsAccountId",
            "in": "path",
            "name": "savingsAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "savingsAccountChargeId",
            "in": "path",
            "name": "savingsAccountChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Savings account Charge",
        "tags": ["Savings Charges"],
        "x-alternative-operation-id": "retrieveSavingsAccountCharge"
      },
      "post": {
        "description": "Pay a Savings account Charge:\n\nAn active charge will be paid when savings account is active and having sufficient balance.\n\nWaive off a Savings account Charge:\n\nOutstanding charge amount will be waived off.\n\nInactivate a Savings account Charge:\n\nA charge will be allowed to inactivate when savings account is active and not having any dues as of today. If charge is overpaid, corresponding charge payment transactions will be reversed.\n\nShowing request/response for 'Pay a Savings account Charge'",
        "operationId": "handleCommandsSavingsAccountCharge",
        "parameters": [
          {
            "description": "savingsAccountId",
            "in": "path",
            "name": "savingsAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "savingsAccountChargeId",
            "in": "path",
            "name": "savingsAccountChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Pay a Savings account Charge | Waive off a Savings account Charge | Inactivate a Savings account Charge",
        "tags": ["Savings Charges"],
        "x-alternative-operation-id": "payOrWaiveSavingsAccountCharge"
      },
      "put": {
        "description": "Currently Savings account Charges may be updated only if the Savings account is not yet approved.",
        "operationId": "updateSavingsAccountCharge",
        "parameters": [
          {
            "description": "savingsAccountId",
            "in": "path",
            "name": "savingsAccountId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "savingsAccountChargeId",
            "in": "path",
            "name": "savingsAccountChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Savings account Charge",
        "tags": ["Savings Charges"]
      }
    },
    "/v1/savingsaccounts/{savingsId}/onholdtransactions": {
      "get": {
        "operationId": "retrieveAllDepositAccountOnHoldFundTransactions",
        "parameters": [
          {
            "in": "path",
            "name": "savingsId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "guarantorFundingId",
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "orderBy", "schema": { "type": "string" } },
          { "in": "query", "name": "sortOrder", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve deposit account on hold fund transactions",
        "tags": ["Deposit Account On Hold Fund Transactions"],
        "x-alternative-operation-id": "retrieveAll_28"
      }
    },
    "/v1/savingsaccounts/{savingsId}/transactions": {
      "post": {
        "operationId": "createSavingsAccountTransaction",
        "parameters": [
          {
            "in": "path",
            "name": "savingsId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostSavingsAccountTransactionsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostSavingsAccountTransactionsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a savings account transaction",
        "tags": ["Savings Account Transactions"],
        "x-alternative-operation-id": "transaction_2"
      }
    },
    "/v1/savingsaccounts/{savingsId}/transactions/external-id/{transactionExternalId}": {
      "get": {
        "operationId": "retrieveOneSavingsAccountTransactionByExternalId",
        "parameters": [
          {
            "in": "path",
            "name": "savingsId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/SavingsAccountTransactionData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a savings account transaction by external ID",
        "tags": ["Savings Account Transactions"]
      },
      "post": {
        "description": "Undo/Reverse/Modify/Release Amount transaction API by external ID\n\nExample Requests:\n\n\nsavingsaccounts/{savingsId}/transactions/external-id/{transactionExternalId}?command=reverse\n\nAccepted command = undo, reverse, modify, releaseAmount",
        "operationId": "adjustSavingsAccountTransactionByExternalId",
        "parameters": [
          {
            "in": "path",
            "name": "savingsId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSavingsAccountBulkReversalTransactionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Undo/Reverse/Modify/Release Amount transaction API by external ID",
        "tags": ["Savings Account Transactions"]
      }
    },
    "/v1/savingsaccounts/{savingsId}/transactions/query": {
      "post": {
        "operationId": "advancedQuerySavingsAccountTransactions",
        "parameters": [
          {
            "description": "savingsId",
            "in": "path",
            "name": "savingsId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PagedLocalRequestAdvancedQueryRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "OK"
          }
        },
        "summary": "Advanced search Savings Account Transactions",
        "tags": ["Savings Account Transactions"],
        "x-alternative-operation-id": "advancedQuery_1"
      }
    },
    "/v1/savingsaccounts/{savingsId}/transactions/search": {
      "get": {
        "operationId": "searchSavingsAccountTransactions",
        "parameters": [
          {
            "description": "savings account id",
            "in": "path",
            "name": "savingsId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "minimum value date (inclusive)",
            "example": "2023-08-08",
            "in": "query",
            "name": "fromDate",
            "schema": { "type": "string" }
          },
          {
            "description": "maximum value date (inclusive)",
            "example": "2023-08-15",
            "in": "query",
            "name": "toDate",
            "schema": { "type": "string" }
          },
          {
            "description": "minimum booking date (inclusive)",
            "example": "2023-08-08",
            "in": "query",
            "name": "fromSubmittedDate",
            "schema": { "type": "string" }
          },
          {
            "description": "maximum booking date (inclusive)",
            "example": "2023-08-15",
            "in": "query",
            "name": "toSubmittedDate",
            "schema": { "type": "string" }
          },
          {
            "description": "minimum transaction amount (inclusive)",
            "example": 1000,
            "in": "query",
            "name": "fromAmount",
            "schema": { "type": "number" }
          },
          {
            "description": "maximum transaction amount (inclusive)",
            "example": 50000000,
            "in": "query",
            "name": "toAmount",
            "schema": { "type": "number" }
          },
          {
            "description": "transaction types",
            "example": "1,2,4,20,21",
            "in": "query",
            "name": "types",
            "schema": { "type": "string" }
          },
          {
            "description": "credit",
            "in": "query",
            "name": "credit",
            "schema": { "type": "boolean" }
          },
          {
            "description": "debit",
            "in": "query",
            "name": "debit",
            "schema": { "type": "boolean" }
          },
          {
            "description": "offset",
            "in": "query",
            "name": "offset",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "limit",
            "in": "query",
            "name": "limit",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "sort properties",
            "example": "createdDate,transactionDate,id",
            "in": "query",
            "name": "orderBy",
            "schema": { "type": "string" }
          },
          {
            "description": "sort direction",
            "in": "query",
            "name": "sortOrder",
            "schema": { "type": "string", "enum": ["ASC", "DESC"] }
          },
          {
            "description": "locale",
            "in": "query",
            "name": "locale",
            "schema": { "type": "string" }
          },
          {
            "description": "date format",
            "example": "yyyy-MM-dd",
            "in": "query",
            "name": "dateFormat",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavingsAccountTransactionsSearchResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Search Savings Account Transactions",
        "tags": ["Savings Account Transactions"],
        "x-alternative-operation-id": "searchTransactions"
      }
    },
    "/v1/savingsaccounts/{savingsId}/transactions/template": {
      "get": {
        "operationId": "retrieveTemplateSavingsAccountTransaction",
        "parameters": [
          {
            "in": "path",
            "name": "savingsId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve a savings account transaction template",
        "tags": ["Savings Account Transactions"],
        "x-alternative-operation-id": "retrieveTemplate_19"
      }
    },
    "/v1/savingsaccounts/{savingsId}/transactions/{transactionId}": {
      "get": {
        "operationId": "retrieveOneSavingsAccountTransaction",
        "parameters": [
          {
            "in": "path",
            "name": "savingsId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/SavingsAccountTransactionData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a savings account transaction",
        "tags": ["Savings Account Transactions"],
        "x-alternative-operation-id": "retrieveOne_24"
      },
      "post": {
        "description": "Undo/Reverse/Modify/Release Amount transaction API\n\nExample Requests:\n\n\nsavingsaccounts/{savingsId}/transactions/{transactionId}?command=reverse\n\nAccepted command = undo, reverse, modify, releaseAmount",
        "operationId": "adjustSavingsAccountTransaction",
        "parameters": [
          {
            "in": "path",
            "name": "savingsId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSavingsAccountBulkReversalTransactionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Undo/Reverse/Modify/Release Amount transaction API",
        "tags": ["Savings Account Transactions"],
        "x-alternative-operation-id": "adjustTransaction_1"
      }
    },
    "/v1/savingsproducts": {
      "get": {
        "description": "Lists Savings Products\n\nExample Requests:\n\nsavingsproducts\n\nsavingsproducts?fields=name",
        "operationId": "retrieveAllSavingsProducts",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetSavingsProductsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Savings Products",
        "tags": ["Savings Product"],
        "x-alternative-operation-id": "retrieveAll_34"
      },
      "post": {
        "description": "Creates a Savings Product\n\nMandatory Fields: name, shortName, description, currencyCode, digitsAfterDecimal,inMultiplesOf, nominalAnnualInterestRate, interestCompoundingPeriodType, interestCalculationType, interestCalculationDaysInYearType,accountingRule\n\nMandatory Fields for Cash based accounting (accountingRule = 2): savingsReferenceAccountId, savingsControlAccountId, interestOnSavingsAccountId, incomeFromFeeAccountId, transfersInSuspenseAccountId, incomeFromPenaltyAccountId\n\nOptional Fields: minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, paymentChannelToFundSourceMappings, feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, charges, allowOverdraft, overdraftLimit, minBalanceForInterestCalculation,withHoldTax,taxGroupId,accountMapping, lienAllowed, maxAllowedLienLimit",
        "operationId": "createSavingsProduct",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostSavingsProductsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostSavingsProductsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Savings Product",
        "tags": ["Savings Product"],
        "x-alternative-operation-id": "create_13"
      }
    },
    "/v1/savingsproducts/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:\nAccount Mapping:\n\nsavingsproducts/template",
        "operationId": "retrieveTemplateSavingsProduct",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetSavingsProductsTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Savings Product Template",
        "tags": ["Savings Product"],
        "x-alternative-operation-id": "retrieveTemplate_20"
      }
    },
    "/v1/savingsproducts/{productId}": {
      "delete": {
        "description": "Deletes a Savings Product",
        "operationId": "deleteSavingsProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteSavingsProductsProductIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Savings Product",
        "tags": ["Savings Product"],
        "x-alternative-operation-id": "delete_20"
      },
      "get": {
        "description": "Retrieves a Savings Product\n\nExample Requests:\n\nsavingsproducts/1\n\nsavingsproducts/1?template=true\n\nsavingsproducts/1?fields=name,description",
        "operationId": "retrieveOneSavingsProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetSavingsProductsProductIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Savings Product",
        "tags": ["Savings Product"],
        "x-alternative-operation-id": "retrieveOne_27"
      },
      "put": {
        "description": "Updates a Savings Product",
        "operationId": "updateSavingsProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutSavingsProductsProductIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutSavingsProductsProductIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Savings Product",
        "tags": ["Savings Product"],
        "x-alternative-operation-id": "update_22"
      }
    },
    "/v1/scheduler": {
      "get": {
        "description": "Returns the scheduler status.\n\nExample Requests:\n\nscheduler",
        "operationId": "retrieveSchedulerStatus",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetSchedulerResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Scheduler Status",
        "tags": ["Scheduler"],
        "x-alternative-operation-id": "retrieveStatus"
      },
      "post": {
        "description": "Activates the scheduler job service. | Suspends the scheduler job service.",
        "operationId": "handleCommandsScheduler",
        "parameters": [
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "description": "POST :  scheduler?command=start\n\n\nPOST : scheduler?command=stop"
          }
        },
        "summary": "Activate Scheduler Jobs | Suspend Scheduler Jobs",
        "tags": ["Scheduler"],
        "x-alternative-operation-id": "changeSchedulerStatus"
      }
    },
    "/v1/search": {
      "get": {
        "description": "Example Requests:\n\nsearch?query=000000001\n\n\nsearch?query=Petra&resource=clients,groups\n\n\nsearch?query=Petra&resource=clients,groups&exactMatch=true\n\n\nsearch?query=7253&resource=loanTransactions,savingsTransactions",
        "operationId": "searchData",
        "parameters": [
          {
            "description": "query",
            "in": "query",
            "name": "query",
            "schema": { "type": "string" }
          },
          {
            "description": "resource",
            "in": "query",
            "name": "resource",
            "schema": { "type": "string" }
          },
          {
            "description": "exactMatch",
            "in": "query",
            "name": "exactMatch",
            "schema": { "type": "boolean", "default": false }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetSearchResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Search Resources",
        "tags": ["Search API"]
      }
    },
    "/v1/search/advance": {
      "post": {
        "description": "AdHocQuery search has more search options, it is a POST request, it uses request body to send search parameters\n\n\nMandatory fields: entities\n\nOptional fields: loanStatus, loanProducts, offices, loanDateOption, loanFromDate, loanToDate,\nincludeOutStandingAmountPercentage, outStandingAmountPercentageCondition,\nminOutStandingAmountPercentage and maxOutStandingAmountPercentage OR outStandingAmountPercentage,\nincludeOutstandingAmount, outstandingAmountCondition,\nminOutstandingAmount and maxOutstandingAmount OR outstandingAmount",
        "operationId": "advancedSearch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostAdhocQuerySearchRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/AdHocSearchQueryData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Adhoc query search",
        "tags": ["Search API"]
      }
    },
    "/v1/search/template": {
      "get": {
        "description": "Mandatory Fields\n\nsearch?query=000000001\n",
        "operationId": "retrieveAdHocSearchQueryTemplate",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/AdHocSearchQueryData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrive Adhoc Search query template",
        "tags": ["Search API"]
      }
    },
    "/v1/shareproduct/{productId}/dividend": {
      "get": {
        "operationId": "retrieveAllShareDividends",
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "orderBy", "schema": { "type": "string" } },
          { "in": "query", "name": "sortOrder", "schema": { "type": "string" } },
          { "in": "query", "name": "status", "schema": { "type": "integer", "format": "int32" } }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "List all share dividends",
        "tags": ["Self Dividend"],
        "x-alternative-operation-id": "retrieveAll_39"
      },
      "post": {
        "operationId": "createShareDividend",
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Create a share dividend",
        "tags": ["Self Dividend"],
        "x-alternative-operation-id": "createDividendDetail"
      }
    },
    "/v1/shareproduct/{productId}/dividend/{dividendId}": {
      "delete": {
        "operationId": "deleteShareDividend",
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "dividendId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Delete a share dividend",
        "tags": ["Self Dividend"],
        "x-alternative-operation-id": "deleteDividendDetail"
      },
      "get": {
        "operationId": "retrieveOneShareDividend",
        "parameters": [
          {
            "in": "path",
            "name": "dividendId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "orderBy", "schema": { "type": "string" } },
          { "in": "query", "name": "sortOrder", "schema": { "type": "string" } },
          { "in": "query", "name": "accountNo", "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve a share dividend",
        "tags": ["Self Dividend"],
        "x-alternative-operation-id": "retrieveDividendDetails"
      },
      "put": {
        "operationId": "updateShareDividend",
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "dividendId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Update a share dividend",
        "tags": ["Self Dividend"],
        "x-alternative-operation-id": "updateDividendDetail"
      }
    },
    "/v1/sms": {
      "get": {
        "operationId": "retrieveAllSms",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SmsData" } }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List all SMS messages",
        "tags": ["SMS"],
        "x-alternative-operation-id": "retrieveAll_10"
      },
      "post": {
        "operationId": "createSms",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/SmsCreationRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create a SMS message",
        "tags": ["SMS"],
        "x-alternative-operation-id": "create_2"
      }
    },
    "/v1/sms/{campaignId}/messageByStatus": {
      "get": {
        "operationId": "retrieveAllSmsByStatus",
        "parameters": [
          {
            "in": "path",
            "name": "campaignId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "status", "schema": { "type": "integer", "format": "int64" } },
          {
            "in": "query",
            "name": "fromDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "in": "query",
            "name": "toDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          { "in": "query", "name": "locale", "schema": { "type": "string" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } },
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "orderBy", "schema": { "type": "string" } },
          { "in": "query", "name": "sortOrder", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/PageSmsData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve SMS messages by status",
        "tags": ["SMS"]
      }
    },
    "/v1/sms/{resourceId}": {
      "delete": {
        "operationId": "deleteSms",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete a SMS message",
        "tags": ["SMS"],
        "x-alternative-operation-id": "delete_5"
      },
      "get": {
        "operationId": "retrieveOneSms",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/SmsData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a SMS message",
        "tags": ["SMS"],
        "x-alternative-operation-id": "retrieveOne_6"
      },
      "put": {
        "operationId": "updateSms",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/SmsUpdateRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update a SMS message",
        "tags": ["SMS"],
        "x-alternative-operation-id": "update_3"
      }
    },
    "/v1/smscampaigns": {
      "get": {
        "description": "Example Requests:\n\nsmscampaigns",
        "operationId": "retrieveAllSmsCampaigns",
        "parameters": [
          { "in": "query", "name": "offset", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } },
          { "in": "query", "name": "orderBy", "schema": { "type": "string" } },
          { "in": "query", "name": "sortOrder", "schema": { "type": "string" } }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/SmsCampaignData" } }
            },
            "description": "OK"
          }
        },
        "summary": "List SMS Campaigns",
        "x-alternative-operation-id": "retrieveAllEmails_1"
      },
      "post": {
        "description": "Mandatory Fields\ncampaignName, campaignType, triggerType, providerId, runReportId, message\n\nMandatory Fields for Cash based on selected report id\nparamValue in json format",
        "operationId": "createSmsCampaign",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/CommandWrapper" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a SMS Campaign",
        "x-alternative-operation-id": "createCampaign_1"
      }
    },
    "/v1/smscampaigns/preview": {
      "post": {
        "operationId": "previewSmsCampaign",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/SmsCampaignPreviewDto" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CampaignPreviewData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Preview SMS Campaign message",
        "x-alternative-operation-id": "preview_1"
      }
    },
    "/v1/smscampaigns/template": {
      "get": {
        "description": "Example Requests:\n\nsmscampaigns/1\n\n\nsmscampaigns/1?template=true\n\n\nsmscampaigns/template",
        "operationId": "retrieveTemplateSmsCampaign",
        "responses": {
          "200": {
            "content": { "*/*": { "schema": { "$ref": "#/components/schemas/SmsCampaignData" } } },
            "description": "OK"
          }
        },
        "summary": "Retrieve a SMS Campaign",
        "x-alternative-operation-id": "template_2"
      }
    },
    "/v1/smscampaigns/{campaignId}": {
      "delete": {
        "description": "Note: Only closed SMS Campaigns can be deleted",
        "operationId": "deleteSmsCampaign",
        "parameters": [
          {
            "in": "path",
            "name": "campaignId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": { "schema": { "$ref": "#/components/schemas/CommandProcessingResult" } }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a SMS Campaign",
        "x-alternative-operation-id": "delete_3"
      },
      "post": {
        "description": "Activates | Deactivates | Reactivates",
        "operationId": "handleCommandsSmsCampaign",
        "parameters": [
          {
            "in": "path",
            "name": "campaignId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "SMS Campaign",
        "x-alternative-operation-id": "handleCommands"
      },
      "put": {
        "operationId": "updateSmsCampaign",
        "parameters": [
          {
            "in": "path",
            "name": "campaignId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/CommandWrapper" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Campaign",
        "x-alternative-operation-id": "updateCampaign_1"
      }
    },
    "/v1/smscampaigns/{resourceId}": {
      "get": {
        "description": "Example Requests:\n\nsmscampaigns/1\n",
        "operationId": "retrieveOneSmsCampaign",
        "parameters": [
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/SmsCampaignData" } }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a SMS Campaign",
        "x-alternative-operation-id": "retrieveCampaign"
      }
    },
    "/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"
      },
      "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"
      }
    },
    "/v1/staff/downloadtemplate": {
      "get": {
        "operationId": "getBulkTemplateStaff",
        "parameters": [
          {
            "description": "officeId",
            "in": "query",
            "name": "officeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "dateFormat",
            "in": "query",
            "name": "dateFormat",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "summary": "Download bulk import template",
        "tags": ["Staff"],
        "x-alternative-operation-id": "getTemplate_1"
      }
    },
    "/v1/staff/uploadtemplate": {
      "post": {
        "operationId": "postTemplate",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": { "$ref": "#/components/schemas/StaffUploadRequest" }
            }
          },
          "description": "Upload staff template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "integer", "format": "int64" } } },
            "description": "default response"
          }
        },
        "tags": ["Staff"]
      }
    },
    "/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"
      },
      "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"
      }
    },
    "/v1/standinginstructionrunhistory": {
      "get": {
        "description": "The list capability of history can support pagination and sorting \n\nExample Requests :\n\nstandinginstructionrunhistory\n\nstandinginstructionrunhistory?orderBy=name&sortOrder=DESC\n\nstandinginstructionrunhistory?offset=10&limit=50",
        "operationId": "retrieveAllStandingInstructionHistory",
        "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": "transferType",
            "in": "query",
            "name": "transferType",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "clientName",
            "in": "query",
            "name": "clientName",
            "schema": { "type": "string" }
          },
          {
            "description": "clientId",
            "in": "query",
            "name": "clientId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "fromAccountId",
            "in": "query",
            "name": "fromAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "fromAccountType",
            "in": "query",
            "name": "fromAccountType",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "locale",
            "in": "query",
            "name": "locale",
            "schema": { "type": "string" }
          },
          {
            "description": "dateFormat",
            "in": "query",
            "name": "dateFormat",
            "schema": { "type": "string" }
          },
          {
            "description": "fromDate",
            "in": "query",
            "name": "fromDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          },
          {
            "description": "toDate",
            "in": "query",
            "name": "toDate",
            "schema": { "$ref": "#/components/schemas/DateParam" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStandingInstructionRunHistoryResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Standing Instructions Logged History",
        "tags": ["Standing Instructions History"],
        "x-alternative-operation-id": "retrieveAll_20"
      }
    },
    "/v1/standinginstructions": {
      "get": {
        "description": "Example Requests:\n\nstandinginstructions",
        "operationId": "retrieveAllStandingInstructions",
        "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": "transferType",
            "in": "query",
            "name": "transferType",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "description": "clientName",
            "in": "query",
            "name": "clientName",
            "schema": { "type": "string" }
          },
          {
            "description": "clientId",
            "in": "query",
            "name": "clientId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "fromAccountId",
            "in": "query",
            "name": "fromAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "fromAccountType",
            "in": "query",
            "name": "fromAccountType",
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetStandingInstructionsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Standing Instructions",
        "tags": ["Standing Instructions"],
        "x-alternative-operation-id": "retrieveAll_19"
      },
      "post": {
        "description": "Ability to create new instruction for transfer of monetary funds from one account to another",
        "operationId": "createStandingInstruction",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/StandingInstructionCreationRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostStandingInstructionsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create new Standing Instruction",
        "tags": ["Standing Instructions"],
        "x-alternative-operation-id": "create_5"
      }
    },
    "/v1/standinginstructions/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\nExample Requests:\n\nstandinginstructions/template?fromAccountType=2&fromOfficeId=1\n\nstandinginstructions/template?fromAccountType=2&fromOfficeId=1&fromClientId=1&transferType=1\n\nstandinginstructions/template?fromClientId=1&fromAccountType=2&fromAccountId=1&transferType=1",
        "operationId": "retrieveTemplateStandingInstruction",
        "parameters": [
          {
            "in": "query",
            "name": "fromOfficeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "fromClientId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "fromAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "fromAccountType",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "in": "query",
            "name": "toOfficeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "toClientId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "toAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "toAccountType",
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "in": "query",
            "name": "transferType",
            "schema": { "type": "integer", "format": "int32" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetStandingInstructionsTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Standing Instruction Template",
        "tags": ["Standing Instructions"],
        "x-alternative-operation-id": "template_6"
      }
    },
    "/v1/standinginstructions/{standingInstructionId}": {
      "get": {
        "description": "Example Requests :\n\nstandinginstructions/1",
        "operationId": "retrieveOneStandingInstruction",
        "parameters": [
          {
            "description": "standingInstructionId",
            "in": "path",
            "name": "standingInstructionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStandingInstructionsStandingInstructionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Standing Instruction",
        "tags": ["Standing Instructions"],
        "x-alternative-operation-id": "retrieveOne_10"
      },
      "put": {
        "description": "Ability to modify existing instruction for transfer of monetary funds from one account to another.\n\nPUT https://DomainName/api/v1/standinginstructions/1?command=update\n\n\nAbility to modify existing instruction for transfer of monetary funds from one account to another.\n\nPUT https://DomainName/api/v1/standinginstructions/1?command=delete",
        "operationId": "updateStandingInstruction",
        "parameters": [
          {
            "description": "standingInstructionId",
            "in": "path",
            "name": "standingInstructionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/StandingInstructionUpdatesRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutStandingInstructionsStandingInstructionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Standing Instruction | Delete Standing Instruction",
        "tags": ["Standing Instructions"],
        "x-alternative-operation-id": "update_9"
      }
    },
    "/v1/survey": {
      "get": {
        "description": "Retrieve surveys. This allows to retrieve the list of survey tables registered .",
        "operationId": "retrieveAllSurveys",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetSurveyResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve surveys",
        "tags": ["Survey"],
        "x-alternative-operation-id": "retrieveSurveys"
      }
    },
    "/v1/survey/register/{surveyName}/{apptable}": {
      "put": {
        "operationId": "register",
        "parameters": [
          { "in": "path", "name": "surveyName", "required": true, "schema": { "type": "string" } },
          { "in": "path", "name": "apptable", "required": true, "schema": { "type": "string" } }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Survey"]
      }
    },
    "/v1/survey/{surveyName}": {
      "get": {
        "description": "Lists a registered survey table details and the KiKé Group Core application table they are registered to.",
        "operationId": "retrieveOneSurvey",
        "parameters": [
          {
            "description": "surveyName",
            "in": "path",
            "name": "surveyName",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/GetSurveyResponse" } }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve survey",
        "tags": ["Survey"],
        "x-alternative-operation-id": "retrieveSurvey"
      }
    },
    "/v1/survey/{surveyName}/{apptableId}": {
      "post": {
        "description": "Insert and entry in a survey table (full fill the survey).",
        "operationId": "createSurveyEntry",
        "parameters": [
          {
            "description": "surveyName",
            "in": "path",
            "name": "surveyName",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "apptableId",
            "in": "path",
            "name": "apptableId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostSurveySurveyNameApptableIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostSurveySurveyNameApptableIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create an entry in the survey table",
        "tags": ["Survey"],
        "x-alternative-operation-id": "createDatatableEntry_1"
      }
    },
    "/v1/survey/{surveyName}/{clientId}": {
      "get": {
        "operationId": "getClientSurveyOverview",
        "parameters": [
          { "in": "path", "name": "surveyName", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Survey"]
      }
    },
    "/v1/survey/{surveyName}/{clientId}/{entryId}": {
      "get": {
        "operationId": "getSurveyEntry",
        "parameters": [
          { "in": "path", "name": "surveyName", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "entryId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Survey"]
      }
    },
    "/v1/survey/{surveyName}/{clientId}/{fulfilledId}": {
      "delete": {
        "operationId": "deleteDatatableEntries_1",
        "parameters": [
          { "in": "path", "name": "surveyName", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "fulfilledId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Survey"]
      }
    },
    "/v1/surveys": {
      "get": {
        "operationId": "fetchAllSurveys",
        "parameters": [{ "in": "query", "name": "isActive", "schema": { "type": "boolean" } }],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/SurveyData" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List all Surveys",
        "tags": ["Spm-Surveys"],
        "x-alternative-operation-id": "fetchAllSurveys_1"
      },
      "post": {
        "description": "Adds a new survey to collect client related data.\n\nMandatory Fields\n\ncountryCode, key, name, questions, responses, sequenceNo, text, description",
        "operationId": "createSurvey",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/SurveyData" } }
          },
          "description": "Create survey"
        },
        "responses": { "200": { "description": "OK" } },
        "summary": "Create a Survey",
        "tags": ["Spm-Surveys"]
      }
    },
    "/v1/surveys/scorecards/clients/{clientId}": {
      "get": {
        "operationId": "findByClient",
        "parameters": [
          {
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/ScorecardData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Score Card"],
        "x-alternative-operation-id": "findByClient_1"
      }
    },
    "/v1/surveys/scorecards/{surveyId}": {
      "get": {
        "description": "List all Scorecard entries for a survey.",
        "operationId": "findBySurvey",
        "parameters": [
          {
            "description": "Enter surveyId",
            "in": "path",
            "name": "surveyId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Scorecard" } }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List all Scorecard entries",
        "tags": ["Score Card"]
      },
      "post": {
        "description": "Add a new entry to a survey.\n\nMandatory Fields\nclientId, createdOn, questionId, responseId, staffId",
        "operationId": "createScorecard",
        "parameters": [
          {
            "description": "Enter surveyId",
            "in": "path",
            "name": "surveyId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/ScorecardData" } }
          },
          "description": "scorecardData"
        },
        "responses": { "200": { "description": "OK" } },
        "summary": "Create a Scorecard entry",
        "tags": ["Score Card"],
        "x-alternative-operation-id": "createScorecard_1"
      }
    },
    "/v1/surveys/scorecards/{surveyId}/clients/{clientId}": {
      "get": {
        "operationId": "findBySurveyAndClient",
        "parameters": [
          {
            "description": "Enter surveyId",
            "in": "path",
            "name": "surveyId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "Enter clientId",
            "in": "path",
            "name": "clientId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/ScorecardData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "tags": ["Score Card"]
      }
    },
    "/v1/surveys/{id}": {
      "get": {
        "operationId": "findSurvey",
        "parameters": [
          {
            "description": "Enter id",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/SurveyData" } }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Survey",
        "tags": ["Spm-Surveys"]
      },
      "post": {
        "operationId": "activateOrDeactivateSurvey",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "responses": { "200": { "description": "OK" } },
        "summary": "Deactivate Survey",
        "tags": ["Spm-Surveys"]
      },
      "put": {
        "operationId": "editSurvey",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/SurveyData" } }
          }
        },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Spm-Surveys"]
      }
    },
    "/v1/surveys/{surveyId}/lookuptables": {
      "get": {
        "description": "List all Lookup Table entries for a survey.",
        "operationId": "fetchLookupTables",
        "parameters": [
          {
            "description": "Enter surveyId",
            "in": "path",
            "name": "surveyId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/LookupTableData" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List all Lookup Table entries",
        "tags": ["SPM API - LookUp Table"]
      },
      "post": {
        "description": "Add a new entry to a survey.\n\nMandatory Fields\nkey, score, validFrom, validTo",
        "operationId": "createLookupTable",
        "parameters": [
          {
            "description": "Enter surveyId",
            "in": "path",
            "name": "surveyId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/LookupTableData" } }
          }
        },
        "responses": { "200": { "description": "OK" } },
        "summary": "Create a Lookup Table entry",
        "tags": ["SPM API - LookUp Table"]
      }
    },
    "/v1/surveys/{surveyId}/lookuptables/{key}": {
      "get": {
        "description": "Retrieve a Lookup Table entry for a survey.",
        "operationId": "findLookupTable",
        "parameters": [
          {
            "description": "Enter surveyId",
            "in": "path",
            "name": "surveyId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "Enter key",
            "in": "path",
            "name": "key",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/LookupTableData" } }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Lookup Table entry",
        "tags": ["SPM API - LookUp Table"]
      }
    },
    "/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 Components"]
      },
      "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 Components"]
      }
    },
    "/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 Components"],
        "x-alternative-operation-id": "retrieveTemplate_21"
      }
    },
    "/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 Components"],
        "x-alternative-operation-id": "retrieveTaxComponent"
      },
      "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 Components"],
        "x-alternative-operation-id": "updateTaxCompoent"
      }
    },
    "/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 Group"]
      },
      "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 Group"]
      }
    },
    "/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 Group"],
        "x-alternative-operation-id": "retrieveTemplate_22"
      }
    },
    "/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 Group"],
        "x-alternative-operation-id": "retrieveTaxGroup"
      },
      "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 Group"]
      }
    },
    "/v1/tellers": {
      "get": {
        "description": "Retrieves list tellers",
        "operationId": "retrieveAllTellers",
        "parameters": [
          {
            "description": "officeId",
            "in": "query",
            "name": "officeId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetTellersResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List all tellers",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "getTellerData"
      },
      "post": {
        "description": "Mandatory Fields\nTeller name, OfficeId, Description, Start Date, Status\nOptional Fields\nEnd Date",
        "operationId": "createTeller",
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/PostTellersRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostTellersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create teller",
        "tags": ["Teller Cash Management"]
      }
    },
    "/v1/tellers/{tellerId}": {
      "delete": {
        "operationId": "deleteTeller",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete teller",
        "tags": ["Teller Cash Management"]
      },
      "get": {
        "operationId": "retrieveOneTeller",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetTellersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve tellers",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "findTeller"
      },
      "put": {
        "operationId": "updateTeller",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/PutTellersRequest" } }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutTellersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update teller",
        "tags": ["Teller Cash Management"]
      }
    },
    "/v1/tellers/{tellerId}/cashiers": {
      "get": {
        "operationId": "retrieveAllCashiersForTeller",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "fromdate",
            "in": "query",
            "name": "fromdate",
            "schema": { "type": "string" }
          },
          {
            "description": "todate",
            "in": "query",
            "name": "todate",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetTellersTellerIdCashiersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Cashiers",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "getCashierData_1"
      },
      "post": {
        "description": "Mandatory Fields: \nCashier/staff, Fromm Date, To Date, Full Day or From time and To time\n\n\n\nOptional Fields: \nDescription/Notes",
        "operationId": "createCashierForTeller",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostTellersTellerIdCashiersRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostTellersTellerIdCashiersResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create Cashiers",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "createCashier"
      }
    },
    "/v1/tellers/{tellerId}/cashiers/template": {
      "get": {
        "operationId": "retrieveCashierTemplateForTeller",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTellersTellerIdCashiersTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Find Cashiers",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "getCashierTemplate"
      }
    },
    "/v1/tellers/{tellerId}/cashiers/{cashierId}": {
      "delete": {
        "operationId": "deleteCashierForTeller",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "cashierId",
            "in": "path",
            "name": "cashierId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteTellersTellerIdCashiersCashierIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete Cashier",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "deleteCashier"
      },
      "get": {
        "operationId": "retrieveOneCashierForTeller",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "cashierId",
            "in": "path",
            "name": "cashierId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTellersTellerIdCashiersCashierIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a cashier",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "findCashierData"
      },
      "put": {
        "operationId": "updateCashierForTeller",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "cashierId",
            "in": "path",
            "name": "cashierId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutTellersTellerIdCashiersCashierIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutTellersTellerIdCashiersCashierIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update Cashier",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "updateCashier"
      }
    },
    "/v1/tellers/{tellerId}/cashiers/{cashierId}/allocate": {
      "post": {
        "description": "Mandatory Fields: \nDate, Amount, Currency, Notes/Comments",
        "operationId": "allocateCashToCashier",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "cashierId",
            "in": "path",
            "name": "cashierId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTellersTellerIdCashiersCashierIdAllocateRequest"
              }
            },
            "text/html": {
              "schema": {
                "$ref": "#/components/schemas/PostTellersTellerIdCashiersCashierIdAllocateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostTellersTellerIdCashiersCashierIdAllocateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Allocate Cash To Cashier",
        "tags": ["Teller Cash Management"]
      }
    },
    "/v1/tellers/{tellerId}/cashiers/{cashierId}/settle": {
      "post": {
        "description": "Mandatory Fields\nDate, Amount, Currency, Notes/Comments",
        "operationId": "settleCashFromCashier",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "cashierId",
            "in": "path",
            "name": "cashierId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTellersTellerIdCashiersCashierIdSettleRequest"
              }
            },
            "text/html": {
              "schema": {
                "$ref": "#/components/schemas/PostTellersTellerIdCashiersCashierIdSettleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostTellersTellerIdCashiersCashierIdSettleResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Settle Cash From Cashier",
        "tags": ["Teller Cash Management"]
      }
    },
    "/v1/tellers/{tellerId}/cashiers/{cashierId}/summaryandtransactions": {
      "get": {
        "operationId": "retrieveCashierTransactionsWithSummary",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "cashierId",
            "in": "path",
            "name": "cashierId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "currencyCode",
            "in": "query",
            "name": "currencyCode",
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTellersTellerIdCashiersCashiersIdSummaryAndTransactionsResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Transactions With Summary For Cashier",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "getTransactionsWithSummaryForCashier"
      }
    },
    "/v1/tellers/{tellerId}/cashiers/{cashierId}/transactions": {
      "get": {
        "operationId": "retrieveCashierTransactions",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "cashierId",
            "in": "path",
            "name": "cashierId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "currencyCode",
            "in": "query",
            "name": "currencyCode",
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTellersTellerIdCashiersCashiersIdTransactionsResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Cashier Transactions",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "getTransactionsForCashier"
      }
    },
    "/v1/tellers/{tellerId}/cashiers/{cashierId}/transactions/template": {
      "get": {
        "operationId": "retrieveTemplateCashierTransaction",
        "parameters": [
          {
            "description": "tellerId",
            "in": "path",
            "name": "tellerId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "cashierId",
            "in": "path",
            "name": "cashierId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTellersTellerIdCashiersCashiersIdTransactionsTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Cashier Transaction Template",
        "tags": ["Teller Cash Management"],
        "x-alternative-operation-id": "getCashierTxnTemplate"
      }
    },
    "/v1/templates": {
      "get": {
        "description": "It is possible to get specific UGDs by entity and type:\n\ntemplates?type=0&entity=0\n\nEntity ID:\n\n- client: 0\n- loan: 1\n\nType ID:\n\n- Document: 0\n- E-Mail (not yet): 1\n- SMS: 2",
        "operationId": "retrieveAllTemplates",
        "parameters": [
          {
            "description": "typeId",
            "in": "query",
            "name": "typeId",
            "schema": { "type": "integer", "format": "int32", "default": -1 }
          },
          {
            "description": "entityId",
            "in": "query",
            "name": "entityId",
            "schema": { "type": "integer", "format": "int32", "default": -1 }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/TemplateData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve all UGDs",
        "tags": ["templates"],
        "x-alternative-operation-id": "retrieveAll_40"
      },
      "post": {
        "description": "Adds a new UGD.\n\nMandatory Fields:\n- name\n\nExample Requests:\n\n- templates/1",
        "operationId": "createTemplate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/TemplateCreateRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/TemplateCreateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Add a UGD",
        "tags": ["templates"]
      }
    },
    "/v1/templates/template": {
      "get": {
        "description": "This is a convenience resource. It can be useful when building maintenance user interface screens for UGDs. The UGD data returned consists of any or all of:\n\n- name\n- entity\n- type\n- text\n- mappers\n\nExample Request:\n\ntemplates/template\n",
        "operationId": "retrieveTemplateDetails",
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/TemplateData" } }
            }
          }
        },
        "summary": "Retrieve UGD Details Template",
        "tags": ["templates"],
        "x-alternative-operation-id": "template_20"
      }
    },
    "/v1/templates/{templateId}": {
      "delete": {
        "operationId": "deleteTemplate",
        "parameters": [
          {
            "description": "templateId",
            "in": "path",
            "name": "templateId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/TemplateDeleteResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete a UGD",
        "tags": ["templates"]
      },
      "get": {
        "description": "Example Requests:\n\n- templates/1",
        "operationId": "retrieveOneTemplate",
        "parameters": [
          {
            "description": "templateId",
            "in": "path",
            "name": "templateId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/TemplateData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a UGD",
        "tags": ["templates"],
        "x-alternative-operation-id": "retrieveOne_30"
      },
      "post": {
        "operationId": "mergeTemplate",
        "parameters": [
          {
            "description": "templateId",
            "in": "path",
            "name": "templateId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "type": "object", "additionalProperties": { "type": "object" } }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": { "text/html": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["templates"]
      },
      "put": {
        "operationId": "saveTemplate",
        "parameters": [
          {
            "description": "templateId",
            "in": "path",
            "name": "templateId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/TemplateUpdateRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/TemplateUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update a UGD",
        "tags": ["templates"]
      }
    },
    "/v1/templates/{templateId}/template": {
      "get": {
        "operationId": "retrieveTemplateById",
        "parameters": [
          {
            "in": "path",
            "name": "templateId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/TemplateData" } }
            }
          }
        },
        "tags": ["templates"],
        "x-alternative-operation-id": "getTemplateByTemplate"
      }
    },
    "/v1/tenants/{tenantId}/oidc-config": {
      "delete": {
        "description": "Removes the OIDC/IdP configuration for the given tenant. After deletion, authentication via this tenant's IdP will no longer work.",
        "operationId": "delete_1",
        "parameters": [
          {
            "description": "tenantId",
            "in": "path",
            "name": "tenantId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Delete OIDC configuration for a tenant",
        "tags": ["Tenant OIDC Configuration"]
      },
      "get": {
        "description": "Returns the current OIDC/IdP configuration for the given tenant. The clientSecret is never included in the response.",
        "operationId": "retrieve",
        "parameters": [
          {
            "description": "tenantId",
            "in": "path",
            "name": "tenantId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Retrieve OIDC configuration for a tenant",
        "tags": ["Tenant OIDC Configuration"]
      },
      "post": {
        "description": "Creates a new OIDC/IdP configuration for the given tenant. The clientSecret is encrypted at rest and never returned in responses. The issuerUri must be globally unique across all tenants.",
        "operationId": "create",
        "parameters": [
          {
            "description": "tenantId",
            "in": "path",
            "name": "tenantId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Create OIDC configuration for a tenant",
        "tags": ["Tenant OIDC Configuration"]
      },
      "put": {
        "description": "Updates the existing OIDC/IdP configuration for the given tenant. If clientSecret is omitted in the request body, the existing encrypted secret is preserved.",
        "operationId": "update_1",
        "parameters": [
          {
            "description": "tenantId",
            "in": "path",
            "name": "tenantId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Update OIDC configuration for a tenant",
        "tags": ["Tenant OIDC Configuration"]
      }
    },
    "/v1/twofactor": {
      "get": {
        "operationId": "getOTPDeliveryMethods",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Two Factor"]
      },
      "post": {
        "operationId": "requestToken",
        "parameters": [
          { "in": "query", "name": "deliveryMethod", "schema": { "type": "string" } },
          {
            "in": "query",
            "name": "extendedToken",
            "schema": { "type": "boolean", "default": false }
          }
        ],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Two Factor"]
      }
    },
    "/v1/twofactor/configure": {
      "get": {
        "operationId": "retrieveAll_4",
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "x-alternative-operation-id": "retrieveAll_9"
      },
      "put": {
        "operationId": "updateConfiguration_1",
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "x-alternative-operation-id": "updateConfiguration_3"
      }
    },
    "/v1/twofactor/invalidate": {
      "post": {
        "operationId": "updateConfiguration",
        "requestBody": { "content": { "*/*": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Two Factor"],
        "x-alternative-operation-id": "updateConfiguration_2"
      }
    },
    "/v1/twofactor/validate": {
      "post": {
        "operationId": "validate",
        "parameters": [{ "in": "query", "name": "token", "schema": { "type": "string" } }],
        "responses": {
          "default": {
            "content": { "application/json": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "tags": ["Two Factor"]
      }
    },
    "/v1/userdetails": {
      "get": {
        "description": "checks the Authentication and returns the set roles and permissions allowed.",
        "operationId": "fetchAuthenticatedUserData",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetUserDetailsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Fetch authenticated user details\n",
        "tags": ["Fetch authenticated user details"]
      }
    },
    "/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": ["Users"],
        "x-alternative-operation-id": "retrieveAll_41"
      },
      "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": ["Users"],
        "x-alternative-operation-id": "create_15"
      }
    },
    "/v1/users/downloadtemplate": {
      "get": {
        "description": "Returns an Excel template for bulk importing users.",
        "operationId": "getBulkTemplateUser",
        "parameters": [
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "staffId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } }
        ],
        "responses": {
          "default": {
            "content": { "application/vnd.ms-excel": {} },
            "description": "default response"
          }
        },
        "summary": "Download users template",
        "tags": ["Users"],
        "x-alternative-operation-id": "getUserTemplate"
      }
    },
    "/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": ["Users"],
        "x-alternative-operation-id": "template_22"
      }
    },
    "/v1/users/uploadtemplate": {
      "post": {
        "description": "Uploads a filled Excel template to create multiple users in bulk.",
        "operationId": "postBulkTemplateUser",
        "requestBody": {
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadRequest" } }
          },
          "description": "Upload users template"
        },
        "responses": {
          "default": {
            "content": { "*/*": { "schema": { "type": "string" } } },
            "description": "default response"
          }
        },
        "summary": "Upload users template",
        "tags": ["Users"],
        "x-alternative-operation-id": "postUsersTemplate"
      }
    },
    "/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": ["Users"],
        "x-alternative-operation-id": "delete_23"
      },
      "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": ["Users"],
        "x-alternative-operation-id": "retrieveOne_31"
      },
      "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": ["Users"],
        "x-alternative-operation-id": "update_26"
      }
    },
    "/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": ["Users"],
        "x-alternative-operation-id": "changePassword"
      }
    },
    "/v1/working-capital-loan-products": {
      "get": {
        "description": "Lists all Working Capital Loan Products",
        "operationId": "retrieveAllWorkingCapitalLoanProducts",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/GetWorkingCapitalLoanProductsResponse" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Working Capital Loan Products",
        "tags": ["Working Capital Loan Products"]
      },
      "post": {
        "description": "Creates a new Working Capital Loan Product.\n\nMandatory Fields: name, shortName, currencyCode, digitsAfterDecimal, inMultiplesOf, amortizationType, npvDayCount, principal, repaymentEvery, repaymentFrequencyType\n\nPayment amount calculation strategy (paymentAmountCalculationStrategy, default TPV):\n- TPV: periodPaymentRate is mandatory; annualEir, minAnnualEir and maxAnnualEir are not allowed; minPeriodPaymentRate and maxPeriodPaymentRate are optional\n- ANNUAL_EIR: annualEir and discount (> 0) are mandatory; periodPaymentRate, minPeriodPaymentRate and maxPeriodPaymentRate are not allowed; minAnnualEir and maxAnnualEir are optional\n\nOptional Fields: externalId, fundId, startDate, closeDate, description, paymentAmountCalculationStrategy, delinquencyBucketClassification, minPrincipal, maxPrincipal, minPeriodPaymentRate, maxPeriodPaymentRate, annualEir, minAnnualEir, maxAnnualEir, discount, paymentAllocation, allowAttributeOverrides",
        "operationId": "createWorkingCapitalLoanProduct",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostWorkingCapitalLoanProductsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostWorkingCapitalLoanProductsResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Working Capital Loan Product",
        "tags": ["Working Capital Loan Products"]
      }
    },
    "/v1/working-capital-loan-products/external-id/{externalProductId}": {
      "delete": {
        "description": "Deletes a Working Capital Loan Product by external ID if it is not in use",
        "operationId": "deleteWorkingCapitalLoanProductByExternalId",
        "parameters": [
          {
            "description": "externalProductId",
            "in": "path",
            "name": "externalProductId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteWorkingCapitalLoanProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Working Capital Loan Product",
        "tags": ["Working Capital Loan Products"]
      },
      "get": {
        "description": "Retrieves a Working Capital Loan Product by external ID\n\nExample Requests:\n\nworkingcapitalloanproducts/external-id/2075e308-d4a8-44d9-8203-f5a947b8c2f4",
        "operationId": "retrieveOneWorkingCapitalLoanProductByExternalId",
        "parameters": [
          {
            "description": "externalProductId",
            "in": "path",
            "name": "externalProductId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkingCapitalLoanProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Working Capital Loan Product",
        "tags": ["Working Capital Loan Products"]
      },
      "put": {
        "description": "Updates a Working Capital Loan Product by external ID",
        "operationId": "updateWorkingCapitalLoanProductByExternalId",
        "parameters": [
          {
            "description": "externalProductId",
            "in": "path",
            "name": "externalProductId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutWorkingCapitalLoanProductsProductIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutWorkingCapitalLoanProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Working Capital Loan Product",
        "tags": ["Working Capital Loan Products"]
      }
    },
    "/v1/working-capital-loan-products/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\nworkingcapitalloanproducts/template",
        "operationId": "retrieveTemplateWorkingCapitalLoanProduct",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkingCapitalLoanProductsTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Working Capital Loan Product Details Template",
        "tags": ["Working Capital Loan Products"]
      }
    },
    "/v1/working-capital-loan-products/{productId}": {
      "delete": {
        "description": "Deletes a Working Capital Loan Product if it is not in use",
        "operationId": "deleteWorkingCapitalLoanProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteWorkingCapitalLoanProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Working Capital Loan Product",
        "tags": ["Working Capital Loan Products"]
      },
      "get": {
        "description": "Retrieves a Working Capital Loan Product\n\nExample Requests:\n\nworkingcapitalloanproducts/1\n\n\nworkingcapitalloanproducts/1?template=true\n\n\nworkingcapitalloanproducts/1?fields=name,description,principal",
        "operationId": "retrieveOneWorkingCapitalLoanProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkingCapitalLoanProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Working Capital Loan Product",
        "tags": ["Working Capital Loan Products"]
      },
      "put": {
        "description": "Updates a Working Capital Loan Product",
        "operationId": "updateWorkingCapitalLoanProduct",
        "parameters": [
          {
            "description": "productId",
            "in": "path",
            "name": "productId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutWorkingCapitalLoanProductsProductIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutWorkingCapitalLoanProductsProductIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Working Capital Loan Product",
        "tags": ["Working Capital Loan Products"]
      }
    },
    "/v1/working-capital-loans": {
      "get": {
        "description": "Uses Spring Data pagination: page, size, sort (e.g. sort=id,asc or sort=accountNumber,desc). Filter by clientId, externalId, status, accountNo. Response: content, totalElements, totalPages, size, number.",
        "operationId": "retrieveAllWorkingCapitalLoans",
        "parameters": [
          {
            "description": "externalId",
            "in": "query",
            "name": "externalId",
            "schema": { "type": "string" }
          },
          {
            "description": "accountNo",
            "in": "query",
            "name": "accountNo",
            "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/GetWorkingCapitalLoansPagedResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Working Capital Loans",
        "tags": ["Working Capital Loans"]
      },
      "post": {
        "description": "Creates a new Working Capital Loan application.",
        "operationId": "submitWorkingCapitalLoanApplication",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostWorkingCapitalLoansRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostWorkingCapitalLoansResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Submit a Working Capital Loan application",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/catch-up": {
      "post": {
        "description": "Executes the Working Capital Loan COB job on every day from the oldest Loan to the current COB business date",
        "operationId": "executeLoanCOBCatchUp_1",
        "responses": {
          "200": { "description": "All loans are up to date" },
          "202": { "description": "Catch Up has been started" },
          "400": { "description": "Catch Up is already running" }
        },
        "summary": "Executes Working Capital Loan COB Catch Up",
        "tags": ["Working Capital Loan COB Catch Up"]
      }
    },
    "/v1/working-capital-loans/external-id/{externalId}/delinquencyrangetags": {
      "get": {
        "operationId": "getDelinquencyRangeScheduleTagHistoryByExternalId",
        "parameters": [
          {
            "description": "externalId",
            "in": "path",
            "name": "externalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetWorkingCapitalLoanDelinquencyRangeScheduleTagHistoryResponse"
                  }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve the Loan Delinquency Tag history using the Loan External Id",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}": {
      "delete": {
        "description": "Only loans in \"Submitted and awaiting approval\" status can be deleted.",
        "operationId": "deleteWorkingCapitalLoanApplicationByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteWorkingCapitalLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Working Capital Loan application by external id",
        "tags": ["Working Capital Loans"]
      },
      "get": {
        "description": "Retrieves a Working Capital Loan by external id.",
        "operationId": "retrieveWorkingCapitalLoanByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetWorkingCapitalLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Working Capital Loan by external id",
        "tags": ["Working Capital Loans"]
      },
      "post": {
        "description": "Mandatory command query parameter: approve, reject, undoapproval, disburse, or undodisbursal.",
        "operationId": "stateTransitionWorkingCapitalLoanByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Approve/Reject/Undo-approve/Disburse/Undo-disburse a Working Capital Loan by external id",
        "tags": ["Working Capital Loans"]
      },
      "put": {
        "description": "Loan application can only be modified when in 'Submitted and pending approval' state.",
        "operationId": "modifyWorkingCapitalLoanApplicationByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutWorkingCapitalLoansLoanIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutWorkingCapitalLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modify a Working Capital Loan application by external id",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/breach-actions": {
      "get": {
        "description": "Retrieves all breach actions for a Working Capital loan identified by external id",
        "operationId": "retrieveBreachActionsByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/WorkingCapitalLoanBreachActionData" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Breach Actions by external id",
        "tags": ["Working Capital Loan Breach Actions"]
      },
      "post": {
        "description": "Creates a breach action (pause, reschedule, resume, reset, undo_reset, disable, enable) for a Working Capital loan identified by external id.",
        "operationId": "createBreachActionByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWorkingCapitalLoansBreachActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingCapitalLoansBreachActionResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad Request" },
          "404": { "description": "Working Capital Loan not found" }
        },
        "summary": "Create Breach Action by external id",
        "tags": ["Working Capital Loan Breach Actions"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/charges": {
      "get": {
        "description": "It lists all the Loan Charges specific to a Loan \n\nExample Requests:\n\nloans/1/charges\n\n\nloans/1/charges?fields=name,amountOrPercentage",
        "operationId": "retrieveAllWorkingCapitalLoanChargesByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/WorkingCapitalLoanChargeData" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Loan Charges",
        "tags": ["Working Capital Loan Charges"]
      },
      "post": {
        "description": "Creates a Loan Charge | Pay a Loan Charge",
        "operationId": "executeWorkingCapitalLoanChargeByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Loan Charge (no command provided)",
        "tags": ["Working Capital Loan Charges"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/charges/external-id/{loanChargeExternalId}": {
      "get": {
        "description": "Retrieves Loan Charge according to the Loan External ID and Loan Charge External IDExample Requests:\n\n/loans/1/charges/1\n\n\n/loans/1/charges/1?fields=name,amountOrPercentage",
        "operationId": "retrieveWorkingCapitalLoanChargeByLoanAndChargeExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingCapitalLoanChargeData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Loan Charge",
        "tags": ["Working Capital Loan Charges"]
      },
      "post": {
        "description": "Adjusts a working capital loan charge by creating a CHARGE_ADJUSTMENT transaction (command=adjustment), or waives its full outstanding amount by creating a WAIVE_CHARGES transaction (command=waive).",
        "operationId": "adjustLoanChargeByLoanAndChargeExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string", "default": "" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdChargesChargeIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdChargesChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Adjust or Waive a Working Capital Loan Charge by Loan and Charge External Ids",
        "tags": ["Working Capital Loan Charges"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/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\nloans/1/charges/template\n\n",
        "operationId": "retrieveTemplateWorkingCapitalLoanChargeByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingCapitalLoanChargeData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Working Capital Loan Charges Template",
        "tags": ["Working Capital Loan Charges"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/charges/{loanChargeId}": {
      "get": {
        "description": "Retrieves Loan Charge according to the Loan external ID and Loan Charge IDExample Requests:\n\n/loans/1/charges/1\n\n\n/loans/1/charges/1?fields=name,amountOrPercentage",
        "operationId": "retrieveWorkingCapitalLoanChargeByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingCapitalLoanChargeData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Loan Charge",
        "tags": ["Working Capital Loan Charges"]
      },
      "post": {
        "description": "Adjusts a working capital loan charge by creating a CHARGE_ADJUSTMENT transaction (command=adjustment), or waives its full outstanding amount by creating a WAIVE_CHARGES transaction (command=waive).",
        "operationId": "adjustLoanChargeByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string", "default": "" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdChargesChargeIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdChargesChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Adjust or Waive a Working Capital Loan Charge by Loan External Id",
        "tags": ["Working Capital Loan Charges"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/delinquency-actions": {
      "get": {
        "description": "Retrieves all delinquency actions for a Working Capital loan identified by external id",
        "operationId": "retrieveDelinquencyActionsByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkingCapitalLoanDelinquencyActionData"
                  }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Delinquency Actions by external id",
        "tags": ["Working Capital Loan Delinquency Actions"]
      },
      "post": {
        "description": "Creates a delinquency action (pause, reschedule, resume, disable, enable) for a Working Capital loan identified by external id.",
        "operationId": "createDelinquencyActionByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWorkingCapitalLoansDelinquencyActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingCapitalLoansDelinquencyActionResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad Request" },
          "404": { "description": "Working Capital Loan not found" }
        },
        "summary": "Create Delinquency Action by external id",
        "tags": ["Working Capital Loan Delinquency Actions"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/discount": {
      "put": {
        "description": "Discount can be added one time after disbursement and only on disbursement date.",
        "operationId": "updateWorkingCapitalLoanDiscountByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutWorkingCapitalLoansLoanIdDiscountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutWorkingCapitalLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update discount for a disbursed Working Capital Loan by external id",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/mark-as-fraud": {
      "put": {
        "description": "Flags the loan as fraudulent. When the loan is later charged off, a fraudulent loan is routed to the charge-off fraud expense account instead of the regular charge-off expense account. Does not change the loan status.",
        "operationId": "markWorkingCapitalLoanAsFraudByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/MarkWorkingCapitalLoanAsFraudRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Mark or unmark a Working Capital Loan as fraudulent by external id",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/near-breach-actions": {
      "get": {
        "description": "Returns all near breach action records for the loan, ordered by most recent first.",
        "operationId": "getWorkingCapitalLoanNearBreachActionsByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/WorkingCapitalLoanNearBreachActionData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve near breach actions for a Working Capital Loan by external id",
        "tags": ["Working Capital Loan Near Breach Actions"]
      },
      "post": {
        "description": "Creates a near breach action (reschedule) for a Working Capital loan.",
        "operationId": "createWorkingCapitalLoanNearBreachActionByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdNearBreachActionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create a near breach action for an active Working Capital Loan by external id",
        "tags": ["Working Capital Loan Near Breach Actions"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/originators": {
      "get": {
        "description": "Retrieves all originators attached to a specific working capital loan using loan external ID. Requires READ_WORKINGCAPITALLOAN permission.",
        "operationId": "retrieveOriginatorsByWorkingCapitalLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorsResponse" }
              }
            },
            "description": "OK - Returns wrapped list of originators (may be empty)"
          },
          "403": { "description": "Insufficient permissions" },
          "404": { "description": "Loan not found" }
        },
        "summary": "Retrieve originators for a working capital loan by loan external ID",
        "tags": ["Working Capital Loan Originators"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/originators/external-id/{originatorExternalId}": {
      "delete": {
        "operationId": "detachOriginatorFromWorkingCapitalLoanByBothExternalIds",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "originatorExternalId",
            "in": "path",
            "name": "originatorExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Loan not in correct status" },
          "404": { "description": "Loan or originator mapping not found" }
        },
        "summary": "Detach originator from working capital loan by loan external ID and originator external ID",
        "tags": ["Working Capital Loan Originators"]
      },
      "post": {
        "operationId": "attachOriginatorToWorkingCapitalLoanByBothExternalIds",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "originatorExternalId",
            "in": "path",
            "name": "originatorExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": {
            "description": "Loan not in correct status, originator not ACTIVE, duplicate mapping"
          },
          "404": { "description": "Loan or originator not found" }
        },
        "summary": "Attach originator to working capital loan by loan external ID and originator external ID",
        "tags": ["Working Capital Loan Originators"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/originators/{originatorId}": {
      "delete": {
        "operationId": "detachOriginatorFromWorkingCapitalLoanByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Loan not in correct status" },
          "404": { "description": "Loan or originator mapping not found" }
        },
        "summary": "Detach originator from working capital loan by loan external ID and originator ID",
        "tags": ["Working Capital Loan Originators"]
      },
      "post": {
        "operationId": "attachOriginatorToWorkingCapitalLoanByLoanExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": {
            "description": "Loan not in correct status, originator not ACTIVE, duplicate mapping"
          },
          "404": { "description": "Loan or originator not found" }
        },
        "summary": "Attach originator to working capital loan by loan external ID and originator ID",
        "tags": ["Working Capital Loan Originators"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/payment-rate": {
      "put": {
        "description": "Modifies the period payment rate and triggers schedule recalculation for the remaining term.",
        "operationId": "updateWorkingCapitalLoanRateByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutWorkingCapitalLoansLoanIdRateRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update period payment rate for an active Working Capital Loan by external id",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/rate-changes": {
      "get": {
        "description": "Returns all rate change records for the loan, ordered by most recent first.",
        "operationId": "getWorkingCapitalLoanRateChangeHistoryByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkingCapitalLoanPeriodPaymentRateChangeData"
                  }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve rate change history for a Working Capital Loan by external id",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/transactions": {
      "get": {
        "description": "Retrieves transactions of a Working Capital Loan by loan external id.",
        "operationId": "retrieveWorkingCapitalLoanTransactionsByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkingCapitalLoanTransactionsResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve transactions by loan external id",
        "tags": ["Working Capital Loan Transactions"]
      },
      "post": {
        "description": "Supported command query parameter: repayment, creditBalanceRefund, payoutRefund, goodwillCredit, discountFee, discountFeeAdjustment, chargeOff, undoChargeOff, writeOff, undoWriteOff, recoveryPayment",
        "operationId": "executeWorkingCapitalLoanTransactionByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostWorkingCapitalLoanTransactionsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingCapitalLoanTransactionsResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Execute Working Capital Loan transaction by external id",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/transactions/external-id/{externalTransactionId}": {
      "get": {
        "description": "Retrieves a single Working Capital Loan transaction by loan external id and transaction external id.\n\nExample: working-capital-loans/external-id/loan-ext-001/transactions/external-id/txn-ext-001",
        "operationId": "retrieveWorkingCapitalLoanTransactionByExternalLoanIdAndExternalTransactionId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "externalTransactionId",
            "in": "path",
            "name": "externalTransactionId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkingCapitalLoanTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a transaction by loan and transaction external ids",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/transactions/external-id/{transactionExternalId}": {
      "post": {
        "description": "Supported command query parameter: undo",
        "operationId": "executeWorkingCapitalLoanTransactionCommandByLoanExternalIdTransactionExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "transactionExternalId",
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteWorkingCapitalLoanTransactionCommandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteWorkingCapitalLoanTransactionCommandResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Execute Working Capital Loan transaction command by loan external id and transaction external id",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/transactions/template": {
      "get": {
        "description": "Supported command query parameters: disburse, repayment, goodwillCredit, creditBalanceRefund, recoveryPayment, discountFee, discountFeeAdjustment, chargeOff, prepayLoan. The optional transactionDate quotes the balance as of that date, defaulting to the business date; only what is owed is scoped to it, so the amount stays net of every payment already made.",
        "operationId": "getWorkingCapitalLoanTransactionTemplateByExternalId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkingCapitalLoanTransactionTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Get Working Capital Loan transaction template by loan external id",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital-loans/external-id/{loanExternalId}/transactions/{transactionId}": {
      "get": {
        "description": "Retrieves a single Working Capital Loan transaction by loan external id and transaction id.",
        "operationId": "retrieveWorkingCapitalLoanTransactionByExternalLoanIdAndTransactionId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "transactionId",
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkingCapitalLoanTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a transaction by loan external id and transaction id",
        "tags": ["Working Capital Loan Transactions"]
      },
      "post": {
        "description": "Supported command query parameter: undo",
        "operationId": "executeWorkingCapitalLoanTransactionCommandByLoanExternalIdTransactionId",
        "parameters": [
          {
            "description": "loanExternalId",
            "in": "path",
            "name": "loanExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "transactionId",
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteWorkingCapitalLoanTransactionCommandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteWorkingCapitalLoanTransactionCommandResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Execute Working Capital Loan transaction command by loan external id and transaction id",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital-loans/is-catch-up-running": {
      "get": {
        "description": "Retrieves whether Working Capital Loan COB catch up is running, and the current execution date if it is running.",
        "operationId": "isCatchUpRunning_1",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/IsCatchUpRunningDTO" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieves whether Working Capital Loan COB catch up is running",
        "tags": ["Working Capital Loan COB Catch Up"]
      }
    },
    "/v1/working-capital-loans/oldest-cob-closed": {
      "get": {
        "description": "Retrieves the COB business date and the oldest COB processed loan",
        "operationId": "getOldestCOBProcessedLoan_1",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/OldestCOBProcessedLoanDTO" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieves the oldest COB processed Working Capital Loan",
        "tags": ["Working Capital Loan COB Catch Up"]
      }
    },
    "/v1/working-capital-loans/template": {
      "get": {
        "description": "Returns loan details plus productOptions, fundOptions, delinquencyBucketOptions, periodFrequencyTypeOptions.",
        "operationId": "retrieveWorkingCapitalLoanTemplate",
        "parameters": [
          {
            "description": "productId",
            "in": "query",
            "name": "productId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "clientId",
            "in": "query",
            "name": "clientId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetWorkingCapitalLoansTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Working Capital Loan application template",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/{loanId}": {
      "delete": {
        "description": "Only loans in \"Submitted and awaiting approval\" status can be deleted.",
        "operationId": "deleteWorkingCapitalLoanApplication",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeleteWorkingCapitalLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Delete a Working Capital Loan application",
        "tags": ["Working Capital Loans"]
      },
      "get": {
        "description": "Retrieves a Working Capital Loan by id.",
        "operationId": "retrieveWorkingCapitalLoanById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetWorkingCapitalLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Working Capital Loan",
        "tags": ["Working Capital Loans"]
      },
      "post": {
        "description": "Mandatory command query parameter: approve, reject, undoapproval, disburse, or undodisbursal.",
        "operationId": "stateTransitionWorkingCapitalLoanById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Approve/Reject/Undo-approve/Disburse/Undo-disburse a Working Capital Loan",
        "tags": ["Working Capital Loans"]
      },
      "put": {
        "description": "Loan application can only be modified when in 'Submitted and pending approval' state.",
        "operationId": "modifyWorkingCapitalLoanApplicationById",
        "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/PutWorkingCapitalLoansLoanIdRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutWorkingCapitalLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Modify a Working Capital Loan application",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/{loanId}/amortization-schedule": {
      "get": {
        "description": "Returns the projected amortization schedule for a Working Capital Loan.\n\nThe schedule contains per-payment details including expected and actual payments, expected and actual balances, expected and actual amortization amounts, and expected and actual discount fee balances.\n\nExample Request:\n\nworking-capital-loans/1/amortization-schedule",
        "operationId": "retrieveAmortizationSchedule",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ProjectedAmortizationScheduleData" }
              }
            },
            "description": "OK"
          },
          "404": { "description": "Working Capital Loan or schedule not found" }
        },
        "summary": "Retrieve Projected Amortization Schedule",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/{loanId}/breach-actions": {
      "get": {
        "description": "Retrieves all breach actions for a Working Capital loan",
        "operationId": "retrieveBreachActions",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/WorkingCapitalLoanBreachActionData" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Breach Actions",
        "tags": ["Working Capital Loan Breach Actions"]
      },
      "post": {
        "description": "Creates a breach action (pause, reschedule, resume, reset, undo_reset, disable, enable) for a Working Capital loan. A resume shortens the currently active pause to the current business date. A disable stops breach evaluation as of the current business date; an enable re-triggers and recomputes breach evaluation as of that date.",
        "operationId": "createBreachAction",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWorkingCapitalLoansBreachActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingCapitalLoansBreachActionResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad Request" },
          "404": { "description": "Working Capital Loan not found" }
        },
        "summary": "Create Breach Action",
        "tags": ["Working Capital Loan Breach Actions"]
      }
    },
    "/v1/working-capital-loans/{loanId}/breach-schedule": {
      "get": {
        "description": "Retrieves the breach schedule periods for a Working Capital loan",
        "operationId": "retrieveBreachSchedule",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/WorkingCapitalLoanBreachScheduleData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Breach Schedule",
        "tags": ["Working Capital Loan Breach Schedule"]
      }
    },
    "/v1/working-capital-loans/{loanId}/charges": {
      "get": {
        "description": "It lists all the Loan Charges specific to a Loan \n\nExample Requests:\n\nloans/1/charges\n\n\nloans/1/charges?fields=name,amountOrPercentage",
        "operationId": "retrieveAllWorkingCapitalLoanChargesByLoanId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/WorkingCapitalLoanChargeData" }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List Loan Charges",
        "tags": ["Working Capital Loan Charges"]
      },
      "post": {
        "description": "Creates a Loan Charge",
        "operationId": "createLoanCharge",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PostLoansLoanIdChargesResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Loan Charge ",
        "tags": ["Working Capital Loan Charges"]
      }
    },
    "/v1/working-capital-loans/{loanId}/charges/external-id/{loanChargeExternalId}": {
      "get": {
        "description": "Retrieves Loan Charge according to the Loan ID and Loan Charge External IDExample Requests:\n\n/loans/1/charges/1\n\n\n/loans/1/charges/external-id/1?fields=name,amountOrPercentage",
        "operationId": "retrieveWorkingCapitalLoanChargeByChargeExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingCapitalLoanChargeData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Loan Charge",
        "tags": ["Working Capital Loan Charges"]
      },
      "post": {
        "description": "Adjusts a working capital loan charge by creating a CHARGE_ADJUSTMENT transaction (command=adjustment), or waives its full outstanding amount by creating a WAIVE_CHARGES transaction (command=waive).",
        "operationId": "adjustLoanChargeByChargeExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeExternalId",
            "in": "path",
            "name": "loanChargeExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string", "default": "" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdChargesChargeIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdChargesChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Adjust or Waive a Working Capital Loan Charge by Charge External Id",
        "tags": ["Working Capital Loan Charges"]
      }
    },
    "/v1/working-capital-loans/{loanId}/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\nloans/1/charges/template\n\n",
        "operationId": "retrieveTemplateWorkingCapitalLoanCharge",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingCapitalLoanChargeData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Working Capital Loan Charges Template",
        "tags": ["Working Capital Loan Charges"]
      }
    },
    "/v1/working-capital-loans/{loanId}/charges/{loanChargeId}": {
      "get": {
        "description": "Retrieves Loan Charge according to the Loan ID and Loan Charge IDExample Requests:\n\n/loans/1/charges/1\n\n\n/loans/1/charges/1?fields=name,amountOrPercentage",
        "operationId": "retrieveWorkingCapitalLoanCharge",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingCapitalLoanChargeData" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a Loan Charge",
        "tags": ["Working Capital Loan Charges"]
      },
      "post": {
        "description": "Adjusts a working capital loan charge by creating a CHARGE_ADJUSTMENT transaction (command=adjustment), or waives its full outstanding amount by creating a WAIVE_CHARGES transaction (command=waive).",
        "operationId": "adjustLoanCharge",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "loanChargeId",
            "in": "path",
            "name": "loanChargeId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "schema": { "type": "string", "default": "" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdChargesChargeIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdChargesChargeIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Adjust or Waive a Working Capital Loan Charge",
        "tags": ["Working Capital Loan Charges"]
      }
    },
    "/v1/working-capital-loans/{loanId}/delinquency-actions": {
      "get": {
        "description": "Retrieves all delinquency actions for a Working Capital loan",
        "operationId": "retrieveDelinquencyActions",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkingCapitalLoanDelinquencyActionData"
                  }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Delinquency Actions",
        "tags": ["Working Capital Loan Delinquency Actions"]
      },
      "post": {
        "description": "Creates a delinquency action (pause, reschedule, resume, disable, enable) for a Working Capital loan. A disable stops delinquency evaluation as of the current business date; an enable re-triggers and recomputes delinquency evaluation as of that date.",
        "operationId": "createDelinquencyAction",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWorkingCapitalLoansDelinquencyActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingCapitalLoansDelinquencyActionResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": { "description": "Bad Request" },
          "404": { "description": "Working Capital Loan not found" }
        },
        "summary": "Create Delinquency Action",
        "tags": ["Working Capital Loan Delinquency Actions"]
      }
    },
    "/v1/working-capital-loans/{loanId}/delinquency-range-schedule": {
      "get": {
        "description": "Retrieves the delinquency range schedule periods for a Working Capital loan",
        "operationId": "retrieveDelinquencyRangeSchedule",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkingCapitalLoanDelinquencyRangeScheduleData"
                  }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Delinquency Range Schedule",
        "tags": ["Working Capital Loan Delinquency Range Schedule"]
      }
    },
    "/v1/working-capital-loans/{loanId}/delinquencyrangetags": {
      "get": {
        "operationId": "getDelinquencyRangeScheduleTagHistoryById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetWorkingCapitalLoanDelinquencyRangeScheduleTagHistoryResponse"
                  }
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve the Loan Delinquency Tag history using the Loan Id",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/{loanId}/discount": {
      "put": {
        "description": "Discount can be added one time after disbursement and only on disbursement date.",
        "operationId": "updateWorkingCapitalLoanDiscountById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutWorkingCapitalLoansLoanIdDiscountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PutWorkingCapitalLoansLoanIdResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update discount for a disbursed Working Capital Loan",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/{loanId}/mark-as-fraud": {
      "put": {
        "description": "Flags the loan as fraudulent. When the loan is later charged off, a fraudulent loan is routed to the charge-off fraud expense account instead of the regular charge-off expense account. Does not change the loan status.",
        "operationId": "markWorkingCapitalLoanAsFraudById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/MarkWorkingCapitalLoanAsFraudRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Mark or unmark a Working Capital Loan as fraudulent",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/{loanId}/near-breach-actions": {
      "get": {
        "description": "Returns all near breach action records for the loan, ordered by most recent first.",
        "operationId": "getWorkingCapitalLoanNearBreachActionsById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/WorkingCapitalLoanNearBreachActionData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve near breach actions for a Working Capital Loan",
        "tags": ["Working Capital Loan Near Breach Actions"]
      },
      "post": {
        "description": "Creates a near breach action (reschedule) for a Working Capital loan.",
        "operationId": "createWorkingCapitalLoanNearBreachActionById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdNearBreachActionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create a near breach action for an active Working Capital Loan",
        "tags": ["Working Capital Loan Near Breach Actions"]
      }
    },
    "/v1/working-capital-loans/{loanId}/originators": {
      "get": {
        "description": "Retrieves all originators attached to a specific working capital loan. Requires READ_WORKINGCAPITALLOAN permission.",
        "operationId": "retrieveOriginatorsByWorkingCapitalLoanId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorsResponse" }
              }
            },
            "description": "OK - Returns wrapped list of originators (may be empty)"
          },
          "403": { "description": "Insufficient permissions" },
          "404": { "description": "Loan not found" }
        },
        "summary": "Retrieve originators for a working capital loan by loan ID",
        "tags": ["Working Capital Loan Originators"]
      }
    },
    "/v1/working-capital-loans/{loanId}/originators/external-id/{originatorExternalId}": {
      "delete": {
        "operationId": "detachOriginatorFromWorkingCapitalLoanByOriginatorExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "originatorExternalId",
            "in": "path",
            "name": "originatorExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": { "description": "Loan not in correct status" },
          "404": { "description": "Loan or originator mapping not found" }
        },
        "summary": "Detach originator from working capital loan by loan ID and originator external ID",
        "tags": ["Working Capital Loan Originators"]
      },
      "post": {
        "operationId": "attachOriginatorToWorkingCapitalLoanByOriginatorExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "originatorExternalId",
            "in": "path",
            "name": "originatorExternalId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK"
          },
          "403": {
            "description": "Loan not in correct status, originator not ACTIVE, duplicate mapping"
          },
          "404": { "description": "Loan or originator not found" }
        },
        "summary": "Attach originator to working capital loan by loan ID and originator external ID",
        "tags": ["Working Capital Loan Originators"]
      }
    },
    "/v1/working-capital-loans/{loanId}/originators/{originatorId}": {
      "delete": {
        "description": "Detaches an originator from a working capital loan. Loan must be in 'Submitted and Pending Approval' status. Requires DETACH_WORKING_CAPITAL_LOAN_ORIGINATOR permission.",
        "operationId": "detachOriginatorFromWorkingCapitalLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK - Originator detached"
          },
          "403": { "description": "Loan not in correct status or insufficient permissions" },
          "404": { "description": "Loan or originator mapping not found" }
        },
        "summary": "Detach originator from working capital loan by IDs",
        "tags": ["Working Capital Loan Originators"]
      },
      "post": {
        "description": "Attaches an originator to a working capital loan. Loan must be in 'Submitted and Pending Approval' status. Requires ATTACH_WORKING_CAPITAL_LOAN_ORIGINATOR permission.",
        "operationId": "attachOriginatorToWorkingCapitalLoan",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "originatorId",
            "in": "path",
            "name": "originatorId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/LoanOriginatorMappingResponse" }
              }
            },
            "description": "OK - Originator attached"
          },
          "403": {
            "description": "Loan not in correct status, originator not ACTIVE, duplicate mapping, or insufficient permissions"
          },
          "404": { "description": "Loan or originator not found" }
        },
        "summary": "Attach originator to working capital loan by IDs",
        "tags": ["Working Capital Loan Originators"]
      }
    },
    "/v1/working-capital-loans/{loanId}/payment-rate": {
      "put": {
        "description": "Modifies the period payment rate and triggers schedule recalculation for the remaining term.",
        "operationId": "updateWorkingCapitalLoanRateById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PutWorkingCapitalLoansLoanIdRateRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update period payment rate for an active Working Capital Loan",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/{loanId}/rate-changes": {
      "get": {
        "description": "Returns all rate change records for the loan, ordered by most recent first.",
        "operationId": "getWorkingCapitalLoanRateChangeHistoryById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkingCapitalLoanPeriodPaymentRateChangeData"
                  }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve rate change history for a Working Capital Loan",
        "tags": ["Working Capital Loans"]
      }
    },
    "/v1/working-capital-loans/{loanId}/template": {
      "get": {
        "description": "Loan approval only - it is the one action that posts no transaction. Supported templateType query parameter: approve. Everything else, disbursement included, lives on {loanId}/transactions/template?command=...",
        "operationId": "retrieveWorkingCapitalLoanActionTemplate",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "templateType",
            "in": "query",
            "name": "templateType",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingCapitalLoanCommandTemplateData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Working Capital Loan action template",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital-loans/{loanId}/transactions": {
      "get": {
        "description": "Retrieves transactions of a Working Capital Loan.\n\nExample: working-capital-loans/1/transactions",
        "operationId": "retrieveWorkingCapitalLoanTransactionsById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkingCapitalLoanTransactionsResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve transactions",
        "tags": ["Working Capital Loan Transactions"]
      },
      "post": {
        "description": "Supported command query parameter: repayment, creditBalanceRefund, payoutRefund, goodwillCredit, discountFee, discountFeeAdjustment, chargeOff, undoChargeOff, writeOff, undoWriteOff, recoveryPayment",
        "operationId": "executeWorkingCapitalLoanTransactionById",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/PostWorkingCapitalLoanTransactionsRequest" }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingCapitalLoanTransactionsResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Execute Working Capital Loan transaction",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital-loans/{loanId}/transactions/external-id/{externalTransactionId}": {
      "get": {
        "description": "Retrieves a single Working Capital Loan transaction by loan id and transaction external id.\n\nExample: working-capital-loans/1/transactions/external-id/txn-ext-001",
        "operationId": "retrieveWorkingCapitalLoanTransactionByExternalTransactionId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "externalTransactionId",
            "in": "path",
            "name": "externalTransactionId",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkingCapitalLoanTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a transaction by external id",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital-loans/{loanId}/transactions/external-id/{transactionExternalId}": {
      "post": {
        "description": "Supported command query parameter: undo",
        "operationId": "executeWorkingCapitalLoanTransactionCommandByLoanIdTransactionExternalId",
        "parameters": [
          {
            "description": "loanId",
            "in": "path",
            "name": "loanId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "transactionExternalId",
            "in": "path",
            "name": "transactionExternalId",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "description": "command",
            "in": "query",
            "name": "command",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteWorkingCapitalLoanTransactionCommandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteWorkingCapitalLoanTransactionCommandResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Execute Working Capital Loan transaction command by loan id and transaction external id",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital-loans/{loanId}/transactions/template": {
      "get": {
        "description": "Supported command query parameters: disburse, repayment, goodwillCredit, creditBalanceRefund, recoveryPayment, discountFee, discountFeeAdjustment, chargeOff, prepayLoan. The optional transactionDate quotes the balance as of that date, defaulting to the business date; only what is owed is scoped to it, so the amount stays net of every payment already made.",
        "operationId": "getWorkingCapitalLoanTransactionTemplateById",
        "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkingCapitalLoanTransactionTemplateResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Get Working Capital Loan transaction template by loan id",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital-loans/{loanId}/transactions/{transactionId}": {
      "get": {
        "description": "Retrieves a single Working Capital Loan transaction.\n\nExample: working-capital-loans/1/transactions/1",
        "operationId": "retrieveWorkingCapitalLoanTransactionById",
        "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" }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkingCapitalLoanTransactionIdResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve a transaction",
        "tags": ["Working Capital Loan Transactions"]
      },
      "post": {
        "description": "Supported command query parameter: undo",
        "operationId": "executeWorkingCapitalLoanTransactionCommandByLoanIdTransactionId",
        "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",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteWorkingCapitalLoanTransactionCommandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteWorkingCapitalLoanTransactionCommandResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Execute Working Capital Loan transaction command by loan id and transaction id",
        "tags": ["Working Capital Loan Transactions"]
      }
    },
    "/v1/working-capital/breach/breaches": {
      "get": {
        "operationId": "retrieveAllWorkingCapitalBreaches",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/WorkingCapitalBreachData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Working Capital Breaches",
        "tags": ["Working Capital Breach"]
      },
      "post": {
        "operationId": "createWorkingCapitalBreach",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/WorkingCapitalBreachRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create Working Capital Breach",
        "tags": ["Working Capital Breach"]
      }
    },
    "/v1/working-capital/breach/breaches/{breachId}": {
      "delete": {
        "operationId": "deleteWorkingCapitalBreach",
        "parameters": [
          {
            "description": "breachId",
            "in": "path",
            "name": "breachId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete Working Capital Breach",
        "tags": ["Working Capital Breach"]
      },
      "get": {
        "operationId": "retrieveWorkingCapitalBreach",
        "parameters": [
          {
            "description": "breachId",
            "in": "path",
            "name": "breachId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingCapitalBreachData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Working Capital Breach",
        "tags": ["Working Capital Breach"]
      },
      "put": {
        "operationId": "updateWorkingCapitalBreach",
        "parameters": [
          {
            "description": "breachId",
            "in": "path",
            "name": "breachId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/WorkingCapitalBreachRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update Working Capital Breach",
        "tags": ["Working Capital Breach"]
      }
    },
    "/v1/working-capital/breach/template": {
      "get": {
        "description": "Returns breach options for frequency type and amount calculation type.",
        "operationId": "retrieveWorkingCapitalBreachTemplate",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingCapitalBreachTemplateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Retrieve Working Capital Breach template",
        "tags": ["Working Capital Breach"]
      }
    },
    "/v1/working-capital/near-breach": {
      "get": {
        "operationId": "retrieveAllWorkingCapitalNearBreaches",
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/WorkingCapitalNearBreachData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Working Capital Near Breaches",
        "tags": ["Working Capital Near Breach"]
      },
      "post": {
        "operationId": "createWorkingCapitalNearBreach",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/WorkingCapitalNearBreachRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create Working Capital Near Breach",
        "tags": ["Working Capital Near Breach"]
      }
    },
    "/v1/working-capital/near-breach/{breachId}": {
      "delete": {
        "operationId": "deleteWorkingCapitalNearBreach",
        "parameters": [
          {
            "description": "breachId",
            "in": "path",
            "name": "breachId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete Working Capital Near Breach",
        "tags": ["Working Capital Near Breach"]
      },
      "get": {
        "operationId": "retrieveWorkingCapitalNearBreach",
        "parameters": [
          {
            "description": "breachId",
            "in": "path",
            "name": "breachId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingCapitalNearBreachData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Working Capital Near Breach",
        "tags": ["Working Capital Near Breach"]
      },
      "put": {
        "operationId": "updateWorkingCapitalNearBreach",
        "parameters": [
          {
            "description": "breachId",
            "in": "path",
            "name": "breachId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/WorkingCapitalNearBreachRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update Working Capital Near Breach",
        "tags": ["Working Capital Near Breach"]
      }
    },
    "/v1/workingdays": {
      "get": {
        "description": "Example Requests:\n\nworkingdays",
        "operationId": "retrieveAllWorkingDays",
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/WorkingDaysData" } }
            },
            "description": "default response"
          }
        },
        "summary": "List Working days",
        "tags": ["Working days"],
        "x-alternative-operation-id": "retrieveAll_17"
      },
      "put": {
        "description": "Mandatory Fields\nrecurrence,repaymentRescheduleType,extendTermForDailyRepayments,locale",
        "operationId": "updateWorkingDay",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/WorkingDaysUpdateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/WorkingDaysUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update a Working Day",
        "tags": ["Working days"],
        "x-alternative-operation-id": "update_8"
      }
    },
    "/v1/workingdays/template": {
      "get": {
        "description": "This is a convenience resource. It can be useful when building maintenance user interface screens for working days.\n\nExample Request:\n\nworkingdays/template",
        "operationId": "retrieveTemplateWorkingDays",
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/WorkingDaysData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Working Days Template",
        "tags": ["Working days"],
        "x-alternative-operation-id": "template_4"
      }
    },
    "/v1/{entityType}/{entityId}/calendars": {
      "get": {
        "operationId": "retrieveCalendarsByEntityId",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "calendarType",
            "schema": { "type": "string", "default": "all" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/CalendarData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Calendars by Entity",
        "tags": ["Calendar"],
        "x-alternative-operation-id": "retrieveCalendarsByEntity"
      },
      "post": {
        "operationId": "createCalendar",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/CalendarRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create a Calendar",
        "tags": ["Calendar"]
      }
    },
    "/v1/{entityType}/{entityId}/calendars/template": {
      "get": {
        "operationId": "retrieveTemplateCalendar",
        "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": { "$ref": "#/components/schemas/CalendarData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Calendar Template",
        "tags": ["Calendar"],
        "x-alternative-operation-id": "retrieveNewCalendarDetails"
      }
    },
    "/v1/{entityType}/{entityId}/calendars/{calendarId}": {
      "delete": {
        "operationId": "deleteCalendar",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "calendarId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete a Calendar",
        "tags": ["Calendar"]
      },
      "get": {
        "operationId": "retrieveCalendar",
        "parameters": [
          {
            "in": "path",
            "name": "calendarId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "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": { "$ref": "#/components/schemas/CalendarData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a Calendar",
        "tags": ["Calendar"]
      },
      "put": {
        "operationId": "updateCalendar",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "calendarId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/CommandProcessingResult" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update a Calendar",
        "tags": ["Calendar"]
      }
    },
    "/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"]
      },
      "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" },
                  "expiryDate": { "type": "string" },
                  "file": { "$ref": "#/components/schemas/FormDataBodyPart" },
                  "issuanceDate": { "type": "string" },
                  "name": { "type": "string" }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DocumentCreateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a Document",
        "tags": ["Documents"]
      }
    },
    "/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"]
      },
      "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"]
      },
      "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" },
                  "expiryDate": { "type": "string" },
                  "file": { "$ref": "#/components/schemas/FormDataBodyPart" },
                  "issuanceDate": { "type": "string" },
                  "name": { "type": "string" }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DocumentUpdateResponse" }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a Document",
        "tags": ["Documents"]
      }
    },
    "/v1/{entityType}/{entityId}/documents/{documentId}/attachment": {
      "get": {
        "description": "Request used to download the file associated with the document\n\nExample Requests:\n\n- clients/1/documents/1/attachment\n- loans/1/documents/1/inline\n",
        "operationId": "downloadFile",
        "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": { "description": "Not Shown: The corresponding Binary file" } },
        "summary": "Retrieve Binary File associated with Document",
        "tags": ["Documents"]
      }
    },
    "/v1/{entityType}/{entityId}/images": {
      "delete": {
        "deprecated": true,
        "operationId": "deleteImage",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "*/*": { "schema": { "$ref": "#/components/schemas/ImageDeleteResponse" } }
            },
            "description": "default response"
          }
        }
      },
      "get": {
        "deprecated": true,
        "operationId": "retrieveImage",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "maxWidth", "schema": { "type": "integer", "format": "int32" } },
          {
            "in": "query",
            "name": "maxHeight",
            "schema": { "type": "integer", "format": "int32" }
          },
          { "in": "query", "name": "output", "schema": { "type": "string" } },
          { "in": "header", "name": "Accept", "schema": { "type": "string" } }
        ],
        "responses": { "default": { "content": { "*/*": {} }, "description": "default response" } }
      },
      "post": {
        "deprecated": true,
        "operationId": "createImage_1",
        "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": { "file": { "$ref": "#/components/schemas/FormDataBodyPart" } }
              }
            }
          }
        },
        "responses": { "200": { "description": "Not Shown (multi-part form data)" } }
      },
      "put": {
        "deprecated": true,
        "operationId": "updateImage_1",
        "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" } } },
          "description": "Update image"
        },
        "responses": {
          "default": {
            "content": {
              "*/*": { "schema": { "$ref": "#/components/schemas/ImageCreateResponse" } }
            },
            "description": "default response"
          }
        }
      }
    },
    "/v1/{entityType}/{entityId}/meetings": {
      "get": {
        "operationId": "retrieveAllMeetings",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/MeetingData" }
                }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Meetings",
        "tags": ["Meetings"],
        "x-alternative-operation-id": "retrieveMeetings"
      },
      "post": {
        "operationId": "createMeeting",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/MeetingCreateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/MeetingCreateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Create a Meeting",
        "tags": ["Meetings"]
      }
    },
    "/v1/{entityType}/{entityId}/meetings/template": {
      "get": {
        "operationId": "retrieveTemplateMeeting",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "query",
            "name": "calendarId",
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/MeetingData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve Meeting Template",
        "tags": ["Meetings"],
        "x-alternative-operation-id": "template_11"
      }
    },
    "/v1/{entityType}/{entityId}/meetings/{meetingId}": {
      "delete": {
        "operationId": "deleteMeeting",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "meetingId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/MeetingDeleteResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete a Meeting",
        "tags": ["Meetings"]
      },
      "get": {
        "operationId": "retrieveOneMeeting",
        "parameters": [
          {
            "in": "path",
            "name": "meetingId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "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": { "$ref": "#/components/schemas/MeetingData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a Meeting",
        "tags": ["Meetings"],
        "x-alternative-operation-id": "retrieveMeeting"
      },
      "post": {
        "operationId": "updateMeetingAttendance",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "meetingId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "command", "schema": { "type": "string" } }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/MeetingAttendanceUpdateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/MeetingAttendanceUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update Meeting Attendance",
        "tags": ["Meetings"],
        "x-alternative-operation-id": "performMeetingCommands"
      },
      "put": {
        "operationId": "updateMeeting",
        "parameters": [
          { "in": "path", "name": "entityType", "required": true, "schema": { "type": "string" } },
          {
            "in": "path",
            "name": "entityId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "meetingId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/MeetingUpdateRequest" }
            }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/MeetingUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update a Meeting",
        "tags": ["Meetings"]
      }
    },
    "/v1/{resourceType}/{resourceId}/notes": {
      "get": {
        "description": "Retrieves a resource's notes\n\nNote: results are returned in descending createOn order.\n\nExample Requests:\n\n- clients/2/notes\n- groups/2/notes?fields=note,createdOn,createdByUsername\n",
        "operationId": "retrieveNotesByResource",
        "parameters": [
          {
            "in": "path",
            "name": "resourceType",
            "required": true,
            "schema": { "type": "string", "pattern": ".+" }
          },
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteData" } }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a Resource's description",
        "tags": ["Notes"]
      },
      "post": {
        "description": "Adds a new note to a supported resource.\n\nExample Requests:\n\n- clients/1/notes\n- groups/1/notes\n",
        "operationId": "addNewNote",
        "parameters": [
          {
            "in": "path",
            "name": "resourceType",
            "required": true,
            "schema": { "type": "string", "pattern": ".+" }
          },
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/NoteCreateRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/NoteCreateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Add a Resource Note",
        "tags": ["Notes"]
      }
    },
    "/v1/{resourceType}/{resourceId}/notes/{noteId}": {
      "delete": {
        "description": "Deletes a Resource Note\n",
        "operationId": "deleteNote",
        "parameters": [
          {
            "in": "path",
            "name": "resourceType",
            "required": true,
            "schema": { "type": "string", "pattern": ".+" }
          },
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "noteId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/NoteDeleteResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Delete a Resource Note",
        "tags": ["Notes"]
      },
      "get": {
        "description": "Retrieves a resource Note\n\nExample Requests:\n\n- clients/1/notes/76\n- groups/1/notes/20\n- clients/1/notes/76?fields=note,createdOn,createdByUsername\n- groups/1/notes/20?fields=note,createdOn,createdByUsername\n",
        "operationId": "retrieveNote",
        "parameters": [
          {
            "in": "path",
            "name": "resourceType",
            "required": true,
            "schema": { "type": "string", "pattern": ".+" }
          },
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "noteId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/NoteData" } }
            },
            "description": "default response"
          }
        },
        "summary": "Retrieve a Resource Note",
        "tags": ["Notes"]
      },
      "put": {
        "description": "Updates a Resource Note\n",
        "operationId": "updateNote",
        "parameters": [
          {
            "in": "path",
            "name": "resourceType",
            "required": true,
            "schema": { "type": "string", "pattern": ".+" }
          },
          {
            "in": "path",
            "name": "resourceId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "in": "path",
            "name": "noteId",
            "required": true,
            "schema": { "type": "integer", "format": "int64" }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": { "schema": { "$ref": "#/components/schemas/NoteUpdateRequest" } }
          }
        },
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/NoteUpdateResponse" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "Update a Resource Note",
        "tags": ["Notes"]
      }
    },
    "/v2/audits": {
      "get": {
        "description": "Get a paged list of audits that match the criteria supplied and sorted by audit id in descending order, and are within the requestors' data scope. Unlike the v1 endpoint, this endpoint always returns a paged response containing totalFilteredRecords and pageItems.\n\nExample Requests:\n\naudits\n\naudits?fields=madeOnDate,maker,processingResult\n\naudits?officeId=1\n\naudits?officeId=1&includeJson=true",
        "operationId": "retrieveAllAuditsV2",
        "parameters": [
          { "in": "query", "name": "actionName", "schema": { "type": "string" } },
          { "in": "query", "name": "entityName", "schema": { "type": "string" } },
          {
            "in": "query",
            "name": "resourceId",
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "makerId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "makerDateTimeFrom", "schema": { "type": "string" } },
          { "in": "query", "name": "makerDateTimeTo", "schema": { "type": "string" } },
          {
            "in": "query",
            "name": "checkerId",
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "checkerDateTimeFrom", "schema": { "type": "string" } },
          { "in": "query", "name": "checkerDateTimeTo", "schema": { "type": "string" } },
          { "in": "query", "name": "status", "schema": { "type": "string" } },
          { "in": "query", "name": "clientId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "loanId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "officeId", "schema": { "type": "integer", "format": "int64" } },
          { "in": "query", "name": "groupId", "schema": { "type": "integer", "format": "int64" } },
          {
            "in": "query",
            "name": "savingsAccountId",
            "schema": { "type": "integer", "format": "int64" }
          },
          { "in": "query", "name": "processingResult", "schema": { "type": "string" } },
          { "in": "query", "name": "dateFormat", "schema": { "type": "string" } },
          { "in": "query", "name": "locale", "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" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/PageAuditData" } }
            },
            "description": "default response"
          }
        },
        "summary": "List Audits",
        "tags": ["AuditsV2"]
      }
    },
    "/v2/centers": {
      "get": {
        "description": "Get a paged list of centers that match the criteria supplied and sorted by hierarchy. Unlike the v1 endpoint, this endpoint always returns a paged response containing totalFilteredRecords and pageItems.\n\nExample Requests:\n\ncenters\n\ncenters?fields=name,officeName,joinedDate\n\ncenters?offset=10&limit=50\n\ncenters?orderBy=name&sortOrder=DESC",
        "operationId": "retrieveAllCentersV2",
        "parameters": [
          {
            "description": "officeId",
            "in": "query",
            "name": "officeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "staffId",
            "in": "query",
            "name": "staffId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "externalId",
            "in": "query",
            "name": "externalId",
            "schema": { "type": "string" }
          },
          { "description": "name", "in": "query", "name": "name", "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" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": { "schema": { "$ref": "#/components/schemas/PageCenterData" } }
            },
            "description": "default response"
          }
        },
        "summary": "List Centers",
        "tags": ["CentersV2"]
      }
    },
    "/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": ["ClientSearchV2"],
        "x-alternative-operation-id": "searchByText"
      }
    },
    "/v2/fixeddepositaccounts": {
      "get": {
        "description": "Get a paged list of fixed deposit accounts. Unlike the v1 endpoint, this endpoint always returns a paged response containing totalFilteredRecords and pageItems.\n\nExample Requests:\n\nfixeddepositaccounts\n\nfixeddepositaccounts?fields=name",
        "operationId": "retrieveAllFixedDepositAccountsV2",
        "parameters": [
          {
            "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" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PageDepositAccountData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Fixed deposit applications/accounts",
        "tags": ["FixedDepositAccountsV2"]
      }
    },
    "/v2/groups": {
      "get": {
        "description": "Get a paged list of groups that match the criteria supplied and sorted by hierarchy. Unlike the v1 endpoint, this endpoint always returns a paged response containing totalFilteredRecords and pageItems.\n\nExample Requests:\n\ngroups\n\ngroups?fields=name,officeName,joinedDate\n\ngroups?offset=10&limit=50\n\ngroups?orderBy=name&sortOrder=DESC",
        "operationId": "retrieveAllGroupsV2",
        "parameters": [
          {
            "description": "officeId",
            "in": "query",
            "name": "officeId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "staffId",
            "in": "query",
            "name": "staffId",
            "schema": { "type": "integer", "format": "int64" }
          },
          {
            "description": "externalId",
            "in": "query",
            "name": "externalId",
            "schema": { "type": "string" }
          },
          { "description": "name", "in": "query", "name": "name", "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" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PageGroupGeneralData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Groups",
        "tags": ["GroupsV2"]
      }
    },
    "/v2/recurringdepositaccounts": {
      "get": {
        "description": "Get a paged list of recurring deposit accounts. Unlike the v1 endpoint, this endpoint always returns a paged response containing totalFilteredRecords and pageItems.\n\nExample Requests:\n\nrecurringdepositaccounts\n\nrecurringdepositaccounts?fields=name",
        "operationId": "retrieveAllRecurringDepositAccountsV2",
        "parameters": [
          {
            "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" }
          }
        ],
        "responses": {
          "default": {
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/PageDepositAccountData" }
              }
            },
            "description": "default response"
          }
        },
        "summary": "List Recurring deposit applications/accounts",
        "tags": ["RecurringDepositAccountsV2"]
      }
    }
  },
  "components": {
    "schemas": {
      "AccountChargesRequest": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "chargeId": { "type": "integer", "format": "int64" }
        }
      },
      "AccountRequest": {
        "type": "object",
        "properties": {
          "allowDividendCalculationForInactiveClients": { "type": "string" },
          "applicationDate": { "type": "string" },
          "approvedDate": { "type": "string" },
          "charges": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AccountChargesRequest" }
          },
          "clientId": { "type": "integer", "format": "int64" },
          "currencyCode": { "type": "string" },
          "dateFormat": { "type": "string" },
          "digitsAfterDecimal": { "type": "integer", "format": "int32" },
          "externalId": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "inMultiplesOf": { "type": "string" },
          "locale": { "type": "string" },
          "lockinPeriodFrequency": { "type": "integer", "format": "int32" },
          "lockinPeriodFrequencyType": { "type": "string" },
          "minimumActivePeriod": { "type": "integer", "format": "int32" },
          "minimumActivePeriodFrequencyType": { "type": "string" },
          "numberOfShares": { "type": "integer", "format": "int64" },
          "productId": { "type": "integer", "format": "int64" },
          "purchasedDate": { "type": "string" },
          "requestedShares": { "type": "integer", "format": "int64" },
          "savingsAccountId": { "type": "integer", "format": "int64" },
          "submittedDate": { "type": "string" },
          "unitPrice": { "type": "number" }
        }
      },
      "AccountRuleRequest": {
        "type": "object",
        "properties": {
          "accountToCredit": { "type": "integer", "format": "int64" },
          "accountToDebit": { "type": "integer", "format": "int64" },
          "description": { "type": "string" },
          "name": { "type": "string" },
          "officeId": { "type": "integer", "format": "int64" }
        }
      },
      "AccountTransferData": {
        "type": "object",
        "properties": {
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "fromAccount": { "$ref": "#/components/schemas/PortfolioAccountData" },
          "fromAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PortfolioAccountData" }
          },
          "fromAccountType": { "$ref": "#/components/schemas/EnumOptionData" },
          "fromAccountTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "fromClient": { "$ref": "#/components/schemas/ClientData" },
          "fromClientOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ClientData" }
          },
          "fromOffice": { "$ref": "#/components/schemas/OfficeData" },
          "fromOfficeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/OfficeData" }
          },
          "id": { "type": "integer", "format": "int64" },
          "paymentDetailData": { "$ref": "#/components/schemas/PaymentDetailData" },
          "reversed": { "type": "boolean" },
          "toAccount": { "$ref": "#/components/schemas/PortfolioAccountData" },
          "toAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PortfolioAccountData" }
          },
          "toAccountType": { "$ref": "#/components/schemas/EnumOptionData" },
          "toAccountTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "toClient": { "$ref": "#/components/schemas/ClientData" },
          "toClientOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ClientData" }
          },
          "toOffice": { "$ref": "#/components/schemas/OfficeData" },
          "toOfficeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/OfficeData" }
          },
          "transferAmount": { "type": "number" },
          "transferDate": { "type": "string", "format": "date" },
          "transferDescription": { "type": "string" }
        }
      },
      "AccountTransferRequest": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string" },
          "bankNumber": { "type": "string" },
          "checkNumber": { "type": "string" },
          "dateFormat": { "type": "string" },
          "fromAccountId": { "type": "string" },
          "fromAccountType": { "type": "string" },
          "fromClientId": { "type": "string" },
          "fromOfficeId": { "type": "string" },
          "locale": { "type": "string" },
          "paymentTypeId": { "type": "integer", "format": "int64" },
          "receiptNumber": { "type": "string" },
          "routingCode": { "type": "string" },
          "toAccountId": { "type": "string" },
          "toAccountType": { "type": "string" },
          "toClientId": { "type": "string" },
          "toOfficeId": { "type": "string" },
          "transferAmount": { "type": "string" },
          "transferDate": { "type": "string" },
          "transferDescription": { "type": "string" }
        }
      },
      "AccountingRuleData": {
        "type": "object",
        "properties": {
          "allowMultipleCreditEntries": { "type": "boolean" },
          "allowMultipleDebitEntries": { "type": "boolean" },
          "allowedAccounts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GLAccountData" }
          },
          "allowedCreditTagOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "allowedDebitTagOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "allowedOffices": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/OfficeData" }
          },
          "creditAccounts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GLAccountDataForLookup" }
          },
          "creditTags": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AccountingTagRuleData" }
          },
          "debitAccounts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GLAccountDataForLookup" }
          },
          "debitTags": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AccountingTagRuleData" }
          },
          "description": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "officeId": { "type": "integer", "format": "int64" },
          "officeName": { "type": "string" },
          "systemDefined": { "type": "boolean" }
        }
      },
      "AccountingTagRuleData": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "tag": { "$ref": "#/components/schemas/CodeValueData" },
          "transactionType": { "$ref": "#/components/schemas/EnumOptionData" }
        }
      },
      "AdHocData": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean" },
          "createdBy": { "type": "string" },
          "createdById": { "type": "integer", "format": "int64" },
          "createdOn": { "type": "string", "format": "date-time" },
          "email": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "isActive": { "type": "boolean" },
          "lastRun": { "type": "string", "format": "date-time" },
          "name": { "type": "string" },
          "query": { "type": "string" },
          "reportRunEvery": { "type": "integer", "format": "int64" },
          "reportRunFrequencies": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "reportRunFrequency": { "type": "integer", "format": "int64" },
          "tableFields": { "type": "string" },
          "tableName": { "type": "string" },
          "updatedById": { "type": "integer", "format": "int64" },
          "updatedOn": { "type": "string", "format": "date-time" }
        }
      },
      "AdHocRequest": {
        "type": "object",
        "properties": {
          "email": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "isActive": { "type": "boolean" },
          "name": { "type": "string" },
          "query": { "type": "string" },
          "reportRunEvery": { "type": "integer", "format": "int64" },
          "reportRunFrequency": { "type": "integer", "format": "int64" },
          "tableFields": { "type": "string" },
          "tableName": { "type": "string" }
        }
      },
      "AdHocSearchQueryData": {
        "type": "object",
        "properties": {
          "count": { "type": "integer", "format": "int32" },
          "loanOutStanding": { "type": "number" },
          "loanProductName": { "type": "string" },
          "loanProducts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductData" }
          },
          "officeName": { "type": "string" },
          "offices": { "type": "array", "items": { "$ref": "#/components/schemas/OfficeData" } },
          "percentage": { "type": "number", "format": "double" }
        }
      },
      "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" }
        }
      },
      "AdvancedMappingToExpenseAccountData": {
        "type": "object",
        "properties": {
          "expenseAccount": { "$ref": "#/components/schemas/GLAccountData" },
          "reasonCodeValue": { "$ref": "#/components/schemas/CodeValueData" }
        }
      },
      "AdvancedPaymentData": {
        "type": "object",
        "properties": {
          "futureInstallmentAllocationRule": { "type": "string" },
          "paymentAllocationOrder": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PaymentAllocationOrder" }
          },
          "transactionType": { "type": "string" }
        }
      },
      "AdvancedQueryData": {
        "type": "object",
        "properties": {
          "columnFilters": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ColumnFilterData" }
          },
          "nonNullFilters": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ColumnFilterData" }
          },
          "nonNullResultColumns": { "type": "array", "items": { "type": "string" } },
          "resultColumns": { "type": "array", "items": { "type": "string" } }
        }
      },
      "AdvancedQueryRequest": {
        "type": "object",
        "properties": {
          "baseQuery": { "$ref": "#/components/schemas/AdvancedQueryData" },
          "datatableQueries": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/TableQueryData" }
          }
        }
      },
      "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 }
        }
      },
      "AmortizationMappingData": {
        "type": "object",
        "properties": {
          "amortizationLoanTransactionExternalId": {
            "type": "string",
            "example": "amort-txn-ext-789"
          },
          "amortizationLoanTransactionId": { "type": "integer", "format": "int64", "example": 789 },
          "amount": { "type": "number", "example": 10 },
          "date": { "type": "string", "format": "date", "example": "2024-01-15" },
          "type": {
            "type": "string",
            "description": "AM for amortization, AM_ADJ for amortization adjustment",
            "example": "AM"
          }
        }
      },
      "AppUser": {
        "type": "object",
        "properties": {
          "accountNonExpired": { "type": "boolean" },
          "accountNonLocked": { "type": "boolean" },
          "authorities": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GrantedAuthority" }
          },
          "bypassUser": { "type": "boolean" },
          "cannotChangePassword": { "type": "boolean" },
          "checkerSuperUser": { "type": "boolean" },
          "credentialsNonExpired": { "type": "boolean" },
          "deleted": { "type": "boolean" },
          "displayName": { "type": "string" },
          "email": { "type": "string" },
          "enabled": { "type": "boolean" },
          "failedLoginAttempts": { "type": "integer", "format": "int32" },
          "firstname": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "lastTimePasswordUpdated": { "type": "string", "format": "date" },
          "lastname": { "type": "string" },
          "loginRetryLimitEnabled": { "type": "boolean" },
          "new": { "type": "boolean" },
          "notEnabled": { "type": "boolean" },
          "office": { "$ref": "#/components/schemas/Office" },
          "password": { "type": "string" },
          "passwordNeverExpires": { "type": "boolean" },
          "passwordResetAllowed": { "type": "boolean" },
          "passwordResetRequired": { "type": "boolean" },
          "roles": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/Role" },
            "uniqueItems": true
          },
          "staff": { "$ref": "#/components/schemas/Staff" },
          "staffDisplayName": { "type": "string" },
          "staffId": { "type": "integer", "format": "int64" },
          "systemUser": { "type": "boolean" },
          "temporaryPassword": { "type": "string" },
          "temporaryPasswordExpired": { "type": "boolean" },
          "username": { "type": "string" }
        }
      },
      "AppUserData": {
        "type": "object",
        "properties": {
          "clients": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ClientData" },
            "uniqueItems": true,
            "writeOnly": true
          },
          "rowIndex": { "type": "integer", "format": "int32" }
        }
      },
      "AuditData": {
        "type": "object",
        "properties": {
          "actionName": { "type": "string" },
          "checkedOnDate": { "type": "string", "format": "date-time" },
          "checker": { "type": "string" },
          "clientId": { "type": "integer", "format": "int64" },
          "clientName": { "type": "string" },
          "commandAsJson": { "type": "string" },
          "entityName": { "type": "string" },
          "groupLevelName": { "type": "string" },
          "groupName": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "ip": { "type": "string" },
          "loanAccountNo": { "type": "string" },
          "loanId": { "type": "integer", "format": "int64" },
          "madeOnDate": { "type": "string", "format": "date-time" },
          "maker": { "type": "string" },
          "officeName": { "type": "string" },
          "processingResult": { "type": "string" },
          "resourceId": { "type": "integer", "format": "int64" },
          "savingsAccountNo": { "type": "string" },
          "subresourceId": { "type": "integer", "format": "int64" },
          "url": { "type": "string" }
        }
      },
      "AuditSearchData": {
        "type": "object",
        "properties": {
          "actionNames": { "type": "array", "items": { "type": "string" } },
          "appUsers": { "type": "array", "items": { "$ref": "#/components/schemas/AppUserData" } },
          "entityNames": { "type": "array", "items": { "type": "string" } },
          "statuses": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ProcessingResultLookup" }
          }
        }
      },
      "BatchRequest": {
        "type": "object",
        "properties": {
          "body": { "type": "string" },
          "headers": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/Header" },
            "uniqueItems": true
          },
          "method": { "type": "string" },
          "reference": { "type": "integer", "format": "int64" },
          "relativeUrl": { "type": "string" },
          "requestId": { "type": "integer", "format": "int64" }
        }
      },
      "BatchResponse": {
        "type": "object",
        "properties": {
          "body": { "type": "string" },
          "headers": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/Header" },
            "uniqueItems": true
          },
          "requestId": { "type": "integer", "format": "int64" },
          "statusCode": { "type": "integer", "format": "int32" }
        }
      },
      "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" }
        }
      },
      "BusinessDateResponse": {
        "type": "object",
        "properties": {
          "date": { "type": "string", "format": "date" },
          "description": { "type": "string" },
          "type": { "type": "string", "enum": ["BUSINESS_DATE", "COB_DATE"] }
        }
      },
      "BusinessDateUpdateRequest": {
        "type": "object",
        "properties": {
          "date": { "type": "string", "minLength": 1 },
          "dateFormat": { "type": "string", "minLength": 1 },
          "locale": { "type": "string", "minLength": 1 },
          "type": {
            "type": "string",
            "description": "Type of business date",
            "enum": ["BUSINESS_DATE", "COB_DATE"],
            "example": "BUSINESS_DATE"
          }
        },
        "required": ["date", "dateFormat", "locale", "type"]
      },
      "BusinessDateUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": {
            "type": "object",
            "additionalProperties": { "type": "string", "format": "date" }
          },
          "date": { "type": "string", "format": "date" },
          "description": { "type": "string" },
          "type": { "type": "string", "enum": ["BUSINESS_DATE", "COB_DATE"] }
        }
      },
      "BusinessStep": {
        "type": "object",
        "properties": {
          "order": { "type": "integer", "format": "int64" },
          "stepName": { "type": "string" }
        }
      },
      "BusinessStepDetail": {
        "type": "object",
        "properties": { "stepDescription": { "type": "string" }, "stepName": { "type": "string" } }
      },
      "BusinessStepRequest": {
        "type": "object",
        "properties": {
          "businessSteps": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/BusinessStep" }
          }
        }
      },
      "BuyDownFeeAmortizationDetails": {
        "type": "object",
        "properties": {
          "adjustedAmount": { "type": "number" },
          "amortizedAmount": { "type": "number" },
          "buyDownFeeAmount": { "type": "number" },
          "buyDownFeeDate": { "type": "string", "format": "date" },
          "chargedOffAmount": { "type": "number" },
          "id": { "type": "integer", "format": "int64" },
          "loanId": { "type": "integer", "format": "int64" },
          "notYetAmortizedAmount": { "type": "number" },
          "transactionId": { "type": "integer", "format": "int64" }
        }
      },
      "COBPartition": {
        "type": "object",
        "properties": {
          "count": { "type": "integer", "format": "int64" },
          "maxId": { "type": "integer", "format": "int64" },
          "minId": { "type": "integer", "format": "int64" },
          "pageNo": { "type": "integer", "format": "int64" }
        }
      },
      "CacheData": {
        "type": "object",
        "properties": {
          "cacheType": { "$ref": "#/components/schemas/EnumOptionData" },
          "enabled": { "type": "boolean" }
        }
      },
      "CacheSwitchRequest": {
        "type": "object",
        "properties": { "cacheType": { "type": "integer", "format": "int32" } },
        "required": ["cacheType"]
      },
      "CacheSwitchResponse": {
        "type": "object",
        "properties": {
          "cacheType": { "type": "integer", "format": "int32" },
          "changes": { "type": "object", "additionalProperties": { "type": "object" } }
        }
      },
      "CalculateFixedDepositInterestResponse": {
        "type": "object",
        "description": "CalculateFixedDepositInterestResponse",
        "properties": {
          "maturityAmount": { "type": "number", "example": 10511.61 },
          "warning": { "type": "string", "example": "Accuracy Warning" }
        }
      },
      "CalendarData": {
        "type": "object",
        "properties": {
          "calendarInstanceId": { "type": "integer", "format": "int64" },
          "calendarTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "centerId": { "type": "string" },
          "createdByUserId": { "type": "integer", "format": "int64" },
          "createdByUsername": { "type": "string" },
          "createdDate": { "type": "string", "format": "date-time" },
          "dateFormat": { "type": "string" },
          "description": { "type": "string" },
          "duration": { "type": "integer", "format": "int32" },
          "endDate": { "type": "string", "format": "date" },
          "entityId": { "type": "integer", "format": "int64" },
          "entityType": { "$ref": "#/components/schemas/EnumOptionData" },
          "entityTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "firstReminder": { "type": "integer", "format": "int32" },
          "frequency": { "$ref": "#/components/schemas/EnumOptionData" },
          "frequencyNthDayTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "frequencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "humanReadable": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "interval": { "type": "integer", "format": "int32" },
          "lastUpdatedByUserId": { "type": "integer", "format": "int64" },
          "lastUpdatedByUsername": { "type": "string" },
          "lastUpdatedDate": { "type": "string", "format": "date-time" },
          "locale": { "type": "string" },
          "location": { "type": "string" },
          "meetingTime": { "$ref": "#/components/schemas/LocalTime" },
          "nextTenRecurringDates": {
            "type": "array",
            "items": { "type": "string", "format": "date" }
          },
          "recentEligibleMeetingDate": { "type": "string", "format": "date" },
          "recurrence": { "type": "string" },
          "recurringDates": { "type": "array", "items": { "type": "string", "format": "date" } },
          "remindBy": { "$ref": "#/components/schemas/EnumOptionData" },
          "remindByOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "repeating": { "type": "boolean" },
          "repeatsOnDay": { "$ref": "#/components/schemas/EnumOptionData" },
          "repeatsOnDayOfMonth": { "type": "integer", "format": "int32" },
          "repeatsOnDayOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "repeatsOnNthDayOfMonth": { "$ref": "#/components/schemas/EnumOptionData" },
          "rowIndex": { "type": "integer", "format": "int32" },
          "secondReminder": { "type": "integer", "format": "int32" },
          "startDate": { "type": "string", "format": "date" },
          "title": { "type": "string" },
          "type": { "$ref": "#/components/schemas/EnumOptionData" },
          "typeId": { "type": "string" }
        }
      },
      "CalendarRequest": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string" },
          "frequency": { "type": "string" },
          "interval": { "type": "string" },
          "locale": { "type": "string" },
          "repeating": { "type": "string" },
          "repeatsOnDay": { "type": "string" },
          "startDate": { "type": "string" },
          "title": { "type": "string" },
          "typeId": { "type": "string" }
        }
      },
      "CampaignPreviewData": {
        "type": "object",
        "properties": {
          "campaignMessage": { "type": "string" },
          "totalNumberOfMessages": { "type": "integer", "format": "int32" }
        }
      },
      "CapitalizedIncomeDetails": {
        "type": "object",
        "properties": {
          "amortizedAmount": { "type": "number" },
          "amount": { "type": "number" },
          "amountAdjustment": { "type": "number" },
          "chargedOffAmount": { "type": "number" },
          "unrecognizedAmount": { "type": "number" }
        }
      },
      "CashierData": {
        "type": "object",
        "properties": {
          "description": { "type": "string" },
          "endDate": { "type": "string", "format": "date" },
          "endTime": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "isFullDay": { "type": "boolean" },
          "officeId": { "type": "integer", "format": "int64" },
          "officeName": { "type": "string" },
          "staffId": { "type": "integer", "format": "int64" },
          "staffName": { "type": "string" },
          "staffOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StaffData" }
          },
          "startDate": { "type": "string", "format": "date" },
          "startTime": { "type": "string" },
          "tellerId": { "type": "integer", "format": "int64" },
          "tellerName": { "type": "string" }
        }
      },
      "CashierTransactionData": {
        "type": "object",
        "properties": {
          "cashierData": { "$ref": "#/components/schemas/CashierData" },
          "cashierId": { "type": "integer", "format": "int64" },
          "cashierName": { "type": "string" },
          "createdDate": { "type": "string", "format": "date-time" },
          "currencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CurrencyData" }
          },
          "endDate": { "type": "string", "format": "date" },
          "entityId": { "type": "integer", "format": "int64" },
          "entityType": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "officeId": { "type": "integer", "format": "int64" },
          "officeName": { "type": "string" },
          "startDate": { "type": "string", "format": "date" },
          "tellerId": { "type": "integer", "format": "int64" },
          "tellerName": { "type": "string" },
          "txnAmount": { "type": "number" },
          "txnDate": { "type": "string", "format": "date" },
          "txnNote": { "type": "string" },
          "txnType": { "$ref": "#/components/schemas/CashierTxnType" }
        }
      },
      "CashierTxnType": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int32" },
          "value": { "type": "string" }
        }
      },
      "CenterData": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "string" },
          "collectionMeetingCalendar": { "$ref": "#/components/schemas/CalendarData" },
          "datatables": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DatatableData" },
            "writeOnly": true
          },
          "externalId": { "type": "string" },
          "hierarchy": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "officeName": { "type": "string" },
          "rowIndex": { "type": "integer", "format": "int32" },
          "staffName": { "type": "string" }
        }
      },
      "ChangeInstanceModeRequest": {
        "type": "object",
        "description": "ChangeInstanceModeRequest",
        "properties": {
          "batchManagerEnabled": { "type": "boolean", "example": true },
          "batchWorkerEnabled": { "type": "boolean", "example": true },
          "readEnabled": { "type": "boolean", "example": true },
          "writeEnabled": { "type": "boolean", "example": true }
        },
        "required": ["batchManagerEnabled", "batchWorkerEnabled", "readEnabled", "writeEnabled"]
      },
      "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 } }
      },
      "Changes": {
        "type": "object",
        "properties": { "locale": { "type": "string" }, "quantity": { "type": "number" } }
      },
      "Charge": {
        "type": "object",
        "properties": {
          "account": { "$ref": "#/components/schemas/GLAccount" },
          "active": { "type": "boolean" },
          "allowedClientChargeCalculationType": { "type": "boolean" },
          "allowedClientChargeTime": { "type": "boolean" },
          "allowedLoanChargeTime": { "type": "boolean" },
          "allowedSavingsChargeCalculationType": { "type": "boolean" },
          "allowedSavingsChargeTime": { "type": "boolean" },
          "amount": { "type": "number" },
          "annualFee": { "type": "boolean" },
          "chargeCalculation": { "type": "integer", "format": "int32" },
          "chargePaymentMode": { "type": "integer", "format": "int32" },
          "chargeTimeType": { "type": "integer", "format": "int32" },
          "clientCharge": { "type": "boolean" },
          "currencyCode": { "type": "string" },
          "deleted": { "type": "boolean" },
          "disbursementCharge": { "type": "boolean" },
          "enableFreeWithdrawal": { "type": "boolean" },
          "enablePaymentType": { "type": "boolean" },
          "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" }
            }
          },
          "frequencyFreeWithdrawalCharge": { "type": "integer", "format": "int32" },
          "id": { "type": "integer", "format": "int64" },
          "incomeAccountId": { "type": "integer", "format": "int64" },
          "loanCharge": { "type": "boolean" },
          "maxCap": { "type": "number" },
          "minCap": { "type": "number" },
          "monthlyFee": { "type": "boolean" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "overdueInstallment": { "type": "boolean" },
          "paymentType": { "$ref": "#/components/schemas/PaymentType" },
          "penalty": { "type": "boolean" },
          "percentageOfApprovedAmount": { "type": "boolean" },
          "percentageOfDisbursementAmount": { "type": "boolean" },
          "restartFrequency": { "type": "integer", "format": "int32" },
          "restartFrequencyEnum": { "type": "integer", "format": "int32" },
          "savingsCharge": { "type": "boolean" },
          "taxGroup": { "$ref": "#/components/schemas/TaxGroup" },
          "workingCapitalLoanCharge": { "type": "boolean" }
        }
      },
      "ChargeData": {
        "type": "object",
        "properties": {
          "accountMappingForChargeConfig": { "type": "string" },
          "active": { "type": "boolean" },
          "amount": { "type": "number" },
          "assetAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GLAccountData" }
          },
          "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" }
          },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "currencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CurrencyData" }
          },
          "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" },
          "chargeAppliesTo": { "type": "integer", "format": "int32" },
          "chargeCalculationType": { "type": "integer", "format": "int32" },
          "chargePaymentMode": { "type": "integer", "format": "int32" },
          "chargeTimeType": { "type": "integer", "format": "int32" },
          "currencyCode": { "type": "string" },
          "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" }
        }
      },
      "ChargeToGLAccountMapper": {
        "type": "object",
        "properties": {
          "charge": { "$ref": "#/components/schemas/ChargeData" },
          "incomeAccount": { "$ref": "#/components/schemas/GLAccountData" }
        }
      },
      "ClassificationToGLAccountData": {
        "type": "object",
        "properties": {
          "classificationCodeValue": { "$ref": "#/components/schemas/CodeValueData" },
          "incomeAccount": { "$ref": "#/components/schemas/GLAccountData" }
        }
      },
      "Client": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string" },
          "activatedBy": { "$ref": "#/components/schemas/AppUser" },
          "activationDate": { "type": "string", "format": "date" },
          "active": { "type": "boolean" },
          "clientClassification": { "$ref": "#/components/schemas/CodeValue" },
          "clientType": { "$ref": "#/components/schemas/CodeValue" },
          "closed": { "type": "boolean" },
          "closedBy": { "$ref": "#/components/schemas/AppUser" },
          "closureDate": { "type": "string", "format": "date" },
          "closureReason": { "$ref": "#/components/schemas/CodeValue" },
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "dateOfBirth": { "type": "string", "format": "date" },
          "displayName": { "type": "string" },
          "emailAddress": { "type": "string" },
          "externalId": { "$ref": "#/components/schemas/ExternalId" },
          "firstname": { "type": "string" },
          "fullname": { "type": "string" },
          "gender": { "$ref": "#/components/schemas/CodeValue" },
          "groups": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/Group" },
            "uniqueItems": true
          },
          "id": { "type": "integer", "format": "int64" },
          "identifiers": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ClientIdentifier" },
            "uniqueItems": true
          },
          "imageId": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "lastname": { "type": "string" },
          "legalForm": { "type": "integer", "format": "int32" },
          "middlename": { "type": "string" },
          "mobileNo": { "type": "string" },
          "new": { "type": "boolean" },
          "notActive": { "type": "boolean" },
          "notPending": { "type": "boolean" },
          "office": { "$ref": "#/components/schemas/Office" },
          "officeJoiningDate": { "type": "string", "format": "date" },
          "pending": { "type": "boolean" },
          "proposedTransferDate": { "type": "string", "format": "date" },
          "reactivateDate": { "type": "string", "format": "date" },
          "reactivatedBy": { "$ref": "#/components/schemas/AppUser" },
          "rejected": { "type": "boolean" },
          "rejectedBy": { "$ref": "#/components/schemas/AppUser" },
          "rejectedDate": { "type": "string", "format": "date" },
          "rejectionDate": { "type": "string", "format": "date" },
          "rejectionReason": { "$ref": "#/components/schemas/CodeValue" },
          "reopenedBy": { "$ref": "#/components/schemas/AppUser" },
          "reopenedDate": { "type": "string", "format": "date" },
          "savingsAccountId": { "type": "integer", "format": "int64" },
          "savingsProductId": { "type": "integer", "format": "int64" },
          "staff": { "$ref": "#/components/schemas/Staff" },
          "status": { "type": "integer", "format": "int32" },
          "subStatus": { "$ref": "#/components/schemas/CodeValue" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "transferInProgress": { "type": "boolean" },
          "transferInProgressOrOnHold": { "type": "boolean" },
          "transferOnHold": { "type": "boolean" },
          "transferToOffice": { "$ref": "#/components/schemas/Office" },
          "withdrawalDate": { "type": "string", "format": "date" },
          "withdrawalReason": { "$ref": "#/components/schemas/CodeValue" },
          "withdrawn": { "type": "boolean" },
          "withdrawnBy": { "$ref": "#/components/schemas/AppUser" }
        },
        "required": ["createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate"]
      },
      "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" },
          "street": { "type": "string" },
          "townVillage": { "type": "string" },
          "updatedBy": { "type": "string" },
          "updatedOn": { "type": "string" }
        }
      },
      "ClientCollateralCreateRequest": {
        "type": "object",
        "properties": {
          "collateralId": { "type": "integer", "format": "int64" },
          "locale": { "type": "string" },
          "quantity": { "type": "number" }
        }
      },
      "ClientCollateralCreateResponse": {
        "type": "object",
        "properties": {
          "clientId": { "type": "integer", "format": "int64" },
          "resourceId": { "type": "integer", "format": "int64" }
        }
      },
      "ClientCollateralDeleteResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "ClientCollateralManagementData": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "pctToBase": { "type": "number" },
          "quantity": { "type": "number" },
          "total": { "type": "number" },
          "totalCollateral": { "type": "number" },
          "unitPrice": { "type": "number" }
        }
      },
      "ClientCollateralUpdateRequest": {
        "type": "object",
        "properties": { "locale": { "type": "string" }, "quantity": { "type": "number" } }
      },
      "ClientCollateralUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "$ref": "#/components/schemas/Changes" },
          "clientId": { "type": "integer", "format": "int64" },
          "resourceId": { "type": "integer", "format": "int64" }
        }
      },
      "ClientData": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "string" },
          "activationDate": { "type": "string", "format": "date" },
          "active": { "type": "boolean" },
          "address": { "type": "array", "items": { "$ref": "#/components/schemas/AddressData" } },
          "clientClassification": { "$ref": "#/components/schemas/CodeValueData" },
          "clientClassificationId": { "type": "integer", "format": "int64" },
          "clientClassificationOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "clientCollateralManagements": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ClientCollateralManagementData" },
            "uniqueItems": true
          },
          "clientLegalFormOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "clientNonPersonConstitutionOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "clientNonPersonDetails": { "$ref": "#/components/schemas/ClientNonPersonData" },
          "clientNonPersonMainBusinessLineOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "clientType": { "$ref": "#/components/schemas/CodeValueData" },
          "clientTypeId": { "type": "integer", "format": "int64" },
          "clientTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "datatables": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DatatableData" }
          },
          "dateFormat": { "type": "string" },
          "dateOfBirth": { "type": "string", "format": "date" },
          "displayName": { "type": "string" },
          "emailAddress": { "type": "string" },
          "externalId": { "$ref": "#/components/schemas/ExternalId" },
          "familyMemberOptions": { "$ref": "#/components/schemas/ClientFamilyMembersData" },
          "firstname": { "type": "string" },
          "fullname": { "type": "string" },
          "gender": { "$ref": "#/components/schemas/CodeValueData" },
          "genderId": { "type": "integer", "format": "int64" },
          "genderOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "groups": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GroupGeneralData" }
          },
          "id": { "type": "integer", "format": "int64" },
          "imageId": { "type": "integer", "format": "int64" },
          "imagePresent": { "type": "boolean" },
          "isAddressEnabled": { "type": "boolean" },
          "isStaff": { "type": "boolean" },
          "lastname": { "type": "string" },
          "legalForm": { "$ref": "#/components/schemas/EnumOptionData" },
          "legalFormId": { "type": "integer", "format": "int64" },
          "locale": { "type": "string" },
          "middlename": { "type": "string" },
          "mobileNo": { "type": "string" },
          "narrations": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "officeId": { "type": "integer", "format": "int64" },
          "officeName": { "type": "string" },
          "officeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/OfficeData" }
          },
          "rowIndex": { "type": "integer", "format": "int32" },
          "savingAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountData" }
          },
          "savingProductOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsProductData" }
          },
          "savingsAccountId": { "type": "integer", "format": "int64" },
          "savingsProductId": { "type": "integer", "format": "int64" },
          "savingsProductName": { "type": "string" },
          "staffId": { "type": "integer", "format": "int64" },
          "staffName": { "type": "string" },
          "staffOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StaffData" }
          },
          "status": { "$ref": "#/components/schemas/EnumOptionData" },
          "subStatus": { "$ref": "#/components/schemas/CodeValueData" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "timeline": { "$ref": "#/components/schemas/ClientTimelineData" },
          "transferToOfficeId": { "type": "integer", "format": "int64" },
          "transferToOfficeName": { "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" }
          }
        }
      },
      "ClientIdentifier": {
        "type": "object",
        "properties": {
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "new": { "type": "boolean" }
        },
        "required": ["createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate"]
      },
      "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" },
          "expiryDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64" },
          "issuanceDate": { "type": "string", "format": "date" },
          "status": { "type": "string" }
        }
      },
      "ClientIdentifierRequest": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "description": { "type": "string", "example": "Document has been verified" },
          "documentKey": { "type": "string", "example": "KA-54677" },
          "documentTypeId": { "type": "integer", "format": "int64", "example": 1 },
          "expiryDate": { "type": "string", "example": "01 January 2034" },
          "issuanceDate": { "type": "string", "example": "01 January 2024" },
          "locale": { "type": "string", "example": "en" },
          "status": { "type": "string", "example": "Active" }
        }
      },
      "ClientNonPersonData": { "type": "object" },
      "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" } } },
      "ClientTimelineData": {
        "type": "object",
        "properties": {
          "activatedByFirstname": { "type": "string" },
          "activatedByLastname": { "type": "string" },
          "activatedByUsername": { "type": "string" },
          "activatedOnDate": { "type": "string", "format": "date" },
          "closedByFirstname": { "type": "string" },
          "closedByLastname": { "type": "string" },
          "closedByUsername": { "type": "string" },
          "closedOnDate": { "type": "string", "format": "date" },
          "submittedByFirstname": { "type": "string" },
          "submittedByLastname": { "type": "string" },
          "submittedByUsername": { "type": "string" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "Code": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "systemDefined": { "type": "boolean" },
          "values": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValue" },
            "uniqueItems": true
          }
        }
      },
      "CodeValue": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean" },
          "code": { "$ref": "#/components/schemas/Code" },
          "description": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "label": { "type": "string" },
          "mandatory": { "type": "boolean" },
          "new": { "type": "boolean" },
          "position": { "type": "integer", "format": "int32" }
        }
      },
      "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" }
        }
      },
      "CollateralData": {
        "type": "object",
        "properties": {
          "allowedCollateralTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "description": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "type": { "$ref": "#/components/schemas/CodeValueData" },
          "value": { "type": "number" }
        }
      },
      "CollateralManagementData": {
        "type": "object",
        "properties": {
          "basePrice": { "type": "number" },
          "currency": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "pctToBase": { "type": "number" },
          "quality": { "type": "string" },
          "unitType": { "type": "string" }
        }
      },
      "CollateralProductCreateRequest": {
        "type": "object",
        "properties": {
          "basePrice": { "type": "number", "exclusiveMinimum": true, "minimum": 0 },
          "currency": { "type": "string", "minLength": 1 },
          "locale": { "type": "string", "minLength": 1 },
          "name": { "type": "string", "minLength": 1 },
          "pctToBase": { "type": "number", "exclusiveMinimum": true, "minimum": 0 },
          "quality": { "type": "string", "minLength": 1 },
          "unitType": { "type": "string", "minLength": 1 }
        },
        "required": ["basePrice", "currency", "locale", "name", "pctToBase", "quality", "unitType"]
      },
      "CollateralProductCreateResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "CollateralProductDeleteResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "CollateralProductUpdateChanges": {
        "type": "object",
        "properties": {
          "basePrice": { "type": "number" },
          "currency": { "type": "string" },
          "name": { "type": "string" },
          "pctToBase": { "type": "number" },
          "quality": { "type": "string" },
          "unitType": { "type": "string" }
        }
      },
      "CollateralProductUpdateRequest": {
        "type": "object",
        "properties": {
          "basePrice": { "type": "number", "exclusiveMinimum": true, "minimum": 0 },
          "currency": { "type": "string" },
          "locale": { "type": "string" },
          "name": { "type": "string" },
          "pctToBase": { "type": "number", "exclusiveMinimum": true, "minimum": 0 },
          "quality": { "type": "string" },
          "unitType": { "type": "string" }
        }
      },
      "CollateralProductUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "$ref": "#/components/schemas/CollateralProductUpdateChanges" },
          "resourceId": { "type": "integer", "format": "int64" }
        }
      },
      "CollectionSheetRequest": {
        "type": "object",
        "properties": {
          "actualDisbursementDate": { "type": "string" },
          "bulkDisbursementTransactions": {
            "$ref": "#/components/schemas/DisbursementTransactionsRequest"
          },
          "dateFormat": { "type": "string" },
          "locale": { "type": "string" },
          "officeId": { "type": "integer", "format": "int64" },
          "transactionDate": { "type": "string" }
        }
      },
      "ColumnFilterData": {
        "type": "object",
        "properties": {
          "column": { "type": "string" },
          "filters": { "type": "array", "items": { "$ref": "#/components/schemas/FilterData" } }
        }
      },
      "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" }
        }
      },
      "CommandWrapper": {
        "type": "object",
        "properties": {
          "actionName": { "type": "string" },
          "cacheResource": { "type": "boolean" },
          "changePasswordOperation": { "type": "boolean" },
          "clientId": { "type": "integer", "format": "int64" },
          "commandId": { "type": "integer", "format": "int64" },
          "create": { "type": "boolean" },
          "createDatatable": { "type": "boolean" },
          "creditBureauId": { "type": "integer", "format": "int64" },
          "currencyResource": { "type": "boolean" },
          "datatableResource": { "type": "boolean" },
          "delete": { "type": "boolean" },
          "deleteDatatable": { "type": "boolean" },
          "deleteMultiple": { "type": "boolean" },
          "deleteOneToOne": { "type": "boolean" },
          "deleteOperation": { "type": "boolean" },
          "entityId": { "type": "integer", "format": "int64" },
          "entityName": { "type": "string" },
          "fullFilSurvey": { "type": "boolean" },
          "groupId": { "type": "integer", "format": "int64" },
          "href": { "type": "string" },
          "idempotencyKey": { "type": "string" },
          "interestPauseCreateResource": { "type": "boolean" },
          "interestPauseDeleteResource": { "type": "boolean" },
          "interestPauseResource": { "type": "boolean" },
          "interestPauseUpdateResource": { "type": "boolean" },
          "jobName": { "type": "string" },
          "json": { "type": "string" },
          "loanDisburseDetailResource": { "type": "boolean" },
          "loanExternalId": { "$ref": "#/components/schemas/ExternalId" },
          "loanId": { "type": "integer", "format": "int64" },
          "noteResource": { "type": "boolean" },
          "officeId": { "type": "integer", "format": "int64" },
          "organisationCreditBureauId": { "type": "integer", "format": "int64" },
          "passwordPreferencesResource": { "type": "boolean" },
          "permissionResource": { "type": "boolean" },
          "productId": { "type": "integer", "format": "int64" },
          "registerDatatable": { "type": "boolean" },
          "registerSurvey": { "type": "boolean" },
          "sanitizeJsonKeys": {
            "type": "array",
            "items": { "type": "string" },
            "uniqueItems": true
          },
          "savingsId": { "type": "integer", "format": "int64" },
          "subentityId": { "type": "integer", "format": "int64" },
          "surveyResource": { "type": "boolean" },
          "taskPermissionName": { "type": "string" },
          "templateId": { "type": "integer", "format": "int64" },
          "transactionId": { "type": "string" },
          "update": { "type": "boolean" },
          "updateDatatable": { "type": "boolean" },
          "updateDisbursementDate": { "type": "boolean" },
          "updateMultiple": { "type": "boolean" },
          "updateOneToOne": { "type": "boolean" },
          "updateOperation": { "type": "boolean" },
          "userResource": { "type": "boolean" },
          "workingDaysResource": { "type": "boolean" }
        }
      },
      "Component": {
        "type": "object",
        "properties": {
          "description": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "key": { "type": "string" },
          "new": { "type": "boolean" },
          "sequenceNo": { "type": "integer", "format": "int32" },
          "survey": { "$ref": "#/components/schemas/Survey" },
          "text": { "type": "string" }
        }
      },
      "ComponentData": {
        "type": "object",
        "properties": {
          "description": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "key": { "type": "string" },
          "sequenceNo": { "type": "integer", "format": "int32" },
          "text": { "type": "string" }
        }
      },
      "ConfiguredJobNamesDTO": {
        "type": "object",
        "properties": { "businessJobs": { "type": "array", "items": { "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" }
        }
      },
      "CreditDebit": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "glAccountId": { "type": "integer", "format": "int64" }
        }
      },
      "CurrencyConfigurationData": {
        "type": "object",
        "properties": {
          "currencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CurrencyData" }
          },
          "selectedCurrencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CurrencyData" }
          }
        }
      },
      "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" }
        }
      },
      "CurrencyItem": {
        "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": 100 },
          "name": { "type": "string", "example": "US Dollar" },
          "nameCode": { "type": "string", "example": "currency.USD" }
        }
      },
      "CurrencyUpdateRequest": {
        "type": "object",
        "properties": {
          "currencies": { "type": "array", "items": { "type": "string" }, "minItems": 1 }
        },
        "required": ["currencies"]
      },
      "CurrencyUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "currencies": {
            "type": "array",
            "example": ["KES", "BND", "LBP", "GHC", "USD", "XOF", "AED", "AMD"],
            "items": {
              "type": "string",
              "example": "[\"KES\",\"BND\",\"LBP\",\"GHC\",\"USD\",\"XOF\",\"AED\",\"AMD\"]"
            }
          }
        }
      },
      "DatatableCheckStatusData": { "type": "object" },
      "DatatableChecksData": { "type": "object" },
      "DatatableData": {
        "type": "object",
        "properties": { "registeredTableName": { "type": "string" } }
      },
      "DateParam": { "type": "object" },
      "DeleteAccountNumberFormatsResponse": {
        "type": "object",
        "description": "DeleteAccountNumberFormatsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 2 } }
      },
      "DeleteAccountingRulesResponse": {
        "type": "object",
        "description": "DeleteAccountingRulesResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteCentersCenterIdResponse": {
        "type": "object",
        "description": "DeleteCentersCenterIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/DeleteCentersChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "DeleteCentersChanges": { "type": "object" },
      "DeleteChargesChargeIdResponse": {
        "type": "object",
        "description": "DeleteChargesChargeIdResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteClientsClientIdChargesChargeIdResponse": {
        "type": "object",
        "description": "DeleteClientsClientIdChargesChargeIdResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 189 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 164 }
        }
      },
      "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 }
        }
      },
      "DeleteCodeValueDataResponse": {
        "type": "object",
        "description": "DeleteCodeValueDataResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 4 } }
      },
      "DeleteCodesResponse": {
        "type": "object",
        "description": "DeleteCodesResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 4 } }
      },
      "DeleteDataTablesDatatableAppTableIdDatatableIdResponse": {
        "type": "object",
        "description": "DeleteDataTablesDatatableAppTableIdDatatableIdResponse ",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteDataTablesDatatableAppTableIdResponse": {
        "type": "object",
        "description": "DeleteDataTablesDatatableAppTableIdResponse ",
        "properties": {
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "transactionId": { "type": "string", "example": "1" }
        }
      },
      "DeleteDataTablesResponse": {
        "type": "object",
        "description": "DeleteDataTablesResponse",
        "properties": {
          "resourceIdentifier": { "type": "string", "example": "extra_client_details" }
        }
      },
      "DeleteDelinquencyBucketResponse": {
        "type": "object",
        "description": "DeleteDelinquencyBucketResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteDelinquencyRangeResponse": {
        "type": "object",
        "description": "DeleteDelinquencyRangeResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteEntityDatatableChecksTemplateResponse": {
        "type": "object",
        "description": "DeleteEntityDatatableChecksTemplateResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteFinancialActivityAccountsResponse": {
        "type": "object",
        "description": "DeleteFinancialActivityAccountsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteFixedDepositAccountsAccountIdResponse": {
        "type": "object",
        "description": "DeleteFixedDepositAccountsAccountIdResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "DeleteFixedDepositProductsProductIdResponse": {
        "type": "object",
        "description": "DeleteFixedDepositProductsProductIdResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteGLAccountsResponse": {
        "type": "object",
        "description": "DeleteGLAccountsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteGlClosuresResponse": {
        "type": "object",
        "description": "DeleteGlClosuresResponse",
        "properties": {
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 9 }
        }
      },
      "DeleteGroupsGroupIdResponse": {
        "type": "object",
        "description": "DeleteGroupsGroupIdResponse",
        "properties": {
          "groupId": { "type": "integer", "format": "int64", "example": 2 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "DeleteHolidaysHolidayIdResponse": {
        "type": "object",
        "description": "DeleteHolidaysHolidayIdResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteLoanOriginatorsResponse": {
        "type": "object",
        "description": "DeleteLoanOriginatorsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteLoansLoanIdChargesChargeIdResponse": {
        "type": "object",
        "description": "DeleteLoansLoanIdChargesChargeIdResponse",
        "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": 2 }
        }
      },
      "DeleteLoansLoanIdCollateralsCollateralIdResponse": {
        "type": "object",
        "description": "DeleteLoansLoanIdCollateralsCollateralIdResponse",
        "properties": {
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 12 }
        }
      },
      "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 }
        }
      },
      "DeletePostDatedCheck": {
        "type": "object",
        "description": "DeletePostDatedCheck",
        "properties": {
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "DeleteProvisioningCriteriaResponse": {
        "type": "object",
        "description": "DeleteProvisioningCriteriaResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteRecurringDepositAccountsResponse": {
        "type": "object",
        "description": "DeleteRecurringDepositAccountsResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "DeleteRecurringDepositProductsProductIdResponse": {
        "type": "object",
        "description": "DeleteRecurringDepositProductsProductIdResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteReportMailingJobsResponse": {
        "type": "object",
        "description": "DeleteReportMailingJobsResponse",
        "properties": { "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 } }
      },
      "DeleteSavingsAccountsAccountIdResponse": {
        "type": "object",
        "description": "DeleteSavingsAccountsAccountIdResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "DeleteSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse": {
        "type": "object",
        "description": "DeleteSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 2 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "DeleteSavingsProductsProductIdResponse": {
        "type": "object",
        "description": "DeleteSavingsProductsProductIdResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteTellersTellerIdCashiersCashierIdResponse": {
        "type": "object",
        "description": "DeleteTellersTellerIdCashiersCashierIdResponse",
        "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" },
      "DeleteWorkingCapitalLoanProductsProductIdResponse": {
        "type": "object",
        "description": "DeleteWorkingCapitalLoanProductsProductIdResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DeleteWorkingCapitalLoansLoanIdResponse": {
        "type": "object",
        "description": "DeleteWorkingCapitalLoansLoanIdResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "DelinquencyBucket": {
        "type": "object",
        "properties": {
          "bucketType": { "type": "string", "enum": ["REGULAR", "WORKING_CAPITAL"] },
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "ranges": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DelinquencyRange" }
          },
          "version": { "type": "integer", "format": "int64" }
        },
        "required": ["createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate"]
      },
      "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" }
          }
        }
      },
      "DelinquencyBucketRequest": {
        "type": "object",
        "properties": {
          "bucketType": { "type": "string" },
          "minimumPaymentPeriodAndRule": {
            "$ref": "#/components/schemas/MinimumPaymentPeriodAndRule"
          },
          "name": { "type": "string" },
          "ranges": { "type": "array", "items": { "type": "integer", "format": "int64" } }
        }
      },
      "DelinquencyBucketResponse": {
        "type": "object",
        "properties": {
          "bucketType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "id": { "type": "integer", "format": "int64" },
          "minimumPaymentPeriodAndRule": {
            "$ref": "#/components/schemas/DelinquencyMinimumPaymentPeriodAndRuleResponse"
          },
          "name": { "type": "string" },
          "ranges": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DelinquencyRangeResponse" }
          }
        }
      },
      "DelinquencyBucketTemplateResponse": {
        "type": "object",
        "properties": {
          "bucketTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "frequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "minimumPaymentOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "rangesOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DelinquencyRangeResponse" }
          }
        }
      },
      "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"] }
        }
      },
      "DelinquencyMinimumPaymentPeriodAndRuleResponse": {
        "type": "object",
        "properties": {
          "frequency": { "type": "integer", "format": "int32" },
          "frequencyType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "minimumPayment": { "type": "number" },
          "minimumPaymentType": { "$ref": "#/components/schemas/StringEnumOptionData" }
        }
      },
      "DelinquencyRange": {
        "type": "object",
        "properties": {
          "classification": { "type": "string" },
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "maximumAgeDays": { "type": "integer", "format": "int32" },
          "minimumAgeDays": { "type": "integer", "format": "int32" },
          "new": { "type": "boolean" },
          "version": { "type": "integer", "format": "int64" }
        },
        "required": ["createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate"]
      },
      "DelinquencyRangeData": {
        "type": "object",
        "properties": {
          "classification": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "maximumAgeDays": { "type": "integer", "format": "int32" },
          "minimumAgeDays": { "type": "integer", "format": "int32" }
        }
      },
      "DelinquencyRangeRequest": {
        "type": "object",
        "properties": {
          "classification": { "type": "string" },
          "locale": { "type": "string" },
          "maximumAgeDays": { "type": "integer", "format": "int32" },
          "minimumAgeDays": { "type": "integer", "format": "int32" }
        }
      },
      "DelinquencyRangeResponse": {
        "type": "object",
        "properties": {
          "classification": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "maximumAgeDays": { "type": "integer", "format": "int32" },
          "minimumAgeDays": { "type": "integer", "format": "int32" }
        }
      },
      "DepositAccountData": {
        "type": "object",
        "properties": {
          "accountChart": { "$ref": "#/components/schemas/DepositAccountInterestRateChartData" },
          "accountNo": { "type": "string" },
          "chargeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeData" }
          },
          "charges": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountChargeData" }
          },
          "chartTemplate": { "$ref": "#/components/schemas/DepositAccountInterestRateChartData" },
          "clientId": { "type": "integer", "format": "int64" },
          "clientName": { "type": "string" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "depositProductId": { "type": "integer", "format": "int64" },
          "depositProductName": { "type": "string" },
          "depositType": { "$ref": "#/components/schemas/EnumOptionData" },
          "externalId": { "type": "string" },
          "fieldOfficerId": { "type": "integer", "format": "int64" },
          "fieldOfficerName": { "type": "string" },
          "fieldOfficerOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StaffData" }
          },
          "groupId": { "type": "integer", "format": "int64" },
          "groupName": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "interestCalculationDaysInYearType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCalculationDaysInYearTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestCalculationType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCalculationTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestCompoundingPeriodType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCompoundingPeriodTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestPostingPeriodType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestPostingPeriodTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "lockinPeriodFrequency": { "type": "integer", "format": "int32" },
          "lockinPeriodFrequencyType": { "$ref": "#/components/schemas/EnumOptionData" },
          "lockinPeriodFrequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "minBalanceForInterestCalculation": { "type": "number" },
          "minRequiredOpeningBalance": { "type": "number" },
          "nominalAnnualInterestRate": { "type": "number" },
          "productId": { "type": "integer", "format": "int64" },
          "productOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DepositProductData" }
          },
          "status": { "$ref": "#/components/schemas/SavingsAccountStatusEnumData" },
          "summary": { "$ref": "#/components/schemas/SavingsAccountSummaryData" },
          "taxGroup": { "$ref": "#/components/schemas/TaxGroupData" },
          "timeline": { "$ref": "#/components/schemas/SavingsAccountApplicationTimelineData" },
          "transactions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountTransactionData" }
          },
          "withHoldTax": { "type": "boolean" },
          "withdrawalFeeForTransfers": { "type": "boolean" },
          "withdrawalFeeTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          }
        }
      },
      "DepositAccountInterestRateChartData": { "type": "object" },
      "DepositAccountOnHoldTransactionData": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "id": { "type": "integer", "format": "int64" },
          "loanAccountNo": { "type": "string" },
          "loanClientName": { "type": "string" },
          "loanId": { "type": "integer", "format": "int64" },
          "reversed": { "type": "boolean" },
          "savingsAccountNo": { "type": "string" },
          "savingsClientName": { "type": "string" },
          "savingsId": { "type": "integer", "format": "int64" },
          "transactionDate": { "type": "string", "format": "date" },
          "transactionType": { "$ref": "#/components/schemas/EnumOptionData" }
        }
      },
      "DepositProductData": {
        "type": "object",
        "properties": {
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "id": { "type": "integer", "format": "int64" },
          "interestCalculationDaysInYearType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCalculationType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCompoundingPeriodType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestPostingPeriodType": { "$ref": "#/components/schemas/EnumOptionData" },
          "lockinPeriodFrequency": { "type": "integer", "format": "int32" },
          "lockinPeriodFrequencyType": { "$ref": "#/components/schemas/EnumOptionData" },
          "minBalanceForInterestCalculation": { "type": "number" },
          "name": { "type": "string" },
          "nominalAnnualInterestRate": { "type": "number" },
          "shortName": { "type": "string" }
        }
      },
      "DisbursementDetail": {
        "type": "object",
        "properties": {
          "expectedDisbursementDate": { "type": "string", "example": "1 January 2024" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "principal": { "type": "number", "example": 100 }
        }
      },
      "DisbursementTransactionsRequest": {
        "type": "object",
        "properties": {
          "bulkRepaymentTransactions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/RepaymentTransactionRequest" }
          },
          "bulkSavingsDueTransactions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingDueTransactionRequest" }
          }
        }
      },
      "DocumentCreateResponse": {
        "type": "object",
        "properties": {
          "resourceId": { "type": "integer", "format": "int64" },
          "resourceIdentifier": { "type": "string" }
        }
      },
      "DocumentData": {
        "type": "object",
        "properties": {
          "description": { "type": "string" },
          "expiryDate": { "type": "string", "format": "date-time" },
          "fileName": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "issuanceDate": { "type": "string", "format": "date-time" },
          "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" }
        }
      },
      "EnumOptionType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.asset" },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "value": { "type": "string", "example": "ASSET" }
        }
      },
      "ExecuteJobRequest": {
        "type": "object",
        "description": "ExecuteJobRequest",
        "properties": {
          "jobParameters": {
            "type": "array",
            "example": "Update loan Summary",
            "items": { "$ref": "#/components/schemas/JobParameterDTO" }
          }
        }
      },
      "ExecuteWorkingCapitalLoanTransactionCommandRequest": {
        "type": "object",
        "description": "Request for working capital loan transaction command execution",
        "properties": { "reversalExternalId": { "type": "string", "example": "loan-ext-001" } }
      },
      "ExecuteWorkingCapitalLoanTransactionCommandResponse": {
        "type": "object",
        "description": "Response for working capital loan transaction command execution",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 2 },
          "loanExternalId": { "type": "string", "example": "loan-ext-001" },
          "loanId": { "type": "integer", "format": "int64", "example": 3 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceExternalId": { "type": "string", "example": "repayment-ext-001" },
          "resourceId": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "ExtensionData": {
        "type": "object",
        "properties": { "key": { "type": "string" }, "value": { "type": "string" } },
        "required": ["key"]
      },
      "ExternalAssetOwnerRequest": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string" },
          "locale": { "type": "string" },
          "ownerExternalId": { "type": "string" },
          "purchasePriceRatio": { "type": "string" },
          "settlementDate": { "type": "string" },
          "transferExternalGroupId": { "type": "string" },
          "transferExternalId": { "type": "string" }
        }
      },
      "ExternalAssetOwnerSearchRequest": {
        "type": "object",
        "properties": {
          "effectiveFromDate": { "type": "string", "format": "date" },
          "effectiveToDate": { "type": "string", "format": "date" },
          "submittedFromDate": { "type": "string", "format": "date" },
          "submittedToDate": { "type": "string", "format": "date" },
          "text": { "type": "string" }
        }
      },
      "ExternalAssetOwnerTransferChangesData": {
        "type": "object",
        "description": "ExternalAssetOwnerTransferChangesData",
        "properties": {
          "ownerExternalId": { "type": "string", "example": "1234567890987654321abc" },
          "purchasePriceRatio": { "type": "string", "example": "1.23456789" },
          "settlementDate": { "type": "string", "format": "date" },
          "transferExternalId": {
            "type": "string",
            "example": "36efeb06-d835-48a1-99eb-09bd1d348c1e"
          }
        }
      },
      "ExternalEventConfigurationItemResponse": {
        "type": "object",
        "properties": { "enabled": { "type": "boolean" }, "type": { "type": "string" } }
      },
      "ExternalEventConfigurationResponse": {
        "type": "object",
        "properties": {
          "externalEventConfiguration": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ExternalEventConfigurationItemResponse" }
          }
        }
      },
      "ExternalEventConfigurationUpdateRequest": {
        "type": "object",
        "properties": {
          "externalEventConfigurations": {
            "type": "object",
            "additionalProperties": { "type": "boolean" }
          }
        },
        "required": ["externalEventConfigurations"]
      },
      "ExternalEventConfigurationUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } }
        }
      },
      "ExternalEventResponse": {
        "type": "object",
        "properties": {
          "aggregateRootId": { "type": "integer", "format": "int64" },
          "businessDate": { "type": "string", "format": "date" },
          "category": { "type": "string" },
          "createdAt": { "type": "string", "format": "date-time" },
          "eventId": { "type": "integer", "format": "int64" },
          "payLoad": { "type": "object", "additionalProperties": { "type": "object" } },
          "schema": { "type": "string" },
          "type": { "type": "string" }
        }
      },
      "ExternalId": {
        "type": "object",
        "properties": { "empty": { "type": "boolean" }, "value": { "type": "string" } }
      },
      "ExternalOwnerJournalEntryData": {
        "type": "object",
        "properties": {
          "journalEntryData": { "$ref": "#/components/schemas/PageJournalEntryData" },
          "ownerData": { "$ref": "#/components/schemas/ExternalTransferOwnerData" }
        }
      },
      "ExternalOwnerTransferJournalEntryData": {
        "type": "object",
        "properties": {
          "journalEntryData": { "$ref": "#/components/schemas/PageJournalEntryData" },
          "transferData": { "$ref": "#/components/schemas/ExternalTransferData" }
        }
      },
      "ExternalServicesPropertiesData": {
        "type": "object",
        "properties": { "name": { "type": "string" }, "value": { "type": "string" } }
      },
      "ExternalTransferData": {
        "type": "object",
        "properties": {
          "details": { "$ref": "#/components/schemas/ExternalTransferDataDetails" },
          "effectiveFrom": { "type": "string", "format": "date" },
          "effectiveTo": { "type": "string", "format": "date" },
          "loan": { "$ref": "#/components/schemas/ExternalTransferLoanData" },
          "owner": { "$ref": "#/components/schemas/ExternalTransferOwnerData" },
          "previousOwner": { "$ref": "#/components/schemas/ExternalTransferOwnerData" },
          "purchasePriceRatio": { "type": "string" },
          "settlementDate": { "type": "string", "format": "date" },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "ACTIVE_INTERMEDIATE",
              "DECLINED",
              "PENDING",
              "PENDING_INTERMEDIATE",
              "BUYBACK",
              "BUYBACK_INTERMEDIATE",
              "CANCELLED"
            ]
          },
          "subStatus": {
            "type": "string",
            "enum": [
              "BALANCE_ZERO",
              "BALANCE_NEGATIVE",
              "SAMEDAY_TRANSFERS",
              "USER_REQUESTED",
              "UNSOLD"
            ]
          },
          "transferExternalGroupId": { "type": "string" },
          "transferExternalId": { "type": "string" },
          "transferId": { "type": "integer", "format": "int64" }
        }
      },
      "ExternalTransferDataDetails": {
        "type": "object",
        "properties": {
          "detailsId": { "type": "integer", "format": "int64" },
          "totalFeeChargesOutstanding": { "type": "number" },
          "totalInterestOutstanding": { "type": "number" },
          "totalOutstanding": { "type": "number" },
          "totalOverpaid": { "type": "number" },
          "totalPenaltyChargesOutstanding": { "type": "number" },
          "totalPrincipalOutstanding": { "type": "number" }
        }
      },
      "ExternalTransferLoanData": {
        "type": "object",
        "properties": {
          "externalId": { "type": "string" },
          "loanId": { "type": "integer", "format": "int64" }
        }
      },
      "ExternalTransferLoanProductAttributesData": {
        "type": "object",
        "properties": {
          "attributeId": { "type": "integer", "format": "int64" },
          "attributeKey": { "type": "string" },
          "attributeValue": { "type": "string" },
          "loanProductId": { "type": "integer", "format": "int64" }
        }
      },
      "ExternalTransferLoanProductAttributesTemplateData": {
        "type": "object",
        "properties": {
          "attributeId": { "type": "integer", "format": "int64" },
          "attributeKey": { "type": "string" },
          "attributeValues": { "type": "array", "items": { "type": "string" } },
          "loanProductId": { "type": "integer", "format": "int64" },
          "multiValue": { "type": "boolean" }
        }
      },
      "ExternalTransferOwnerData": {
        "type": "object",
        "properties": {
          "externalId": { "type": "string" },
          "id": { "type": "integer", "format": "int64" }
        }
      },
      "FieldConfigurationData": {
        "type": "object",
        "properties": {
          "entity": { "type": "string" },
          "field": { "type": "string" },
          "fieldConfigurationId": { "type": "integer", "format": "int64" },
          "isEnabled": { "type": "boolean" },
          "isMandatory": { "type": "boolean" },
          "subentity": { "type": "string" },
          "validationRegex": { "type": "string" }
        }
      },
      "FilterData": {
        "type": "object",
        "properties": {
          "operator": {
            "type": "string",
            "enum": [
              "EQ",
              "NEQ",
              "GTE",
              "LTE",
              "GT",
              "LT",
              "LIKE",
              "NLIKE",
              "BTW",
              "NBTW",
              "IN",
              "NIN",
              "NULL",
              "NNULL"
            ]
          },
          "values": { "type": "array", "items": { "type": "string" } }
        }
      },
      "FinancialActivityAccountData": {
        "type": "object",
        "properties": {
          "financialActivityData": { "$ref": "#/components/schemas/FinancialActivityData" },
          "financialActivityOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/FinancialActivityData" }
          },
          "glAccountData": { "$ref": "#/components/schemas/GLAccountData" },
          "glAccountOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": { "$ref": "#/components/schemas/GLAccountData" }
            }
          },
          "id": { "type": "integer", "format": "int64" }
        }
      },
      "FinancialActivityData": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int32" },
          "mappedGLAccountType": {
            "type": "string",
            "enum": ["ASSET", "LIABILITY", "EQUITY", "INCOME", "EXPENSE"]
          },
          "name": { "type": "string" }
        }
      },
      "FloatingRate": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean" },
          "baseLendingRate": { "type": "boolean" },
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "floatingRatePeriods": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/FloatingRatePeriod" }
          },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "name": { "type": "string" },
          "new": { "type": "boolean" }
        },
        "required": ["createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate"]
      },
      "FloatingRateCreateRequest": {
        "type": "object",
        "properties": {
          "isActive": { "type": "boolean" },
          "isBaseLendingRate": { "type": "boolean" },
          "name": { "type": "string", "maxLength": 200, "minLength": 0 },
          "ratePeriods": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/FloatingRatePeriodRequest" },
            "maxItems": 2147483647,
            "minItems": 1
          }
        },
        "required": ["name"]
      },
      "FloatingRateCreateResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "FloatingRateData": {
        "type": "object",
        "properties": {
          "createdBy": { "type": "string" },
          "createdOn": { "type": "string", "format": "date-time" },
          "id": { "type": "integer", "format": "int64" },
          "interestRateFrequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "isActive": { "type": "boolean" },
          "isBaseLendingRate": { "type": "boolean" },
          "modifiedBy": { "type": "string" },
          "modifiedOn": { "type": "string", "format": "date-time" },
          "name": { "type": "string" },
          "ratePeriods": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/FloatingRatePeriodData" }
          }
        }
      },
      "FloatingRatePeriod": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean" },
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "differentialToBaseLendingRate": { "type": "boolean" },
          "floatingRate": { "$ref": "#/components/schemas/FloatingRate" },
          "fromDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64" },
          "interestRate": { "type": "number" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "new": { "type": "boolean" }
        },
        "required": ["createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate"]
      },
      "FloatingRatePeriodData": {
        "type": "object",
        "properties": {
          "createdBy": { "type": "string" },
          "createdOn": { "type": "string", "format": "date-time" },
          "fromDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64" },
          "interestRate": { "type": "number" },
          "isActive": { "type": "boolean" },
          "isDifferentialToBaseLendingRate": { "type": "boolean" },
          "modifiedBy": { "type": "string" },
          "modifiedOn": { "type": "string", "format": "date-time" }
        }
      },
      "FloatingRatePeriodRequest": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string" },
          "fromDate": { "type": "string", "minLength": 1 },
          "interestRate": { "type": "number", "minimum": 0 },
          "isDifferentialToBaseLendingRate": { "type": "boolean" },
          "locale": { "type": "string" }
        },
        "required": ["fromDate", "interestRate"]
      },
      "FloatingRateUpdateRequest": {
        "type": "object",
        "properties": {
          "isActive": { "type": "boolean" },
          "isBaseLendingRate": { "type": "boolean" },
          "name": { "type": "string", "maxLength": 200, "minLength": 0, "pattern": ".*\\S.*" },
          "ratePeriods": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/FloatingRatePeriodRequest" },
            "maxItems": 2147483647,
            "minItems": 1
          }
        }
      },
      "FloatingRateUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "resourceId": { "type": "integer", "format": "int64" }
        }
      },
      "ForgotPasswordRequest": {
        "type": "object",
        "properties": { "email": { "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" }
        }
      },
      "Fund": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "new": { "type": "boolean" }
        }
      },
      "FundData": {
        "type": "object",
        "properties": {
          "externalId": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" }
        }
      },
      "FundRequest": {
        "type": "object",
        "properties": { "externalId": { "type": "string" }, "name": { "type": "string" } }
      },
      "GLAccount": {
        "type": "object",
        "properties": {
          "children": { "type": "array", "items": { "$ref": "#/components/schemas/GLAccount" } },
          "description": { "type": "string" },
          "detailAccount": { "type": "boolean" },
          "disabled": { "type": "boolean" },
          "glCode": { "type": "string" },
          "headerAccount": { "type": "boolean" },
          "hierarchy": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "manualEntriesAllowed": { "type": "boolean" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "parent": { "$ref": "#/components/schemas/GLAccount" },
          "tagId": { "$ref": "#/components/schemas/CodeValue" },
          "type": { "type": "integer", "format": "int32" },
          "usage": { "type": "integer", "format": "int32" }
        }
      },
      "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" }
          }
        }
      },
      "GLAccountDataForLookup": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" }
        }
      },
      "GeoCodeData": {
        "type": "object",
        "properties": { "latitude": { "type": "string" }, "longitude": { "type": "string" } },
        "required": ["latitude", "longitude"]
      },
      "GetAccountNumberFormatsIdResponse": {
        "type": "object",
        "description": "GetAccountNumberFormatsIdResponse",
        "properties": {
          "accountType": { "$ref": "#/components/schemas/EnumOptionData" },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "prefixType": { "$ref": "#/components/schemas/EnumOptionData" }
        }
      },
      "GetAccountNumberFormatsResponseTemplate": {
        "type": "object",
        "description": "GetAccountNumberFormatsResponseTemplate",
        "properties": {
          "accountTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "prefixTypeOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": { "$ref": "#/components/schemas/EnumOptionData" }
            }
          }
        }
      },
      "GetAccountTransfersClientClassification": { "type": "object" },
      "GetAccountTransfersClientType": { "type": "object" },
      "GetAccountTransfersFromAccountType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.savings" },
          "description": { "type": "string", "example": "Savings Account" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetAccountTransfersFromAccountTypeOptions": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.savings" },
          "description": { "type": "string", "example": "Savings Account" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetAccountTransfersFromClientOptions": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string", "example": "Small shop" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "HO" }
        }
      },
      "GetAccountTransfersFromOffice": {
        "type": "object",
        "properties": {
          "externalId": { "type": "string", "example": "1" },
          "hierarchy": { "type": "string", "example": "." },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "HO" },
          "nameDecorated": { "type": "string", "example": "HO" },
          "openingDate": { "type": "string", "format": "date" }
        }
      },
      "GetAccountTransfersFromOfficeOptions": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "HO" },
          "nameDecorated": { "type": "string", "example": "HO" }
        }
      },
      "GetAccountTransfersGender": { "type": "object" },
      "GetAccountTransfersGroups": { "type": "object" },
      "GetAccountTransfersPageItems": {
        "type": "object",
        "properties": {
          "currency": { "$ref": "#/components/schemas/GetAccountTransfersPageItemsCurrency" },
          "fromAccount": { "$ref": "#/components/schemas/GetAccountTransfersPageItemsFromAccount" },
          "fromAccountType": { "$ref": "#/components/schemas/GetAccountTransfersFromAccountType" },
          "fromClient": { "$ref": "#/components/schemas/GetAccountTransfersFromClientOptions" },
          "fromOffice": { "$ref": "#/components/schemas/GetAccountTransfersPageItemsFromOffice" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "paymentDetailData": {
            "$ref": "#/components/schemas/GetAccountTransfersPageItemsPaymentDetailData"
          },
          "reversed": { "type": "boolean", "example": false },
          "toAccount": { "$ref": "#/components/schemas/GetAccountTransfersPageItemsFromAccount" },
          "toAccountType": {
            "$ref": "#/components/schemas/GetAccountTransfersPageItemsToAccountType"
          },
          "toClient": { "$ref": "#/components/schemas/GetAccountTransfersFromClientOptions" },
          "toOffice": { "$ref": "#/components/schemas/GetAccountTransfersPageItemsFromOffice" },
          "transferAmount": { "type": "number", "format": "float", "example": 200 },
          "transferDate": { "type": "string", "format": "date" },
          "transferDescription": { "type": "string", "example": "pay off loan from savings." }
        }
      },
      "GetAccountTransfersPageItemsCurrency": {
        "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" }
        }
      },
      "GetAccountTransfersPageItemsFromAccount": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 1 },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetAccountTransfersPageItemsFromOffice": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "HO" }
        }
      },
      "GetAccountTransfersPageItemsPaymentDetailData": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string", "example": "ACC-123" },
          "bankNumber": { "type": "string", "example": "BNK-123" },
          "checkNumber": { "type": "string", "example": "CHK-123" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "paymentType": { "$ref": "#/components/schemas/GetAccountTransfersPageItemsPaymentType" },
          "receiptNumber": { "type": "string", "example": "RC-123" },
          "routingCode": { "type": "string", "example": "RT-123" }
        }
      },
      "GetAccountTransfersPageItemsPaymentType": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Cash" }
        }
      },
      "GetAccountTransfersPageItemsToAccountType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.loan" },
          "description": { "type": "string", "example": "Loan Account" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetAccountTransfersResponse": {
        "type": "object",
        "description": "GetAccountTransfersResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountTransfersPageItems" },
            "uniqueItems": true
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 4 }
        }
      },
      "GetAccountTransfersStatus": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "clientStatusType.active" },
          "description": { "type": "string", "example": "Active" },
          "id": { "type": "integer", "format": "int64", "example": 300 }
        }
      },
      "GetAccountTransfersTemplateRefundByTransferCurrency": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "USD" },
          "decimalPlaces": { "type": "integer", "format": "int32", "example": 0 },
          "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" }
        }
      },
      "GetAccountTransfersTemplateRefundByTransferFromAccount": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 2 },
          "amtForTransfer": { "type": "number", "format": "float", "example": 130 },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "Daniel Owusu" },
          "currency": {
            "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferCurrency"
          },
          "fieldOfficerId": { "type": "integer", "format": "int64", "example": 0 },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "CTRL" }
        }
      },
      "GetAccountTransfersTemplateRefundByTransferFromAccountOptions": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 2 },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "Daniel Owusu" },
          "currency": {
            "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferCurrency"
          },
          "fieldOfficerId": { "type": "integer", "format": "int64", "example": 0 },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "CTRL" }
        }
      },
      "GetAccountTransfersTemplateRefundByTransferFromClient": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 1 },
          "activationDate": { "type": "string", "format": "date" },
          "active": { "type": "boolean", "example": true },
          "clientClassification": {
            "$ref": "#/components/schemas/GetAccountTransfersClientClassification"
          },
          "clientType": { "$ref": "#/components/schemas/GetAccountTransfersClientType" },
          "displayName": { "type": "string", "example": "Daniel Owusu" },
          "firstname": { "type": "string", "example": "Daniel" },
          "gender": { "$ref": "#/components/schemas/GetAccountTransfersGender" },
          "groups": { "$ref": "#/components/schemas/GetAccountTransfersGroups" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "lastname": { "type": "string", "example": "Owusu" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "status": { "$ref": "#/components/schemas/GetAccountTransfersStatus" },
          "timeline": { "$ref": "#/components/schemas/GetAccountTransfersTimeline" }
        }
      },
      "GetAccountTransfersTemplateRefundByTransferFromClientOptions": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string", "example": "Daniel Owusu" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" }
        }
      },
      "GetAccountTransfersTemplateRefundByTransferFromOffice": {
        "type": "object",
        "properties": {
          "externalId": { "type": "string", "example": "1" },
          "hierarchy": { "type": "string", "example": "." },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Head Office" },
          "nameDecorated": { "type": "string", "example": "Head Office" },
          "openingDate": { "type": "string", "format": "date" }
        }
      },
      "GetAccountTransfersTemplateRefundByTransferFromOfficeOptions": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Head Office" },
          "nameDecorated": { "type": "string", "example": "Head Office" }
        }
      },
      "GetAccountTransfersTemplateRefundByTransferResponse": {
        "type": "object",
        "description": "GetAccountTransfersTemplateRefundByTransferResponse",
        "properties": {
          "currency": {
            "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferCurrency"
          },
          "fromAccount": {
            "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferFromAccount"
          },
          "fromAccountOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferFromAccountOptions"
            },
            "uniqueItems": true
          },
          "fromAccountType": {
            "$ref": "#/components/schemas/GetAccountTransfersPageItemsToAccountType"
          },
          "fromAccountTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountTransfersFromAccountType" },
            "uniqueItems": true
          },
          "fromClient": {
            "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferFromClient"
          },
          "fromClientOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferFromClientOptions"
            },
            "uniqueItems": true
          },
          "fromOffice": {
            "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferFromOffice"
          },
          "fromOfficeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferFromOfficeOptions"
            },
            "uniqueItems": true
          },
          "toAccount": {
            "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferToAccount"
          },
          "toAccountOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferToAccount"
            },
            "uniqueItems": true
          },
          "toAccountType": { "$ref": "#/components/schemas/GetAccountTransfersFromAccountType" },
          "toAccountTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountTransfersFromAccountType" },
            "uniqueItems": true
          },
          "toClient": {
            "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferToClient"
          },
          "toClientOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferFromClientOptions"
            },
            "uniqueItems": true
          },
          "toOffice": {
            "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferFromOffice"
          },
          "toOfficeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferFromOfficeOptions"
            },
            "uniqueItems": true
          },
          "transferAmount": { "type": "number", "format": "float", "example": 130 },
          "transferDate": { "type": "string", "format": "date" }
        }
      },
      "GetAccountTransfersTemplateRefundByTransferToAccount": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 1 },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "Daniel Owusu" },
          "currency": {
            "$ref": "#/components/schemas/GetAccountTransfersTemplateRefundByTransferCurrency"
          },
          "fieldOfficerId": { "type": "integer", "format": "int64", "example": 0 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "TEST" }
        }
      },
      "GetAccountTransfersTemplateRefundByTransferToClient": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string", "example": "Daniel Owusu" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" }
        }
      },
      "GetAccountTransfersTemplateResponse": {
        "type": "object",
        "description": "GetAccountTransfersTemplateResponse",
        "properties": {
          "fromAccountType": { "$ref": "#/components/schemas/GetAccountTransfersFromAccountType" },
          "fromAccountTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountTransfersFromAccountTypeOptions" },
            "uniqueItems": true
          },
          "fromClientOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountTransfersFromClientOptions" },
            "uniqueItems": true
          },
          "fromOffice": { "$ref": "#/components/schemas/GetAccountTransfersFromOffice" },
          "fromOfficeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountTransfersFromOfficeOptions" },
            "uniqueItems": true
          },
          "toAccountTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountTransfersToAccountTypeOptions" },
            "uniqueItems": true
          },
          "toOfficeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountTransfersToOfficeOptions" },
            "uniqueItems": true
          },
          "transferAmount": { "type": "integer", "format": "int64", "example": 0 },
          "transferDate": { "type": "string", "format": "date" }
        }
      },
      "GetAccountTransfersTimeline": {
        "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" }
        }
      },
      "GetAccountTransfersToAccountTypeOptions": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.savings" },
          "description": { "type": "string", "example": "Savings Account" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetAccountTransfersToOfficeOptions": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "HO" },
          "nameDecorated": { "type": "string", "example": "HO" }
        }
      },
      "GetAccountsChargeCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeCalculationType.flat" },
          "description": { "type": "string", "example": "Flat" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetAccountsChargeTimeType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeTimeType.activation" },
          "description": { "type": "string", "example": "Share Account Activate" },
          "id": { "type": "integer", "format": "int64", "example": 13 }
        }
      },
      "GetAccountsCharges": {
        "type": "object",
        "properties": {
          "accountId": { "type": "integer", "format": "int64", "example": 2 },
          "amount": { "type": "number", "format": "float", "example": 1 },
          "amountOrPercentage": { "type": "number", "format": "float", "example": 1 },
          "amountOutstanding": { "type": "number", "format": "float", "example": 0 },
          "amountPaid": { "type": "number", "format": "float", "example": 1 },
          "amountPercentageAppliedTo": { "type": "number", "format": "double", "example": 0 },
          "amountWaived": { "type": "number", "format": "float", "example": 0 },
          "amountWrittenOff": { "type": "number", "format": "float", "example": 0 },
          "chargeCalculationType": {
            "$ref": "#/components/schemas/GetAccountsChargeCalculationType"
          },
          "chargeId": { "type": "integer", "format": "int64", "example": 20 },
          "chargeTimeType": { "$ref": "#/components/schemas/GetAccountsChargeTimeType" },
          "currency": { "$ref": "#/components/schemas/GetAccountsChargesCurrency" },
          "id": { "type": "integer", "format": "int64", "example": 9 },
          "isActive": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Share Account Activation Flat" },
          "percentage": { "type": "number", "format": "double", "example": 0 }
        }
      },
      "GetAccountsChargesCurrency": {
        "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" }
        }
      },
      "GetAccountsCurrency": {
        "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": 100 },
          "name": { "type": "string", "example": "US Dollar" },
          "nameCode": { "type": "string", "example": "currency.USD" }
        }
      },
      "GetAccountsLockPeriodTypeEnum": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savings.lockin.sharePeriodFrequencyType.days" },
          "description": { "type": "string", "example": "Days" },
          "id": { "type": "integer", "format": "int64", "example": 0 }
        }
      },
      "GetAccountsPageItems": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 1 },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "Client Name" },
          "currency": { "$ref": "#/components/schemas/GetAccountsChargesCurrency" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "Share Product Name" },
          "purchasedShares": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountsTypePurchasedShares" },
            "uniqueItems": true
          },
          "status": { "$ref": "#/components/schemas/GetAccountsTypeStatus" },
          "summary": { "$ref": "#/components/schemas/GetAccountsTypeSummary" },
          "timeline": { "$ref": "#/components/schemas/GetAccountsTypeTimeline" }
        }
      },
      "GetAccountsPurchasedShares": {
        "type": "object",
        "properties": {
          "accountId": { "type": "integer", "format": "int64", "example": 2 },
          "amount": { "type": "number", "format": "double", "example": 5.05 },
          "amountPaid": { "type": "number", "format": "double", "example": 5.05 },
          "chargeAmount": { "type": "number", "format": "double", "example": 0.05 },
          "id": { "type": "integer", "format": "int64", "example": 6 },
          "numberOfShares": { "type": "integer", "format": "int32", "example": 10 },
          "purchasedDate": { "type": "string", "format": "date" },
          "purchasedPrice": { "type": "number", "format": "double", "example": 0.5 },
          "status": { "$ref": "#/components/schemas/GetAccountsPurchasedSharesStatus" },
          "type": { "$ref": "#/components/schemas/GetAccountsPurchasedSharesType" }
        }
      },
      "GetAccountsPurchasedSharesStatus": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "purchasedSharesStatusType.approved" },
          "description": { "type": "string", "example": "Approved" },
          "id": { "type": "integer", "format": "int64", "example": 300 }
        }
      },
      "GetAccountsPurchasedSharesType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "purchasedSharesType.purchased" },
          "description": { "type": "string", "example": "Purchase" },
          "id": { "type": "integer", "format": "int64", "example": 500 }
        }
      },
      "GetAccountsStatus": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": true },
          "approved": { "type": "boolean", "example": false },
          "closed": { "type": "boolean", "example": false },
          "code": { "type": "string", "example": "shareAccountStatusType.active" },
          "description": { "type": "string", "example": "Active" },
          "id": { "type": "integer", "format": "int64", "example": 300 },
          "rejected": { "type": "boolean", "example": false },
          "submittedAndPendingApproval": { "type": "boolean", "example": false }
        }
      },
      "GetAccountsSummary": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 2 },
          "currency": { "$ref": "#/components/schemas/GetAccountsCurrency" },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "Conflux Share Product" },
          "status": { "$ref": "#/components/schemas/GetAccountsStatus" },
          "timeline": { "$ref": "#/components/schemas/GetAccountsTimeline" },
          "totalApprovedShares": { "type": "integer", "format": "int32", "example": 1 },
          "totalPendingForApprovalShares": { "type": "integer", "format": "int32", "example": 0 }
        }
      },
      "GetAccountsTimeline": {
        "type": "object",
        "properties": {
          "activatedDate": { "type": "string", "format": "date" },
          "approvedByFirstname": { "type": "string", "example": "App" },
          "approvedByLastname": { "type": "string", "example": "Administrator" },
          "approvedByUsername": { "type": "string", "example": "admin" },
          "approvedDate": { "type": "string", "format": "date" },
          "submittedByFirstname": { "type": "string", "example": "App" },
          "submittedByLastname": { "type": "string", "example": "Administrator" },
          "submittedByUsername": { "type": "string", "example": "admin" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "GetAccountsTypeAccountIdResponse": {
        "type": "object",
        "description": "GetAccountsTypeAccountIdResponse",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 2 },
          "allowDividendCalculationForInactiveClients": { "type": "boolean", "example": true },
          "charges": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountsCharges" },
            "uniqueItems": true
          },
          "clientId": { "type": "integer", "format": "int64", "example": 7 },
          "clientName": {
            "type": "string",
            "example": "Client_FirstName_2KX8C Client_LastName_NWNG"
          },
          "currency": { "$ref": "#/components/schemas/GetAccountsCurrency" },
          "currentMarketPrice": { "type": "integer", "format": "int32", "example": 5 },
          "dividends": { "type": "array", "items": { "type": "string" } },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "lockPeriodTypeEnum": { "$ref": "#/components/schemas/GetAccountsLockPeriodTypeEnum" },
          "lockinPeriod": { "type": "integer", "format": "int32", "example": 1 },
          "minimumActivePeriod": { "type": "integer", "format": "int32", "example": 1 },
          "minimumActivePeriodTypeEnum": {
            "$ref": "#/components/schemas/GetAccountsLockPeriodTypeEnum"
          },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "Share Product" },
          "purchasedShares": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountsPurchasedShares" },
            "uniqueItems": true
          },
          "savingsAccountId": { "type": "integer", "format": "int64", "example": 13 },
          "savingsAccountNumber": { "type": "integer", "format": "int64", "example": 13 },
          "status": { "$ref": "#/components/schemas/GetAccountsStatus" },
          "summary": { "$ref": "#/components/schemas/GetAccountsSummary" },
          "timeline": { "$ref": "#/components/schemas/GetAccountsTimeline" }
        }
      },
      "GetAccountsTypeProductOptions": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Share Product" },
          "shortName": { "type": "string", "example": "SP" },
          "totalShares": { "type": "integer", "format": "int64", "example": 100 }
        }
      },
      "GetAccountsTypePurchasedShares": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "numberOfShares": { "type": "integer", "format": "int32", "example": 10 },
          "purchasedDate": { "type": "string", "example": "01 May 2013" },
          "purchasedPrice": { "type": "integer", "format": "int32", "example": 5 }
        }
      },
      "GetAccountsTypeResponse": {
        "type": "object",
        "description": "GetAccountsTypeResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountsPageItems" },
            "uniqueItems": true
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetAccountsTypeStatus": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "approved": { "type": "boolean", "example": false },
          "closed": { "type": "boolean", "example": false },
          "code": {
            "type": "string",
            "example": "shareAccountStatusType.submitted.and.pending.approval"
          },
          "description": { "type": "string", "example": "Submitted and pending approval" },
          "id": { "type": "integer", "format": "int64", "example": 100 },
          "rejected": { "type": "boolean", "example": false },
          "submittedAndPendingApproval": { "type": "boolean", "example": true }
        }
      },
      "GetAccountsTypeSummary": {
        "type": "object",
        "properties": { "currency": { "$ref": "#/components/schemas/GetAccountsChargesCurrency" } }
      },
      "GetAccountsTypeTemplateResponse": {
        "type": "object",
        "description": "GetAccountsTypeTemplateResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 7 },
          "clientName": { "type": "string", "example": "Client Name" },
          "productOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetAccountsTypeProductOptions" },
            "uniqueItems": true
          }
        }
      },
      "GetAccountsTypeTimeline": {
        "type": "object",
        "properties": { "submittedOnDate": { "type": "string", "format": "date" } }
      },
      "GetAssetType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.asset" },
          "description": { "type": "string", "example": "ASSET" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetBalance": {
        "type": "object",
        "description": "Working capital loan running balances",
        "properties": {
          "breachPastDueAmount": {
            "type": "number",
            "description": "Cumulative breach past due amount, summed from each breach schedule period's outstanding amount",
            "example": 250
          },
          "fee": { "type": "number", "example": 10000 },
          "feeOutstanding": { "type": "number", "example": 10000 },
          "feePaid": { "type": "number", "example": 10000 },
          "feeWaived": {
            "type": "number",
            "description": "Fees moved out of the outstanding balance by a charge waiver",
            "example": 0
          },
          "feeWrittenOff": {
            "type": "number",
            "description": "Fees moved out of the outstanding balance by a write-off",
            "example": 0
          },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "overpaymentAmount": { "type": "number", "example": 10000 },
          "penalty": { "type": "number", "example": 10000 },
          "penaltyOutstanding": { "type": "number", "example": 10000 },
          "penaltyPaid": { "type": "number", "example": 10000 },
          "penaltyWaived": {
            "type": "number",
            "description": "Penalties moved out of the outstanding balance by a charge waiver",
            "example": 0
          },
          "penaltyWrittenOff": {
            "type": "number",
            "description": "Penalties moved out of the outstanding balance by a write-off",
            "example": 0
          },
          "principal": {
            "type": "number",
            "description": "Total repayable principal: the disbursed amount plus the discount fee. Zero until disbursement, and zero again once a disbursal is undone.",
            "example": 10000
          },
          "principalAdjustment": { "type": "number", "example": 0 },
          "principalOutstanding": { "type": "number", "example": 10000 },
          "principalPaid": { "type": "number", "example": 10000 },
          "principalWrittenOff": {
            "type": "number",
            "description": "Principal moved out of the outstanding balance by a write-off",
            "example": 10000
          },
          "realizedIncomeFromDiscountFee": { "type": "number", "example": 10000 },
          "totalDisbursement": {
            "type": "number",
            "description": "Total amount actually disbursed",
            "example": 10000
          },
          "totalDiscountFee": { "type": "number", "example": 10000 },
          "totalDiscountFeeAdjustment": { "type": "number", "example": 500 },
          "totalExpectedRepayment": { "type": "number", "example": 10000 },
          "totalOutstanding": { "type": "number", "example": 10000 },
          "totalRecovered": {
            "type": "number",
            "description": "Collected after the write-off and recognized as recovery income",
            "example": 2000
          },
          "totalRepayment": { "type": "number", "example": 10000 },
          "totalWrittenOff": {
            "type": "number",
            "description": "Gross amount written off; not reduced by recoveries",
            "example": 10000
          },
          "unrealizedIncomeFromDiscountFee": { "type": "number", "example": 10000 },
          "writtenOffOutstanding": {
            "type": "number",
            "description": "Still recoverable (totalWrittenOff - totalRecovered); caps the next recovery payment",
            "example": 8000
          }
        }
      },
      "GetCentersAccountType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.group" },
          "description": { "type": "string", "example": "Group" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetCentersCenterIdAccountsResponse": {
        "type": "object",
        "description": "GetCentersCenterIdAccountsResponse",
        "properties": {
          "savingsAccounts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetCentersSavingsAccounts" },
            "uniqueItems": true
          }
        }
      },
      "GetCentersCenterIdCurrency": {
        "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" }
        }
      },
      "GetCentersCenterIdResponse": {
        "type": "object",
        "description": "GetCentersCenterIdResponse",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "externalId": { "type": "string", "example": "externalId1" },
          "groupMembers": {
            "type": "array",
            "description": "Returned when the groupMembers association is requested",
            "items": { "$ref": "#/components/schemas/GetCentersGroupMembers" }
          },
          "hierarchy": { "type": "string", "example": ".8." },
          "id": { "type": "integer", "format": "int64", "example": 8 },
          "name": { "type": "string", "example": "First Center (No groups)" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "staffId": { "type": "integer", "format": "int64", "example": 1 },
          "status": { "$ref": "#/components/schemas/GetCentersStatus" }
        }
      },
      "GetCentersCenterIdStatus": {
        "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"
          },
          "description": { "type": "string", "example": "Submitted and pending approval" },
          "id": { "type": "integer", "format": "int64", "example": 100 },
          "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 },
          "withdrawnByApplicant": { "type": "boolean", "example": false }
        }
      },
      "GetCentersDepositType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "depositAccountType.savingsDeposit" },
          "description": { "type": "string", "example": "Savings" },
          "id": { "type": "integer", "format": "int64", "example": 100 }
        }
      },
      "GetCentersGroupMembers": {
        "type": "object",
        "description": "Returned when the groupMembers association is requested",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 4 },
          "name": { "type": "string", "example": "AnotherGroup" }
        }
      },
      "GetCentersOfficeOptions": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Head Office" },
          "nameDecorated": { "type": "string", "example": "Head Office" }
        }
      },
      "GetCentersPageItems": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "externalId": { "type": "string", "example": "EXT-001" },
          "hierarchy": { "type": "string", "example": ".2." },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "name": { "type": "string", "example": "Center 1" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "status": { "$ref": "#/components/schemas/GetCentersStatus" }
        }
      },
      "GetCentersResponse": {
        "type": "object",
        "description": "GetCentersResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetCentersPageItems" },
            "uniqueItems": true
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "GetCentersSavingsAccounts": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 16 },
          "accountType": { "$ref": "#/components/schemas/GetCentersAccountType" },
          "currency": { "$ref": "#/components/schemas/GetCentersCenterIdCurrency" },
          "depositType": { "$ref": "#/components/schemas/GetCentersDepositType" },
          "id": { "type": "integer", "format": "int64", "example": 16 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "Voluntary savings" },
          "status": { "$ref": "#/components/schemas/GetCentersCenterIdStatus" },
          "timeline": { "$ref": "#/components/schemas/GetCentersTimeline" }
        }
      },
      "GetCentersStaffOptions": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string", "example": "D, Mary" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetCentersStatus": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "groupingStatusType.pending" },
          "description": { "type": "string", "example": "Pending" },
          "id": { "type": "integer", "format": "int64", "example": 100 }
        }
      },
      "GetCentersTemplateResponse": {
        "type": "object",
        "description": "GetCentersTemplateResponse",
        "properties": {
          "activationDate": { "type": "string", "format": "date" },
          "active": { "type": "boolean", "example": false },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "officeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetCentersOfficeOptions" },
            "uniqueItems": true
          },
          "staffOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetCentersStaffOptions" },
            "uniqueItems": true
          }
        }
      },
      "GetCentersTimeline": {
        "type": "object",
        "properties": {
          "submittedByFirstname": { "type": "string", "example": "App" },
          "submittedByLastname": { "type": "string", "example": "Administrator" },
          "submittedByUsername": { "type": "string", "example": "admin" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "GetChargeAppliesTo": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeAppliesTo.shares" },
          "description": { "type": "string", "example": "Shares" },
          "id": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "GetChargeCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeCalculationType.flat" },
          "description": { "type": "string", "example": "Flat" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetChargeOffReasonToExpenseAccountMappings": {
        "type": "object",
        "properties": {
          "expenseAccount": { "$ref": "#/components/schemas/GetGLAccountData" },
          "reasonCodeValue": { "$ref": "#/components/schemas/GetCodeValuesDataResponse" }
        }
      },
      "GetChargePaymentMode": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargepaymentmode.regular" },
          "description": { "type": "string", "example": "Regular" },
          "id": { "type": "integer", "format": "int64", "example": 0 }
        }
      },
      "GetChargeTimeType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeTimeType.activation" },
          "description": { "type": "string", "example": "Share Account Activate" },
          "id": { "type": "integer", "format": "int64", "example": 13 }
        }
      },
      "GetChargesAppliesTo": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeAppliesTo.savings" },
          "description": { "type": "string", "example": "Savings" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "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 }
        }
      },
      "GetChargesChargeCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeCalculationType.flat" },
          "description": { "type": "string", "example": "Flat" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetChargesChargeTimeType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeTimeType.specifiedDueDate" },
          "description": { "type": "string", "example": "Specified due date" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetChargesCurrency": {
        "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" }
        }
      },
      "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" }
        }
      },
      "GetClientChargeCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeCalculationType.flat" },
          "description": { "type": "string", "example": "Flat" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetClientChargeCurrency": {
        "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" }
        }
      },
      "GetClientChargeTimeType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeTimeType.specifiedDueDate" },
          "description": { "type": "string", "example": "Specified due date" },
          "id": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "GetClientObligeeDetailsResponse": {
        "type": "object",
        "description": "GetClientObligeeDetailsResponse",
        "properties": {
          "obligees": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetObligeeData" },
            "uniqueItems": true
          }
        }
      },
      "GetClientStatus": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "clientStatusType.pending" },
          "description": { "type": "string", "example": "Pending" },
          "id": { "type": "integer", "format": "int64", "example": 100 }
        }
      },
      "GetClientTransactionsCurrency": {
        "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" }
        }
      },
      "GetClientTransferProposalDateResponse": {
        "type": "object",
        "description": "GetClientTransferProposalDateResponse",
        "properties": { "proposedTransferDate": { "type": "string", "format": "date" } }
      },
      "GetClientsChargesPageItems": {
        "type": "object",
        "properties": {
          "amount": { "type": "number", "example": 100 },
          "amountOutstanding": { "type": "number", "example": 0 },
          "amountPaid": { "type": "number", "example": 0 },
          "amountWaived": { "type": "number", "example": 100 },
          "amountWrittenOff": { "type": "number", "example": 0 },
          "chargeCalculationType": {
            "$ref": "#/components/schemas/GetClientChargeCalculationType"
          },
          "chargeId": { "type": "integer", "format": "int64", "example": 5 },
          "chargeTimeType": { "$ref": "#/components/schemas/GetClientChargeTimeType" },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "currency": { "$ref": "#/components/schemas/GetClientChargeCurrency" },
          "dueDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 3 },
          "isActive": { "type": "boolean", "example": true },
          "isPaid": { "type": "boolean", "example": false },
          "isWaived": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Client Fee 1" },
          "penalty": { "type": "boolean", "example": true }
        }
      },
      "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
          }
        }
      },
      "GetClientsClientIdChargesResponse": {
        "type": "object",
        "description": "GetClientsClientIdChargesResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetClientsChargesPageItems" },
            "uniqueItems": true
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 4 }
        }
      },
      "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" },
          "expiryDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "issuanceDate": { "type": "string", "format": "date" }
        }
      },
      "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" },
          "staffId": { "type": "integer", "format": "int64", "example": 1 },
          "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 }
        }
      },
      "GetClientsClientIdTransactionsResponse": {
        "type": "object",
        "description": "GetClientsClientIdTransactionsResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetClientsPageItems" },
            "uniqueItems": true
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 20 }
        }
      },
      "GetClientsClientIdTransactionsTransactionIdResponse": {
        "type": "object",
        "description": "GetClientsClientIdTransactionsTransactionIdResponse",
        "properties": {
          "amount": { "type": "number", "example": 60 },
          "currency": { "$ref": "#/components/schemas/GetClientTransactionsCurrency" },
          "date": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "reversed": { "type": "boolean", "example": true },
          "submittedOnDate": { "type": "string", "format": "date" },
          "type": { "$ref": "#/components/schemas/GetClientsClientIdTransactionsType" }
        }
      },
      "GetClientsClientIdTransactionsType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "clientTransactionType.payCharge" },
          "description": { "type": "string", "example": "PAY_CHARGE" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "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" }
        }
      },
      "GetClientsPageItems": {
        "type": "object",
        "properties": {
          "amount": { "type": "number", "format": "double", "example": 22 },
          "currency": { "$ref": "#/components/schemas/GetClientTransactionsCurrency" },
          "date": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 226 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "reversed": { "type": "boolean", "example": false },
          "submittedOnDate": { "type": "string", "format": "date" },
          "type": { "$ref": "#/components/schemas/GetClientsClientIdTransactionsType" }
        }
      },
      "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 }
        }
      },
      "GetCollateralCurrencyResponse": {
        "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" }
        }
      },
      "GetCollateralTypeResponse": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 8 },
          "name": { "type": "string", "example": "Gold" }
        }
      },
      "GetConfigurableAttributes": {
        "type": "object",
        "description": "GetConfigurableAttributes",
        "properties": {
          "breach": { "type": "boolean", "example": true },
          "delinquencyBucketClassification": { "type": "boolean", "example": true },
          "discountDefault": { "type": "boolean", "example": true },
          "periodPaymentFrequency": { "type": "boolean", "example": true },
          "periodPaymentFrequencyType": { "type": "boolean", "example": true }
        }
      },
      "GetDataTablesResponse": {
        "type": "object",
        "description": "GetDataTablesResponse",
        "properties": {
          "applicationTableName": { "type": "string", "example": "m_client" },
          "columnHeaderData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ResultsetColumnHeaderData" }
          },
          "entitySubType": {
            "type": "string",
            "description": "The entity sub type the datatable is registered against, when the application table supports one (for example Person or Entity on m_client). Null when the registration is not scoped to a sub type.",
            "example": "Person"
          },
          "registeredTableName": { "type": "string", "example": "extra_client_details" }
        }
      },
      "GetDelinquencyActionsResponse": {
        "type": "object",
        "description": "GetDelinquencyActionsResponse",
        "properties": {
          "action": { "type": "string", "example": "pause" },
          "createdById": { "type": "integer", "format": "int64", "example": 1 },
          "createdOn": { "type": "string", "format": "date-time" },
          "endDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "lastModifiedOn": { "type": "string", "format": "date-time" },
          "startDate": { "type": "string", "format": "date" },
          "updatedById": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetDelinquencyBucket": {
        "type": "object",
        "description": "GetDelinquencyBucket",
        "properties": {
          "bucketType": { "type": "string", "example": "WORKING_CAPITAL" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Bucket 1" },
          "ranges": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetDelinquencyRange" }
          }
        }
      },
      "GetDelinquencyRange": {
        "type": "object",
        "description": "GetDelinquencyRange",
        "properties": {
          "classification": { "type": "string", "example": "Range 1" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "maximumAgeDays": { "type": "integer", "format": "int32", "example": 15 },
          "minimumAgeDays": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetDelinquencyTagHistoryResponse": {
        "type": "object",
        "description": "GetDelinquencyTagHistoryResponse",
        "properties": {
          "addedOnDate": { "type": "string", "format": "date" },
          "delinquencyRange": { "$ref": "#/components/schemas/DelinquencyRangeData" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "liftedOnDate": { "type": "string", "format": "date" },
          "loanId": { "type": "integer", "format": "int64", "example": 10 }
        }
      },
      "GetDisbursementDetail": {
        "type": "object",
        "description": "Single disbursement detail (expected and actual)",
        "properties": {
          "actualAmount": {
            "type": "number",
            "description": "Actually disbursed amount; null until disbursed",
            "example": 10000
          },
          "actualDisbursementDate": { "type": "string", "format": "date" },
          "disbursedByFirstname": { "type": "string" },
          "disbursedByLastname": { "type": "string" },
          "disbursedByUsername": { "type": "string" },
          "expectedDisbursementDate": { "type": "string", "format": "date" },
          "expectedMaturityDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "principal": {
            "type": "number",
            "description": "Expected (planned) disbursement principal. Tracks the active principal, so modifying a pending application or undoing an approval moves it too.",
            "example": 10000
          }
        }
      },
      "GetEntityDatatableChecksResponse": {
        "type": "object",
        "description": "GetEntityDatatableChecksResponse",
        "properties": {
          "datatableName": { "type": "string" },
          "entity": { "type": "string", "example": "m_loan" },
          "entityData": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "id": { "type": "integer", "format": "int64" },
          "order": { "type": "integer", "format": "int64" },
          "productId": { "type": "integer", "format": "int64" },
          "productName": { "type": "string" },
          "status": { "$ref": "#/components/schemas/EnumOptionData" },
          "systemDefined": { "type": "boolean" }
        }
      },
      "GetEntityDatatableChecksTemplateResponse": {
        "type": "object",
        "description": "GetEntityDatatableChecksTemplateResponse",
        "properties": {
          "datatables": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DatatableChecksData" }
          },
          "entities": { "type": "array", "items": { "type": "string" } },
          "loanProductDatas": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductData" }
          },
          "savingsProductDatas": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsProductData" }
          },
          "statusClient": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DatatableCheckStatusData" }
          },
          "statusGroup": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DatatableCheckStatusData" }
          },
          "statusLoans": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DatatableCheckStatusData" }
          },
          "statusSavings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DatatableCheckStatusData" }
          }
        }
      },
      "GetEquityType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.equity" },
          "description": { "type": "string", "example": "EQUITY" },
          "id": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "GetFinancialActivityAccountsResponse": {
        "type": "object",
        "description": "GetFinancialActivityAccountsResponse",
        "properties": {
          "financialActivityData": { "$ref": "#/components/schemas/FinancialActivityData" },
          "glAccountData": { "$ref": "#/components/schemas/GLAccountData" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetFixedDepositAccountsAccountChart": {
        "type": "object",
        "properties": {
          "accountId": { "type": "integer", "format": "int64", "example": 5 },
          "accountNumber": { "type": "integer", "format": "int64" },
          "chartSlabs": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetFixedDepositAccountsChartSlabs" },
            "uniqueItems": true
          },
          "fromDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 4 },
          "periodTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetFixedDepositAccountsPeriodTypes" },
            "uniqueItems": true
          }
        }
      },
      "GetFixedDepositAccountsAccountChartCurrency": {
        "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" }
        }
      },
      "GetFixedDepositAccountsAccountIdCurrency": {
        "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": 1 },
          "name": { "type": "string", "example": "US Dollar" },
          "nameCode": { "type": "string", "example": "currency.USD" }
        }
      },
      "GetFixedDepositAccountsAccountIdResponse": {
        "type": "object",
        "description": "GetFixedDepositAccountsAccountIdResponse",
        "properties": {
          "accountChart": { "$ref": "#/components/schemas/GetFixedDepositAccountsAccountChart" },
          "accountNo": { "type": "integer", "format": "int64" },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "Sangamesh N" },
          "currency": { "$ref": "#/components/schemas/GetFixedDepositAccountsAccountIdCurrency" },
          "depositAmount": { "type": "number", "format": "float", "example": 5000 },
          "depositPeriod": { "type": "integer", "format": "int32", "example": 6 },
          "depositPeriodFrequency": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsDepositPeriodFrequency"
          },
          "externalId": { "type": "string", "example": "FD-23" },
          "fieldOfficerId": { "type": "integer", "format": "int64", "example": 0 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsInterestCompoundingPeriodType"
          },
          "interestFreePeriodApplicable": { "type": "boolean", "example": false },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsInterestPostingPeriodType"
          },
          "maturityAmount": { "type": "number", "format": "float", "example": 5140.25 },
          "maturityDate": { "type": "string", "format": "date" },
          "maxDepositTerm": { "type": "integer", "format": "int32", "example": 4 },
          "maxDepositTermType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsMaxDepositTermType"
          },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 3 },
          "minDepositTermType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsMinDepositTermType"
          },
          "preClosurePenalApplicable": { "type": "boolean", "example": false },
          "savingsProductId": { "type": "integer", "format": "int64", "example": 3 },
          "savingsProductName": { "type": "string", "example": "FD01" },
          "status": { "$ref": "#/components/schemas/GetFixedDepositAccountsStatus" },
          "summary": { "$ref": "#/components/schemas/GetFixedDepositAccountsAccountIdSummary" },
          "timeline": { "$ref": "#/components/schemas/GetFixedDepositAccountsTimeline" }
        }
      },
      "GetFixedDepositAccountsAccountIdSummary": {
        "type": "object",
        "properties": {
          "accountBalance": { "type": "number", "format": "float", "example": 0 },
          "currency": { "$ref": "#/components/schemas/GetFixedDepositAccountsAccountIdCurrency" }
        }
      },
      "GetFixedDepositAccountsAccountIdTransactionsResponse": {
        "type": "object",
        "description": "GetFixedDepositAccountsAccountIdTransactionsResponse",
        "properties": {
          "accountId": { "type": "integer", "format": "int64", "example": 1 },
          "accountNo": { "type": "integer", "format": "int64", "example": 1 },
          "amount": { "type": "number", "format": "float", "example": 5000 },
          "date": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "reversed": { "type": "boolean", "example": false },
          "runningBalance": { "type": "number", "format": "float", "example": 0 },
          "transactionType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsAccountIdTransactionsType"
          }
        }
      },
      "GetFixedDepositAccountsAccountIdTransactionsType": {
        "type": "object",
        "description": "GetFixedDepositAccountsAccountIdTransactionsType",
        "properties": {
          "code": { "type": "string", "example": "savingsAccountTransactionType.interestPosting" },
          "deposit": { "type": "boolean", "example": false },
          "description": { "type": "string", "example": "Interest Posting" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "interestPosting": { "type": "boolean", "example": true },
          "withdrawal": { "type": "boolean", "example": false }
        }
      },
      "GetFixedDepositAccountsChartSlabs": {
        "type": "object",
        "properties": {
          "annualInterestRate": { "type": "number", "format": "double", "example": 5.5 },
          "currency": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsAccountChartCurrency"
          },
          "fromPeriod": { "type": "integer", "format": "int32", "example": 181 },
          "id": { "type": "integer", "format": "int64", "example": 13 },
          "periodType": { "$ref": "#/components/schemas/GetFixedDepositAccountsPeriodType" },
          "toPeriod": { "type": "integer", "format": "int32", "example": 365 }
        }
      },
      "GetFixedDepositAccountsCurrency": {
        "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": 1 },
          "name": { "type": "string", "example": "US Dollar" },
          "nameCode": { "type": "string", "example": "currency.USD" }
        }
      },
      "GetFixedDepositAccountsDepositPeriodFrequency": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "deposit.period.savingsPeriodFrequencyType.months"
          },
          "description": { "type": "string", "example": "Months" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetFixedDepositAccountsInterestCalculationDaysInYearType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savingsInterestCalculationDaysInYearType.days365"
          },
          "description": { "type": "string", "example": "365 Days" },
          "id": { "type": "integer", "format": "int64", "example": 365 }
        }
      },
      "GetFixedDepositAccountsInterestCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savingsInterestCalculationType.dailybalance" },
          "description": { "type": "string", "example": "Daily Balance" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetFixedDepositAccountsInterestCompoundingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.period.savingsCompoundingInterestPeriodType.monthly"
          },
          "description": { "type": "string", "example": "Monthly" },
          "id": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "GetFixedDepositAccountsInterestPostingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.posting.period.savingsPostingInterestPeriodType.monthly"
          },
          "description": { "type": "string", "example": "Monthly" },
          "id": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "GetFixedDepositAccountsMaxDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.years" },
          "description": { "type": "string", "example": "Years" },
          "id": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "GetFixedDepositAccountsMinDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.months" },
          "description": { "type": "string", "example": "Months" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetFixedDepositAccountsPeriodType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "interestChartPeriodType.days" },
          "description": { "type": "string", "example": "Days" },
          "id": { "type": "integer", "format": "int64", "example": 0 }
        }
      },
      "GetFixedDepositAccountsPeriodTypes": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "interestChartPeriodType.days" },
          "description": { "type": "string", "example": "Days" },
          "id": { "type": "integer", "format": "int64", "example": 0 }
        }
      },
      "GetFixedDepositAccountsProductOptions": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Passbook Savings" }
        }
      },
      "GetFixedDepositAccountsResponse": {
        "type": "object",
        "description": "GetFixedDepositAccountsResponse",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 1 },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "Sangamesh N" },
          "currency": { "$ref": "#/components/schemas/GetFixedDepositAccountsCurrency" },
          "depositAmount": { "type": "number", "format": "float", "example": 5000 },
          "depositPeriod": { "type": "integer", "format": "int32", "example": 6 },
          "depositPeriodFrequency": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsDepositPeriodFrequency"
          },
          "fieldOfficerId": { "type": "integer", "format": "int64", "example": 0 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsInterestCompoundingPeriodType"
          },
          "interestFreePeriodApplicable": { "type": "boolean", "example": false },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsInterestPostingPeriodType"
          },
          "maturityAmount": { "type": "number", "format": "float", "example": 5140.25 },
          "maturityDate": { "type": "string", "format": "date" },
          "maxDepositTerm": { "type": "integer", "format": "int32", "example": 4 },
          "maxDepositTermType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsMaxDepositTermType"
          },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 3 },
          "minDepositTermType": {
            "$ref": "#/components/schemas/GetFixedDepositAccountsMinDepositTermType"
          },
          "preClosurePenalApplicable": { "type": "boolean", "example": false },
          "savingsProductId": { "type": "integer", "format": "int64", "example": 3 },
          "savingsProductName": { "type": "string", "example": "FD01" },
          "status": { "$ref": "#/components/schemas/GetFixedDepositAccountsStatus" },
          "summary": { "$ref": "#/components/schemas/GetFixedDepositAccountsSummary" },
          "timeline": { "$ref": "#/components/schemas/GetFixedDepositAccountsTimeline" }
        }
      },
      "GetFixedDepositAccountsStatus": {
        "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"
          },
          "description": { "type": "string", "example": "Submitted and pending approval" },
          "id": { "type": "integer", "format": "int64", "example": 100 },
          "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 },
          "withdrawnByApplicant": { "type": "boolean", "example": false }
        }
      },
      "GetFixedDepositAccountsSummary": {
        "type": "object",
        "properties": {
          "accountBalance": { "type": "number", "format": "float", "example": 0 },
          "currency": { "$ref": "#/components/schemas/GetFixedDepositAccountsCurrency" }
        }
      },
      "GetFixedDepositAccountsTemplateResponse": {
        "type": "object",
        "description": "GetFixedDepositAccountsTemplateResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "small business" },
          "productOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetFixedDepositAccountsProductOptions" },
            "uniqueItems": true
          }
        }
      },
      "GetFixedDepositAccountsTimeline": {
        "type": "object",
        "properties": {
          "submittedByFirstname": { "type": "string", "example": "App" },
          "submittedByLastname": { "type": "string", "example": "Administrator" },
          "submittedByUsername": { "type": "string", "example": "admin" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "GetFixedDepositProductsAccountingRule": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountingRuleType.none" },
          "description": { "type": "string", "example": "NONE" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetFixedDepositProductsCurrency": {
        "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": 1 },
          "name": { "type": "string", "example": "US Dollar" },
          "nameCode": { "type": "string", "example": "currency.USD" }
        }
      },
      "GetFixedDepositProductsGlAccount": {
        "type": "object",
        "properties": {
          "glCode": { "type": "integer", "format": "int32", "example": 20 },
          "id": { "type": "integer", "format": "int64", "example": 12 },
          "name": { "type": "string", "example": "savings ref" }
        }
      },
      "GetFixedDepositProductsInterestCalculationDaysInYearType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savingsInterestCalculationDaysInYearType.days365"
          },
          "description": { "type": "string", "example": "365 Days" },
          "id": { "type": "integer", "format": "int64", "example": 365 }
        }
      },
      "GetFixedDepositProductsInterestCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savingsInterestCalculationType.dailybalance" },
          "description": { "type": "string", "example": "Daily Balance" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetFixedDepositProductsInterestCompoundingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.period.savingsCompoundingInterestPeriodType.monthly"
          },
          "description": { "type": "string", "example": "Monthly" },
          "id": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "GetFixedDepositProductsInterestPostingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.posting.period.savingsPostingInterestPeriodType.monthly"
          },
          "description": { "type": "string", "example": "Monthly" },
          "id": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "GetFixedDepositProductsMaxDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.years" },
          "description": { "type": "string", "example": "Years" },
          "id": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "GetFixedDepositProductsMinDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.months" },
          "description": { "type": "string", "example": "Months" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetFixedDepositProductsProductIdAccountingMappings": {
        "type": "object",
        "properties": {
          "feeReceivableAccount": {
            "$ref": "#/components/schemas/GetFixedDepositProductsGlAccount"
          },
          "incomeFromFeeAccount": {
            "$ref": "#/components/schemas/GetFixedDepositProductsGlAccount"
          },
          "incomeFromPenaltyAccount": {
            "$ref": "#/components/schemas/GetFixedDepositProductsGlAccount"
          },
          "interestOnSavingsAccount": {
            "$ref": "#/components/schemas/GetFixedDepositProductsGlAccount"
          },
          "interestPayableAccount": {
            "$ref": "#/components/schemas/GetFixedDepositProductsGlAccount"
          },
          "penaltyReceivableAccount": {
            "$ref": "#/components/schemas/GetFixedDepositProductsGlAccount"
          },
          "savingsControlAccount": {
            "$ref": "#/components/schemas/GetFixedDepositProductsGlAccount"
          },
          "savingsReferenceAccount": {
            "$ref": "#/components/schemas/GetFixedDepositProductsGlAccount"
          },
          "transfersInSuspenseAccount": {
            "$ref": "#/components/schemas/GetFixedDepositProductsGlAccount"
          }
        }
      },
      "GetFixedDepositProductsProductIdActiveChart": {
        "type": "object",
        "properties": {
          "chartSlabs": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetFixedDepositProductsProductIdChartSlabs" },
            "uniqueItems": true
          },
          "fromDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 8 },
          "periodTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetFixedDepositProductsProductIdPeriodType" },
            "uniqueItems": true
          },
          "savingsProductId": { "type": "integer", "format": "int64", "example": 8 },
          "savingsProductName": { "type": "string", "example": "Fixed deposit product" }
        }
      },
      "GetFixedDepositProductsProductIdChartSlabs": {
        "type": "object",
        "properties": {
          "annualInterestRate": { "type": "number", "format": "double", "example": 4.5 },
          "currency": { "$ref": "#/components/schemas/GetFixedDepositProductsProductIdCurrency" },
          "description": { "type": "string", "example": "from 0 to 90 days" },
          "fromPeriod": { "type": "integer", "format": "int32", "example": 0 },
          "id": { "type": "integer", "format": "int64", "example": 18 },
          "periodType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsProductIdPeriodType"
          },
          "toPeriod": { "type": "integer", "format": "int32", "example": 90 }
        }
      },
      "GetFixedDepositProductsProductIdCurrency": {
        "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" }
        }
      },
      "GetFixedDepositProductsProductIdFeeToIncomeAccountMappings": {
        "type": "object",
        "properties": {
          "charge": {
            "$ref": "#/components/schemas/GetFixedDepositProductsProductIdFeeToIncomeAccountMappingsCharge"
          },
          "incomeAccount": {
            "$ref": "#/components/schemas/GetFixedDepositProductsProductIdFeeToIncomeAccountMappingsIncomeAccount"
          }
        }
      },
      "GetFixedDepositProductsProductIdFeeToIncomeAccountMappingsCharge": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "id": { "type": "integer", "format": "int64", "example": 11 },
          "name": { "type": "string", "example": "sav charge" },
          "penalty": { "type": "boolean", "example": false }
        }
      },
      "GetFixedDepositProductsProductIdFeeToIncomeAccountMappingsIncomeAccount": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "24" },
          "id": { "type": "integer", "format": "int64", "example": 16 },
          "name": { "type": "string", "example": "income from savings fee" }
        }
      },
      "GetFixedDepositProductsProductIdInterestCompoundingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.period.savingsCompoundingInterestPeriodType.daily"
          },
          "description": { "type": "string", "example": "Daily" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetFixedDepositProductsProductIdMaxDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.years" },
          "description": { "type": "string", "example": "Years" },
          "id": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "GetFixedDepositProductsProductIdMinDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.weeks" },
          "description": { "type": "string", "example": "Weeks" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetFixedDepositProductsProductIdPenaltyToIncomeAccountMappings": {
        "type": "object",
        "properties": {
          "charge": {
            "$ref": "#/components/schemas/GetFixedDepositProductsProductIdPenaltyToIncomeAccountMappingsCharge"
          },
          "incomeAccount": { "$ref": "#/components/schemas/GetFixedDepositProductsGlAccount" }
        }
      },
      "GetFixedDepositProductsProductIdPenaltyToIncomeAccountMappingsCharge": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "id": { "type": "integer", "format": "int64", "example": 12 },
          "name": { "type": "string", "example": "sav 2" },
          "penalty": { "type": "boolean", "example": true }
        }
      },
      "GetFixedDepositProductsProductIdPeriodType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "interestChartPeriodType.weeks" },
          "description": { "type": "string", "example": "Weeks" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetFixedDepositProductsProductIdPreClosurePenalInterestOnType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "preClosurePenalInterestOnType.wholeTerm" },
          "description": { "type": "string", "example": "Whole term" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetFixedDepositProductsProductIdResponse": {
        "type": "object",
        "description": "GetFixedDepositProductsProductIdResponse",
        "properties": {
          "accountingMappings": {
            "$ref": "#/components/schemas/GetFixedDepositProductsProductIdAccountingMappings"
          },
          "activeChart": {
            "$ref": "#/components/schemas/GetFixedDepositProductsProductIdActiveChart"
          },
          "currency": { "$ref": "#/components/schemas/GetFixedDepositProductsProductIdCurrency" },
          "description": {
            "type": "string",
            "example": "Daily compounding using Daily Balance, 5% per year, 365 days in year"
          },
          "feeToIncomeAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFixedDepositProductsProductIdFeeToIncomeAccountMappings"
            },
            "uniqueItems": true
          },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsProductIdInterestCompoundingPeriodType"
          },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsInterestPostingPeriodType"
          },
          "maxDepositTerm": { "type": "integer", "format": "int32", "example": 5 },
          "maxDepositTermType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsProductIdMaxDepositTermType"
          },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 1 },
          "minDepositTermType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsProductIdMinDepositTermType"
          },
          "name": { "type": "string", "example": "Fixed deposit product" },
          "penaltyToIncomeAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFixedDepositProductsProductIdPenaltyToIncomeAccountMappings"
            },
            "uniqueItems": true
          },
          "preClosurePenalApplicable": { "type": "boolean", "example": true },
          "preClosurePenalInterest": { "type": "number", "format": "double", "example": 1.75 },
          "preClosurePenalInterestOnType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsProductIdPreClosurePenalInterestOnType"
          },
          "shortName": { "type": "string", "example": "FD01" }
        }
      },
      "GetFixedDepositProductsResponse": {
        "type": "object",
        "description": "GetFixedDepositProductsResponse",
        "properties": {
          "accountingRule": {
            "$ref": "#/components/schemas/GetFixedDepositProductsAccountingRule"
          },
          "currency": { "$ref": "#/components/schemas/GetFixedDepositProductsCurrency" },
          "description": { "type": "string", "example": "FD01" },
          "id": { "type": "integer", "format": "int64", "example": 3 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsInterestCompoundingPeriodType"
          },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsInterestPostingPeriodType"
          },
          "maxDepositTerm": { "type": "integer", "format": "int32", "example": 4 },
          "maxDepositTermType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsMaxDepositTermType"
          },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 3 },
          "minDepositTermType": {
            "$ref": "#/components/schemas/GetFixedDepositProductsMinDepositTermType"
          },
          "name": { "type": "string", "example": "FD01" },
          "nominalAnnualInterestRate": { "type": "number", "format": "double", "example": 0 },
          "preClosurePenalApplicable": { "type": "boolean", "example": false },
          "shortName": { "type": "string", "example": "FD01" }
        }
      },
      "GetFromAccountStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 14 },
          "id": { "type": "integer", "format": "int64", "example": 14 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "savings old" }
        }
      },
      "GetFromAccountTypeOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.savings" },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "value": { "type": "string", "example": "Savings Account" }
        }
      },
      "GetFromAccountTypeResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.savings" },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "value": { "type": "string", "example": "Savings Account" }
        }
      },
      "GetFromAccountTypeStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.savings" },
          "id": { "type": "integer", "format": "int32", "example": 2 },
          "value": { "type": "string", "example": "Savings Account" }
        }
      },
      "GetFromClientOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "example": "Client_FirstName_2VRAG Client_LastName_9QCY"
          },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" }
        }
      },
      "GetFromClientStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string", "example": "Test test" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" }
        }
      },
      "GetFromOfficeOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Head Office" },
          "nameDecorated": { "type": "string", "example": "Head Office" }
        }
      },
      "GetFromOfficeResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "decoratedName": { "type": "string", "example": "Head Office" },
          "externalId": { "type": "string", "example": "1" },
          "hierarchy": { "type": "string", "example": "." },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Head Office" },
          "openingDate": { "type": "string", "format": "date" }
        }
      },
      "GetFromOfficeStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Head Office" }
        }
      },
      "GetGLAccountData": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "e4" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Written off" }
        }
      },
      "GetGLAccountsResponse": {
        "type": "object",
        "description": "GetGLAccountsResponse",
        "properties": {
          "description": { "type": "string", "example": "Desc" },
          "disabled": { "type": "boolean", "example": false },
          "glCode": { "type": "string", "example": "100001" },
          "id": { "type": "integer", "format": "int64", "example": 16 },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Cash" },
          "nameDecorated": { "type": "string", "example": "....Cash" },
          "organizationRunningBalance": { "type": "integer", "format": "int64", "example": 118437 },
          "parentId": { "type": "integer", "format": "int64", "example": 1 },
          "tagId": { "$ref": "#/components/schemas/CodeValueData" },
          "type": { "$ref": "#/components/schemas/EnumOptionData" },
          "usage": { "$ref": "#/components/schemas/EnumOptionData" }
        }
      },
      "GetGLAccountsTemplateResponse": {
        "type": "object",
        "description": "GetGLAccountsTemplateResponse",
        "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" }
          },
          "disabled": { "type": "boolean", "example": false },
          "equityHeaderAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GLAccountData" }
          },
          "expenseHeaderAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GLAccountData" }
          },
          "liabilityHeaderAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GLAccountData" }
          },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "type": { "$ref": "#/components/schemas/EnumOptionData" },
          "usage": { "$ref": "#/components/schemas/EnumOptionData" },
          "usageOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          }
        }
      },
      "GetGlAccountMapping": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "012-34-65" },
          "id": { "type": "integer", "format": "int64", "example": 10 },
          "name": { "type": "string", "example": "Cash Account" }
        }
      },
      "GetGlClosureResponse": {
        "type": "object",
        "description": "GetGLClosureResponse",
        "properties": {
          "closingDate": { "type": "string", "format": "date", "example": "2013-01-02" },
          "comments": { "type": "string", "example": "closed" },
          "createdByUserId": { "type": "integer", "format": "int64", "example": 1 },
          "createdByUsername": { "type": "string", "example": "admin" },
          "createdDate": { "type": "string", "format": "date", "example": "2013-01-03" },
          "deleted": { "type": "boolean", "example": false },
          "id": { "type": "integer", "format": "int64", "example": 7 },
          "lastUpdatedByUserId": { "type": "integer", "format": "int64", "example": 1 },
          "lastUpdatedByUsername": { "type": "string", "example": "admin" },
          "lastUpdatedDate": { "type": "string", "format": "date", "example": "2013-01-03" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" }
        }
      },
      "GetGlobalConfigurationsResponse": {
        "type": "object",
        "description": "GetGlobalConfigurationsResponse",
        "properties": {
          "globalConfiguration": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GlobalConfigurationPropertyData" }
          }
        }
      },
      "GetGroupsGroupIdAccountsLoanAccounts": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 3 },
          "id": { "type": "integer", "format": "int64", "example": 3 },
          "loanType": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsLoanType" },
          "productId": { "type": "integer", "format": "int64", "example": 3 },
          "productName": { "type": "string", "example": "daily product" },
          "status": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsStatus" }
        }
      },
      "GetGroupsGroupIdAccountsLoanType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.group" },
          "description": { "type": "string", "example": "Group" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetGroupsGroupIdAccountsMemberLoanAccounts": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 4 },
          "id": { "type": "integer", "format": "int64", "example": 4 },
          "loanType": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsMemberLoanType" },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "testLoan" },
          "status": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsMemberLoanStatus" }
        }
      },
      "GetGroupsGroupIdAccountsMemberLoanStatus": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "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" },
          "description": { "type": "string", "example": "Approved" },
          "id": { "type": "integer", "format": "int64", "example": 200 },
          "overpaid": { "type": "boolean", "example": false },
          "pendingApproval": { "type": "boolean", "example": false },
          "waitingForDisbursal": { "type": "boolean", "example": true }
        }
      },
      "GetGroupsGroupIdAccountsMemberLoanType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.jlg" },
          "description": { "type": "string", "example": "JLG" },
          "id": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "GetGroupsGroupIdAccountsMemberSavingsAccounts": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 3 },
          "accountType": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsMemberLoanType" },
          "currency": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsSavingCurrency" },
          "id": { "type": "integer", "format": "int64", "example": 3 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "p_sav" },
          "status": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsSavingStatus" }
        }
      },
      "GetGroupsGroupIdAccountsResponse": {
        "type": "object",
        "description": "GetGroupsGroupIdAccountsResponse",
        "properties": {
          "loanAccounts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsLoanAccounts" },
            "uniqueItems": true
          },
          "memberLoanAccounts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsMemberLoanAccounts" },
            "uniqueItems": true
          },
          "memberSavingsAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetGroupsGroupIdAccountsMemberSavingsAccounts"
            },
            "uniqueItems": true
          },
          "savingsAccounts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsSavingAccounts" },
            "uniqueItems": true
          }
        }
      },
      "GetGroupsGroupIdAccountsSavingAccountType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.group" },
          "description": { "type": "string", "example": "Group" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetGroupsGroupIdAccountsSavingAccounts": {
        "type": "object",
        "properties": {
          "accountBalance": { "type": "number", "example": 5000 },
          "accountNo": { "type": "integer", "format": "int64", "example": 9 },
          "accountType": {
            "$ref": "#/components/schemas/GetGroupsGroupIdAccountsSavingAccountType"
          },
          "availableBalance": { "type": "number", "example": 4500 },
          "currency": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsSavingCurrency" },
          "id": { "type": "integer", "format": "int64", "example": 9 },
          "onHoldFunds": { "type": "number", "example": 300 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "p_sav" },
          "savingsAmountOnHold": { "type": "number", "example": 200 },
          "status": { "$ref": "#/components/schemas/GetGroupsGroupIdAccountsSavingStatus" }
        }
      },
      "GetGroupsGroupIdAccountsSavingCurrency": {
        "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" }
        }
      },
      "GetGroupsGroupIdAccountsSavingStatus": {
        "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"
          },
          "description": { "type": "string", "example": "Submitted and pending approval" },
          "id": { "type": "integer", "format": "int64", "example": 100 },
          "rejected": { "type": "boolean", "example": false },
          "submittedAndPendingApproval": { "type": "boolean", "example": true },
          "withdrawnByApplicant": { "type": "boolean", "example": false }
        }
      },
      "GetGroupsGroupIdAccountsStatus": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "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.submitted.and.pending.approval" },
          "description": { "type": "string", "example": "Submitted and pending approval" },
          "id": { "type": "integer", "format": "int64", "example": 100 },
          "overpaid": { "type": "boolean", "example": false },
          "pendingApproval": { "type": "boolean", "example": true },
          "waitingForDisbursal": { "type": "boolean", "example": false }
        }
      },
      "GetGroupsGroupIdClientMembers": {
        "type": "object",
        "description": "Returned when the clientMembers association is requested",
        "properties": {
          "displayName": { "type": "string", "example": "Sangamesh MB" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetGroupsGroupIdResponse": {
        "type": "object",
        "description": "GetGroupsGroupIdResponse",
        "properties": {
          "active": { "type": "boolean", "example": true },
          "clientMembers": {
            "type": "array",
            "description": "Returned when the clientMembers association is requested",
            "items": { "$ref": "#/components/schemas/GetGroupsGroupIdClientMembers" },
            "uniqueItems": true
          },
          "externalId": { "type": "string", "example": "000-1A" },
          "hierarchy": { "type": "string", "example": ".1." },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "First Group" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "staffId": { "type": "integer", "format": "int64", "example": 1 },
          "timeline": { "$ref": "#/components/schemas/GetGroupsGroupIdTimeline" }
        }
      },
      "GetGroupsGroupIdTimeline": {
        "type": "object",
        "properties": {
          "activatedByFirstname": { "type": "string", "example": "App" },
          "activatedByLastname": { "type": "string", "example": "Administrator" },
          "activatedByUsername": { "type": "string", "example": "admin" },
          "activatedOnDate": { "type": "string", "format": "date" }
        }
      },
      "GetGroupsPageItems": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "externalId": { "type": "string", "example": "000-1A" },
          "hierarchy": { "type": "string", "example": ".4." },
          "id": { "type": "integer", "format": "int64", "example": 4 },
          "name": { "type": "string", "example": "AnotherGroup" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "status": { "$ref": "#/components/schemas/GetGroupsStatus" }
        }
      },
      "GetGroupsResponse": {
        "type": "object",
        "description": "GetGroupsResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetGroupsPageItems" },
            "uniqueItems": true
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "GetGroupsStatus": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "clientStatusType.pending" },
          "description": { "type": "string", "example": "Pending" },
          "id": { "type": "integer", "format": "int64", "example": 100 }
        }
      },
      "GetGroupsTemplateClientOptions": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string", "example": "Petra Yton" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" }
        }
      },
      "GetGroupsTemplateColumnHeaderData": {
        "type": "object",
        "properties": {
          "columnDisplayType": { "type": "string", "example": "INTEGER" },
          "columnLength": { "type": "integer", "format": "int32", "example": 0 },
          "columnName": { "type": "string", "example": "group_id" },
          "columnType": { "type": "string", "example": "bigint" },
          "columnValues": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetGroupsTemplateColumnValues" },
            "uniqueItems": true
          },
          "isColumnNullable": { "type": "boolean", "example": false },
          "isColumnPrimaryKey": { "type": "boolean", "example": true }
        }
      },
      "GetGroupsTemplateColumnValues": { "type": "object" },
      "GetGroupsTemplateDatatables": {
        "type": "object",
        "properties": {
          "applicationTableName": { "type": "string", "example": "m_group" },
          "columnHeaderData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetGroupsTemplateColumnHeaderData" },
            "uniqueItems": true
          },
          "registeredTableName": { "type": "string", "example": "Group Activation Data" }
        }
      },
      "GetGroupsTemplateOfficeOptions": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Head Office" },
          "nameDecorated": { "type": "string", "example": "Head Office" }
        }
      },
      "GetGroupsTemplateResponse": {
        "type": "object",
        "description": "GetGroupsTemplateResponse",
        "properties": {
          "clientOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetGroupsTemplateClientOptions" },
            "uniqueItems": true
          },
          "datatables": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetGroupsTemplateDatatables" },
            "uniqueItems": true
          },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetGroupsTemplateOfficeOptions" },
            "uniqueItems": true
          },
          "staffOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetGroupsTemplateStaffOptions" },
            "uniqueItems": true
          }
        }
      },
      "GetGroupsTemplateStaffOptions": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string", "example": "C, Mike" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetHolidaysResponse": {
        "type": "object",
        "description": "GetHolidaysResponse",
        "properties": {
          "fromDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Good Friday" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "repaymentsRescheduledTo": { "type": "string", "format": "date" },
          "status": { "$ref": "#/components/schemas/EnumOptionData" },
          "toDate": { "type": "string", "format": "date" }
        }
      },
      "GetIncomeFromFeeAccountId": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "INCOME_OY1461237869836" },
          "id": { "type": "integer", "format": "int64", "example": 14 },
          "name": { "type": "string", "example": "ACCOUNT_NAME_1FJBQ" }
        }
      },
      "GetIncomeType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.income" },
          "description": { "type": "string", "example": "INCOME" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetInstructionTypeOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "standingInstructionType.fixed" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Fixed" }
        }
      },
      "GetInstructionTypeStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "standingInstructionType.fixed" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Fixed" }
        }
      },
      "GetInterestRateChartsChartSlabs": {
        "type": "object",
        "properties": {
          "annualInterestRate": { "type": "integer", "format": "int32", "example": 6 },
          "currency": { "$ref": "#/components/schemas/GetInterestRateChartsCurrency" },
          "fromPeriod": { "type": "integer", "format": "int32", "example": 1 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "periodTypes": { "$ref": "#/components/schemas/GetInterestRateChartsTemplatePeriodTypes" }
        }
      },
      "GetInterestRateChartsCurrency": {
        "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" }
        }
      },
      "GetInterestRateChartsResponse": {
        "type": "object",
        "description": "GetInterestRateChartsResponse",
        "properties": {
          "chartSlabs": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetInterestRateChartsChartSlabs" },
            "uniqueItems": true
          },
          "fromDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "savingsProductId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsProductName": { "type": "string", "example": "Fixed Deposit Product 001" }
        }
      },
      "GetInterestRateChartsTemplatePeriodTypes": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "interestChartPeriodType.days" },
          "description": { "type": "string", "example": "Days" },
          "id": { "type": "integer", "format": "int32", "example": 0 }
        }
      },
      "GetInterestRateChartsTemplateResponse": {
        "type": "object",
        "description": "GetInterestRateChartsTemplateResponse",
        "properties": {
          "periodTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetInterestRateChartsTemplatePeriodTypes" },
            "uniqueItems": true
          }
        }
      },
      "GetJobsJobIDJobRunHistoryResponse": {
        "type": "object",
        "description": "GetJobsJobIDJobRunHistoryResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/JobDetailHistoryDataSwagger" }
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 8 }
        }
      },
      "GetJobsResponse": {
        "type": "object",
        "description": "GetJobsResponse",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "cronExpression": { "type": "string", "example": "0 0 22 1/1 * ? *" },
          "currentlyRunning": { "type": "boolean", "example": false },
          "displayName": { "type": "string", "example": "Update loan Summary" },
          "initializingError": { "type": "string" },
          "jobId": { "type": "integer", "format": "int64", "example": 1 },
          "lastRunHistory": { "$ref": "#/components/schemas/JobDetailHistoryData" },
          "nextRunTime": { "type": "string", "format": "date-time" },
          "shortName": { "type": "string", "example": "LA_USUM" }
        }
      },
      "GetJournalEntriesTransactionIdResponse": {
        "type": "object",
        "description": "GetJournalEntriesTransactionIdResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/JournalEntryTransactionItem" }
          },
          "totalFilteredRecords": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "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 }
        }
      },
      "GetLoanChargeTemplateChargeOptions": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": true },
          "amount": { "type": "number", "format": "double", "example": 100 },
          "chargeAppliesTo": {
            "$ref": "#/components/schemas/GetLoanChargeTemplateChargeAppliesTo"
          },
          "chargeCalculationType": { "$ref": "#/components/schemas/GetLoanChargeCalculationType" },
          "chargeTimeType": { "$ref": "#/components/schemas/GetLoanChargeTemplateChargeTimeType" },
          "currency": { "$ref": "#/components/schemas/GetLoanChargeCurrency" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Collection fee" },
          "penalty": { "type": "boolean", "example": false }
        }
      },
      "GetLoanChargeTemplateChargeTimeType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeTimeType.specifiedDueDate" },
          "description": { "type": "string", "example": "Specified due date" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "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 }
        }
      },
      "GetLoanOriginatorTemplateResponse": {
        "type": "object",
        "description": "GetLoanOriginatorTemplateResponse",
        "properties": {
          "channelTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetCodeValuesDataResponse" }
          },
          "externalId": { "type": "string", "example": "EXT-001" },
          "originatorTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetCodeValuesDataResponse" }
          },
          "statusOptions": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }
        }
      },
      "GetLoanOriginatorsResponse": {
        "type": "object",
        "description": "GetLoanOriginatorsResponse",
        "properties": {
          "channelType": { "$ref": "#/components/schemas/GetCodeValuesDataResponse" },
          "externalId": { "type": "string", "example": "EXT-001" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Main Branch Originator" },
          "originatorType": { "$ref": "#/components/schemas/GetCodeValuesDataResponse" },
          "status": { "type": "string", "example": "ACTIVE" }
        }
      },
      "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 },
          "graceOnArrearsAgeing": { "type": "integer", "format": "int32", "example": 1 },
          "graceOnInterestPayment": { "type": "integer", "format": "int32", "example": 1 },
          "graceOnPrincipalPayment": { "type": "integer", "format": "int32", "example": 1 },
          "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": "mifos-standard-strategy"
          },
          "transactionProcessingStrategyName": { "type": "string", "example": "Mifos style" },
          "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": "mifos-standard-strategy"
          },
          "transactionProcessingStrategyName": { "type": "string", "example": "Mifos style" },
          "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": "mifos-standard-strategy" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Penalties, Fees, Interest, Principal order" }
        }
      },
      "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": "mifos-standard-strategyLoanProductValueConditionType.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 }
        }
      },
      "GetLoanRescheduleRequestResponse": {
        "type": "object",
        "description": "GetLoanRescheduleRequestResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 15 },
          "clientName": { "type": "string", "example": "clientName" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "loanAccountNumber": { "type": "string", "example": "000000018" },
          "loanId": { "type": "integer", "format": "int64", "example": 18 },
          "loanTermVariationsData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanTermVariationsData" },
            "uniqueItems": true
          },
          "recalculateInterest": { "type": "boolean", "example": false },
          "rescheduleFromDate": { "type": "string", "format": "date" },
          "rescheduleFromInstallment": { "type": "integer", "format": "int32", "example": 1 },
          "rescheduleReasonCodeValue": {
            "$ref": "#/components/schemas/RescheduleReasonsCodeValue"
          },
          "rescheduleReasonComment": { "type": "string", "example": "rescheduleReasonComment" },
          "statusEnum": { "$ref": "#/components/schemas/GetLoanRescheduleRequestStatus" },
          "timeline": { "$ref": "#/components/schemas/RescheduleReasonsTimeline" }
        }
      },
      "GetLoanRescheduleRequestStatus": {
        "type": "object",
        "properties": {
          "approved": { "type": "boolean", "example": false },
          "code": { "type": "string", "example": "loanStatusType.submitted.and.pending.approval" },
          "id": { "type": "integer", "format": "int64", "example": 100 },
          "pendingApproval": { "type": "boolean", "example": true },
          "rejected": { "type": "boolean", "example": false },
          "value": { "type": "string", "example": "Submitted and pending approval" }
        }
      },
      "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 }
        }
      },
      "GetLoansLoanIdChargesChargeIdResponse": {
        "type": "object",
        "description": "GetLoansLoanIdChargesChargeIdResponse",
        "properties": {
          "amount": { "type": "number", "format": "double", "example": 100 },
          "amountOrPercentage": { "type": "number", "format": "double", "example": 100 },
          "amountOutstanding": { "type": "number", "format": "double", "example": 100 },
          "amountPaid": { "type": "number", "format": "double", "example": 0 },
          "amountPercentageAppliedTo": { "type": "number", "format": "double", "example": 0 },
          "amountWaived": { "type": "number", "format": "double", "example": 0 },
          "amountWrittenOff": { "type": "number", "format": "double", "example": 0 },
          "chargeCalculationType": { "$ref": "#/components/schemas/GetLoanChargeCalculationType" },
          "chargeId": { "type": "integer", "format": "int64", "example": 1 },
          "chargeTimeType": { "$ref": "#/components/schemas/GetLoanChargeTimeType" },
          "currency": { "$ref": "#/components/schemas/GetLoanChargeCurrency" },
          "dueDate": { "type": "string", "format": "date" },
          "externalId": { "type": "string", "example": "95174ff9-1a75-4d72-a413-6f9b1cb988b7" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Loan Processing fee" },
          "penalty": { "type": "boolean", "example": false },
          "percentage": { "type": "number", "format": "double", "example": 0 },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "GetLoansLoanIdChargesTemplateResponse": {
        "type": "object",
        "description": "GetLoansLoanIdChargesTemplateResponse",
        "properties": {
          "amountPaid": { "type": "number", "format": "double", "example": 0 },
          "amountWaived": { "type": "number", "format": "double", "example": 0 },
          "amountWrittenOff": { "type": "number", "format": "double", "example": 0 },
          "chargeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetLoanChargeTemplateChargeOptions" },
            "uniqueItems": true
          },
          "penalty": { "type": "boolean", "example": false }
        }
      },
      "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 }
        }
      },
      "GetLoansLoanIdCollateralData": {
        "type": "object",
        "properties": {
          "clientCollateralId": { "type": "integer", "format": "int64", "example": 1 },
          "collateralId": { "type": "integer", "format": "int64", "example": 1 },
          "quantity": { "type": "number", "example": 1 },
          "total": { "type": "number", "example": 10000 },
          "totalCollateral": { "type": "number", "example": 10000 }
        }
      },
      "GetLoansLoanIdCollateralsResponse": {
        "type": "object",
        "description": "GetLoansLoanIdCollateralsResponse",
        "properties": {
          "currency": { "$ref": "#/components/schemas/GetCollateralCurrencyResponse" },
          "description": { "type": "string", "example": "24 Carat Gold chain weighing 12 grams" },
          "id": { "type": "integer", "format": "int64", "example": 12 },
          "type": { "$ref": "#/components/schemas/GetCollateralTypeResponse" },
          "value": { "type": "integer", "format": "int64", "example": 50000 }
        }
      },
      "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": "List 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" },
          "futurePeriods": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetLoansLoanIdRepaymentPeriod" }
          },
          "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 }
        }
      },
      "GetLoansLoanIdRepaymentScheduleInstallment": {
        "type": "object",
        "description": "A repayment schedule installment of a loan transaction template",
        "properties": {
          "amount": { "type": "number", "example": 1600 },
          "date": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "installmentId": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "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 },
          "collateral": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetLoansLoanIdCollateralData" }
          },
          "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": "List of GetLoansLoanIdDisbursementDetails",
            "items": { "$ref": "#/components/schemas/GetLoansLoanIdDisbursementDetails" }
          },
          "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" },
          "subStatus": { "$ref": "#/components/schemas/GetLoansLoanIdSubStatus" },
          "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": "mifos-standard-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 }
        }
      },
      "GetLoansLoanIdSubStatus": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "loanSubStatus.foreclosed" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "value": { "type": "string", "example": "Foreclosed" }
        }
      },
      "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 },
          "calculatedStartDate": { "type": "string", "format": "date" },
          "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 },
          "loanRepaymentScheduleInstallments": {
            "type": "array",
            "description": "Disburse template only: the repayment schedule installments the disbursement will produce",
            "items": { "$ref": "#/components/schemas/GetLoansLoanIdRepaymentScheduleInstallment" }
          },
          "netDisbursalAmount": { "type": "number", "format": "double", "example": 200 },
          "nextInstallmentDueDate": { "type": "string", "format": "date" },
          "numberOfFutureInstallments": { "type": "integer", "format": "int32", "example": 3 },
          "numberOfPastInstallments": { "type": "integer", "format": "int32", "example": 2 },
          "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 }
        }
      },
      "GetLockPeriodTypeEnum": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "example": "Days" },
          "id": { "type": "integer", "format": "int64", "example": 0 }
        }
      },
      "GetNotification": {
        "type": "object",
        "properties": {
          "action": { "type": "string", "example": "a" },
          "actorId": { "type": "integer", "format": "int64", "example": 1 },
          "content": { "type": "string", "example": "a" },
          "createdAt": { "type": "string", "example": "a" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "isRead": { "type": "boolean", "example": true },
          "isSystemGenerated": { "type": "boolean", "example": true },
          "objectId": { "type": "integer", "format": "int64", "example": 1 },
          "objectType": { "type": "string", "example": "a" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "tenantIdentifier": { "type": "string", "example": "a" },
          "userIds": {
            "type": "array",
            "example": [],
            "items": { "type": "integer", "format": "int64" }
          }
        }
      },
      "GetNotificationsResponse": {
        "type": "object",
        "description": "GetNotificationsResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetNotification" }
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 10 }
        }
      },
      "GetObligeeData": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string", "example": "00000002" },
          "amountReleased": { "type": "number", "format": "double", "example": 10000 },
          "amountTransferred": { "type": "number", "format": "double", "example": 1000 },
          "displayName": { "type": "string", "example": "John Doe" },
          "firstName": { "type": "string", "example": "John" },
          "guaranteeAmount": { "type": "number", "format": "double", "example": 100 },
          "lastName": { "type": "string", "example": "Doe" },
          "loanAmount": { "type": "number", "format": "double", "example": 12000 }
        }
      },
      "GetOfficesResponse": {
        "type": "object",
        "description": "GetOfficesResponse",
        "properties": {
          "allowedParents": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetOfficesResponse" }
          },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "externalId": { "type": "string", "example": "1" },
          "hierarchy": { "type": "string", "example": "." },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "locale": { "type": "string", "example": "en" },
          "name": { "type": "string", "example": "Head Office" },
          "nameDecorated": { "type": "string", "example": "Head Office" },
          "openingDate": { "type": "string", "format": "date" }
        }
      },
      "GetOfficesTemplateResponse": {
        "type": "object",
        "description": "GetOfficesTemplateResponse",
        "properties": {
          "allowedParents": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetOfficesResponse" }
          },
          "openingDate": { "type": "string", "format": "date" }
        }
      },
      "GetPageItemsStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "accountDetailId": { "type": "integer", "format": "int64", "example": 6 },
          "amount": { "type": "number", "format": "float", "example": 150 },
          "fromAccount": {
            "$ref": "#/components/schemas/GetFromAccountStandingInstructionSwagger"
          },
          "fromAccountType": {
            "$ref": "#/components/schemas/GetFromAccountTypeStandingInstructionSwagger"
          },
          "fromClient": { "$ref": "#/components/schemas/GetFromClientStandingInstructionSwagger" },
          "fromOffice": { "$ref": "#/components/schemas/GetFromOfficeStandingInstructionSwagger" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "instructionType": {
            "$ref": "#/components/schemas/GetInstructionTypeStandingInstructionSwagger"
          },
          "name": { "type": "string", "example": "test standing" },
          "priority": { "$ref": "#/components/schemas/GetPriorityStandingInstructionSwagger" },
          "recurrenceFrequency": {
            "$ref": "#/components/schemas/GetRecurrenceFrequencyStandingInstructionSwagger"
          },
          "recurrenceInterval": { "type": "integer", "format": "int32", "example": 1 },
          "recurrenceOnMonthDay": { "type": "string", "format": "date" },
          "recurrenceType": {
            "$ref": "#/components/schemas/GetRecurrenceTypeStandingInstructionSwagger"
          },
          "status": { "$ref": "#/components/schemas/GetStatusStandingInstructionSwagger" },
          "toAccount": { "$ref": "#/components/schemas/GetToAccountStandingInstructionSwagger" },
          "toAccountType": {
            "$ref": "#/components/schemas/GetToAccountTypeStandingInstructionSwagger"
          },
          "toClient": { "$ref": "#/components/schemas/GetToClientStandingInstructionSwagger" },
          "toOffice": { "$ref": "#/components/schemas/GetToOfficeStandingInstructionSwagger" },
          "transferType": {
            "$ref": "#/components/schemas/GetTransferTypeStandingInstructionSwagger"
          },
          "validFrom": { "type": "string", "format": "date" }
        }
      },
      "GetPasswordPreferencesTemplateResponse": {
        "type": "object",
        "description": "GetPasswordPreferencesTemplateResponse",
        "properties": {
          "active": { "type": "boolean", "example": true },
          "description": {
            "type": "string",
            "example": "Password must be at least 1 character and not more that 50 characters long"
          },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "key": { "type": "string", "example": "simple" }
        }
      },
      "GetPaymentAllocation": {
        "type": "object",
        "description": "GetPaymentAllocation",
        "properties": {
          "paymentAllocationOrder": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PaymentAllocationOrder" }
          },
          "transactionType": { "type": "string", "example": "DEFAULT" }
        }
      },
      "GetPaymentTypeData": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "isSystemDefined": { "type": "boolean", "example": false },
          "name": { "type": "string", "example": "Money Transfer" }
        }
      },
      "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 }
        }
      },
      "GetPostDatedChecks": {
        "type": "object",
        "description": "GetPostDatedChecks",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 900800200300 },
          "amount": { "type": "number", "example": 100000 },
          "date": { "type": "string", "format": "date", "example": "2021-07-18" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "installmentId": { "type": "integer", "format": "int32", "example": 1 },
          "name": { "type": "string", "example": "AMANA" }
        }
      },
      "GetPriorityOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "standingInstructionPriority.urgent" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Urgent Priority" }
        }
      },
      "GetPriorityStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "standingInstructionPriority.medium" },
          "id": { "type": "integer", "format": "int32", "example": 3 },
          "value": { "type": "string", "example": "Medium Priority" }
        }
      },
      "GetProductsAccountingMappingOptions": {
        "type": "object",
        "properties": {
          "assetAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetProductsAssetAccountOptions" },
            "uniqueItems": true
          },
          "equityAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetProductsEquityAccountOptions" },
            "uniqueItems": true
          },
          "incomeAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetProductsIncomeAccountOptions" },
            "uniqueItems": true
          },
          "liabilityAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetProductsLiabilityAccountOptions" },
            "uniqueItems": true
          }
        }
      },
      "GetProductsAccountingMappings": {
        "type": "object",
        "properties": {
          "incomeFromFeeAccountId": { "$ref": "#/components/schemas/GetIncomeFromFeeAccountId" },
          "shareEquityId": { "$ref": "#/components/schemas/GetShareEquityId" },
          "shareReferenceId": { "$ref": "#/components/schemas/GetShareReferenceId" },
          "shareSuspenseId": { "$ref": "#/components/schemas/GetShareSuspenseId" }
        }
      },
      "GetProductsAccountingRule": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountingRuleType.cash" },
          "description": { "type": "string", "example": "CASH BASED" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetProductsAssetAccountOptions": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "example": "DEFAULT_DESCRIPTION" },
          "disabled": { "type": "boolean", "example": false },
          "glCode": { "type": "string", "example": "ASSET_ED1461237837829" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "ACCOUNT_NAME_1FJBQ" },
          "nameDecorated": { "type": "string", "example": "ACCOUNT_NAME_1FJBQ" },
          "tagId": { "$ref": "#/components/schemas/GetProductsTagId" },
          "type": { "$ref": "#/components/schemas/GetAssetType" },
          "usage": { "$ref": "#/components/schemas/GetProductsLiabilityUsage" }
        }
      },
      "GetProductsCharges": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": true },
          "amount": { "type": "integer", "format": "int32", "example": 1 },
          "chargeAppliesTo": { "$ref": "#/components/schemas/GetChargeAppliesTo" },
          "chargeCalculationType": { "$ref": "#/components/schemas/GetChargeCalculationType" },
          "chargePaymentMode": { "$ref": "#/components/schemas/GetChargePaymentMode" },
          "chargeTimeType": { "$ref": "#/components/schemas/GetChargeTimeType" },
          "currency": { "$ref": "#/components/schemas/GetChargesCurrency" },
          "id": { "type": "integer", "format": "int64", "example": 20 },
          "name": { "type": "string", "example": "Share Account Activation Flat" },
          "penalty": { "type": "boolean", "example": false }
        }
      },
      "GetProductsCurrency": {
        "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": 100 },
          "name": { "type": "string", "example": "US Dollar" },
          "nameCode": { "type": "string", "example": "currency.USD" }
        }
      },
      "GetProductsEquityAccountOptions": {
        "type": "object",
        "properties": {
          "disabled": { "type": "boolean", "example": false },
          "glCode": { "type": "string", "example": "EQUITY1" },
          "id": { "type": "integer", "format": "int64", "example": 66 },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Equity Account" },
          "nameDecorated": { "type": "string", "example": "Equity Account" },
          "tagId": { "$ref": "#/components/schemas/GetProductsTagId" },
          "type": { "$ref": "#/components/schemas/GetEquityType" },
          "usage": { "$ref": "#/components/schemas/GetProductsLiabilityUsage" }
        }
      },
      "GetProductsIncomeAccountOptions": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "example": "DEFAULT_DESCRIPTION" },
          "disabled": { "type": "boolean", "example": false },
          "glCode": { "type": "string", "example": "INCOME_9O1461237838422" },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "ACCOUNT_NAME_1FJBQ" },
          "nameDecorated": { "type": "string", "example": "ACCOUNT_NAME_1FJBQ" },
          "tagId": { "$ref": "#/components/schemas/GetProductsTagId" },
          "type": { "$ref": "#/components/schemas/GetIncomeType" },
          "usage": { "$ref": "#/components/schemas/GetProductsLiabilityUsage" }
        }
      },
      "GetProductsLiabilityAccountOptions": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "example": "DEFAULT_DESCRIPTION" },
          "disabled": { "type": "boolean", "example": false },
          "glCode": { "type": "string", "example": "LIABILITY_2T1461237838897" },
          "id": { "type": "integer", "format": "int64", "example": 4 },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "ACCOUNT_NAME_1FJBQ" },
          "nameDecorated": { "type": "string", "example": "ACCOUNT_NAME_1FJBQ" },
          "tagId": { "$ref": "#/components/schemas/GetProductsTagId" },
          "type": { "$ref": "#/components/schemas/GetProductsLiabilityType" },
          "usage": { "$ref": "#/components/schemas/GetProductsLiabilityUsage" }
        }
      },
      "GetProductsLiabilityType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.liability" },
          "description": { "type": "string", "example": "LIABILITY" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetProductsLiabilityUsage": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountUsage.detail" },
          "description": { "type": "string", "example": "DETAIL" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetProductsMarketPrice": {
        "type": "object",
        "properties": {
          "fromDate": { "type": "string", "example": "Feb 1, 2016" },
          "id": { "type": "integer", "format": "int64", "example": 4 },
          "shareValue": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetProductsMinimumActivePeriodFrequencyTypeOptions": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savings.lockin.sharePeriodFrequencyType.days" },
          "description": { "type": "string", "example": "Days" },
          "id": { "type": "integer", "format": "int64", "example": 0 }
        }
      },
      "GetProductsPageItems": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Share Product" },
          "shortName": { "type": "string", "example": "Share Product Description" },
          "totalShares": { "type": "integer", "format": "int32", "example": 100 }
        }
      },
      "GetProductsTagId": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 0 },
          "isActive": { "type": "boolean", "example": false }
        }
      },
      "GetProductsTypeProductIdResponse": {
        "type": "object",
        "description": "GetProductsTypeProductIdResponse",
        "properties": {
          "accountingMappingOptions": {
            "$ref": "#/components/schemas/GetProductsAccountingMappingOptions"
          },
          "accountingMappings": { "$ref": "#/components/schemas/GetProductsAccountingMappings" },
          "accountingRule": { "$ref": "#/components/schemas/GetProductsAccountingRule" },
          "allowDividendCalculationForInactiveClients": { "type": "boolean", "example": true },
          "chargeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetProductsCharges" },
            "uniqueItems": true
          },
          "charges": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetProductsCharges" },
            "uniqueItems": true
          },
          "currency": { "$ref": "#/components/schemas/GetProductsCurrency" },
          "currencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetChargesCurrency" },
            "uniqueItems": true
          },
          "description": { "type": "string", "example": "SP" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "lockPeriodTypeEnum": { "$ref": "#/components/schemas/GetLockPeriodTypeEnum" },
          "lockinPeriod": { "type": "integer", "format": "int32", "example": 1 },
          "lockinPeriodFrequencyTypeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetProductsMinimumActivePeriodFrequencyTypeOptions"
            },
            "uniqueItems": true
          },
          "marketPrice": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetProductsMarketPrice" },
            "uniqueItems": true
          },
          "maximumShares": { "type": "integer", "format": "int32", "example": 50 },
          "minimumActivePeriod": { "type": "integer", "format": "int32", "example": 1 },
          "minimumActivePeriodForDividendsTypeEnum": {
            "$ref": "#/components/schemas/GetLockPeriodTypeEnum"
          },
          "minimumActivePeriodFrequencyTypeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetProductsMinimumActivePeriodFrequencyTypeOptions"
            },
            "uniqueItems": true
          },
          "minimumShares": { "type": "integer", "format": "int32", "example": 1 },
          "name": { "type": "string", "example": "Share Product" },
          "nominalShares": { "type": "integer", "format": "int32", "example": 10 },
          "shareCapital": { "type": "integer", "format": "int32", "example": 50 },
          "shortName": { "type": "string", "example": "SP" },
          "totalShares": { "type": "integer", "format": "int32", "example": 100 },
          "totalSharesIssued": { "type": "integer", "format": "int32", "example": 50 },
          "unitPrice": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetProductsTypeResponse": {
        "type": "object",
        "description": "GetProductsTypeResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetProductsPageItems" },
            "uniqueItems": true
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetProvisioningCriteriaCriteriaIdResponse": {
        "type": "object",
        "description": "GetProvisioningCriteriaCriteriaIdResponse",
        "properties": {
          "createdBy": { "type": "string", "example": "admin" },
          "criteriaId": { "type": "integer", "format": "int64", "example": 1 },
          "criteriaName": { "type": "string", "example": "High Risk Products Criteria" },
          "definitions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ProvisioningCriteriaDefinitionData" }
          },
          "loanProducts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductData" }
          }
        }
      },
      "GetProvisioningCriteriaResponse": {
        "type": "object",
        "description": "GetProvisioningCriteriaResponse",
        "properties": {
          "createdBy": { "type": "string", "example": "admin" },
          "criteriaId": { "type": "integer", "format": "int64", "example": 1 },
          "criteriaName": { "type": "string", "example": "High Risk Products Criteria" }
        }
      },
      "GetRecurrenceFrequencyOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "frequencyperiodFrequencyType.days" },
          "id": { "type": "integer", "format": "int32", "example": 0 },
          "value": { "type": "string", "example": "Days" }
        }
      },
      "GetRecurrenceFrequencyStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "frequencyperiodFrequencyType.months" },
          "id": { "type": "integer", "format": "int32", "example": 2 },
          "value": { "type": "string", "example": "Months" }
        }
      },
      "GetRecurrenceTypeOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountTransferRecurrenceType.periodic" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Periodic Recurrence" }
        }
      },
      "GetRecurrenceTypeStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountTransferRecurrenceType.periodic" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Periodic Recurrence" }
        }
      },
      "GetRecurringCurrency": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "USD" },
          "decimalPlaces": { "type": "integer", "format": "int32", "example": 4 },
          "displayLabel": { "type": "string", "example": "US Dollar ($)" },
          "displaySymbol": { "type": "string", "example": "$" },
          "inMultiplesOf": { "type": "integer", "format": "int32", "example": 100 },
          "name": { "type": "string", "example": "US Dollar" },
          "nameCode": { "type": "string", "example": "currency.USD" }
        }
      },
      "GetRecurringDepositAccountsAccountChart": {
        "type": "object",
        "properties": {
          "accountId": { "type": "integer", "format": "int64", "example": 5 },
          "accountNumber": { "type": "integer", "format": "int64" },
          "chartSlabs": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetRecurringDepositAccountsChartSlabs" },
            "uniqueItems": true
          },
          "fromDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 4 },
          "periodTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetRecurringDepositAccountsPeriodTypes" },
            "uniqueItems": true
          }
        }
      },
      "GetRecurringDepositAccountsAccountChartCurrency": {
        "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" }
        }
      },
      "GetRecurringDepositAccountsAccountIdResponse": {
        "type": "object",
        "description": "GetRecurringDepositAccountsAccountIdResponse",
        "properties": {
          "accountChart": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsAccountChart"
          },
          "accountNo": { "type": "integer", "format": "int64" },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "Sangamesh N" },
          "currency": { "$ref": "#/components/schemas/GetRecurringDepositAccountsCurrency" },
          "depositPeriod": { "type": "integer", "format": "int32", "example": 6 },
          "depositPeriodFrequency": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsDepositPeriodFrequency"
          },
          "expectedFirstDepositOnDate": { "type": "string", "format": "date" },
          "externalId": { "type": "string", "example": "RD-23" },
          "fieldOfficerId": { "type": "integer", "format": "int64", "example": 0 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsInterestCompoundingPeriodType"
          },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsInterestPostingPeriodType"
          },
          "maxDepositTerm": { "type": "integer", "format": "int32", "example": 4 },
          "maxDepositTermType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsMaxDepositTermType"
          },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 3 },
          "minDepositTermType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsMinDepositTermType"
          },
          "preClosurePenalApplicable": { "type": "boolean", "example": false },
          "recurringDepositAmount": { "type": "integer", "format": "int32", "example": 100 },
          "recurringDepositFrequency": { "type": "integer", "format": "int32", "example": 1 },
          "recurringDepositFrequencyType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsRecurringDepositFrequencyType"
          },
          "savingsProductId": { "type": "integer", "format": "int64", "example": 3 },
          "savingsProductName": { "type": "string", "example": "RD01" },
          "status": { "$ref": "#/components/schemas/GetRecurringDepositAccountsStatus" },
          "summary": { "$ref": "#/components/schemas/GetRecurringDepositAccountsSummary" },
          "timeline": { "$ref": "#/components/schemas/GetRecurringDepositAccountsTimeline" }
        }
      },
      "GetRecurringDepositAccountsChartSlabs": {
        "type": "object",
        "properties": {
          "annualInterestRate": { "type": "number", "format": "double", "example": 5.5 },
          "currency": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsAccountChartCurrency"
          },
          "fromPeriod": { "type": "integer", "format": "int32", "example": 181 },
          "id": { "type": "integer", "format": "int64", "example": 13 },
          "periodType": { "$ref": "#/components/schemas/GetRecurringDepositAccountsPeriodType" },
          "toPeriod": { "type": "integer", "format": "int32", "example": 365 }
        }
      },
      "GetRecurringDepositAccountsCurrency": {
        "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": 1 },
          "name": { "type": "string", "example": "US Dollar" },
          "nameCode": { "type": "string", "example": "currency.USD" }
        }
      },
      "GetRecurringDepositAccountsDepositPeriodFrequency": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "deposit.period.savingsPeriodFrequencyType.months"
          },
          "description": { "type": "string", "example": "Months" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetRecurringDepositAccountsInterestCalculationDaysInYearType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savingsInterestCalculationDaysInYearType.days365"
          },
          "description": { "type": "string", "example": "365 Days" },
          "id": { "type": "integer", "format": "int64", "example": 365 }
        }
      },
      "GetRecurringDepositAccountsInterestCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savingsInterestCalculationType.dailybalance" },
          "description": { "type": "string", "example": "Daily Balance" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetRecurringDepositAccountsInterestCompoundingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.period.savingsCompoundingInterestPeriodType.monthly"
          },
          "description": { "type": "string", "example": "Monthly" },
          "id": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "GetRecurringDepositAccountsInterestPostingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.posting.period.savingsPostingInterestPeriodType.monthly"
          },
          "description": { "type": "string", "example": "Monthly" },
          "id": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "GetRecurringDepositAccountsMaxDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.years" },
          "description": { "type": "string", "example": "Years" },
          "id": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "GetRecurringDepositAccountsMinDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.months" },
          "description": { "type": "string", "example": "Months" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetRecurringDepositAccountsPeriodType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "interestChartPeriodType.days" },
          "description": { "type": "string", "example": "Days" },
          "id": { "type": "integer", "format": "int64", "example": 0 }
        }
      },
      "GetRecurringDepositAccountsPeriodTypes": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "interestChartPeriodType.days" },
          "description": { "type": "string", "example": "Days" },
          "id": { "type": "integer", "format": "int64", "example": 0 }
        }
      },
      "GetRecurringDepositAccountsRecurringDepositAccountIdTransactionsTemplateResponse": {
        "type": "object",
        "description": "GetRecurringDepositAccountsRecurringDepositAccountIdTransactionsTemplateResponse",
        "properties": {
          "accountId": { "type": "integer", "format": "int64", "example": 1 },
          "accountNo": { "type": "string", "example": "000000001" },
          "amount": { "type": "number", "example": 100000 },
          "currency": { "$ref": "#/components/schemas/GetRecurringCurrency" },
          "date": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "paymentTypeOptions": {
            "type": "array",
            "example": [],
            "items": { "type": "integer", "format": "int32" }
          },
          "reversed": { "type": "boolean", "example": false },
          "transactionType": { "$ref": "#/components/schemas/GetRecurringTransactionType" }
        }
      },
      "GetRecurringDepositAccountsRecurringDepositAccountIdTransactionsTransactionIdResponse": {
        "type": "object",
        "description": "GetRecurringDepositAccountsRecurringDepositAccountIdTransactionsTransactionIdResponse",
        "properties": {
          "accountId": { "type": "integer", "format": "int64", "example": 1 },
          "accountNo": { "type": "string", "example": "000000001" },
          "amount": { "type": "number", "format": "float", "example": 5000 },
          "currency": { "$ref": "#/components/schemas/GetRecurringTransactionsCurrency" },
          "date": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "paymentDetailData": { "$ref": "#/components/schemas/GetRecurringPaymentDetailData" },
          "reversed": { "type": "boolean", "example": true },
          "runningBalance": { "type": "integer", "format": "int32", "example": 0 },
          "transactionType": {
            "$ref": "#/components/schemas/GetRecurringTransactionsTransactionType"
          }
        }
      },
      "GetRecurringDepositAccountsRecurringDepositFrequencyType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "recurring.deposit.savingsPeriodFrequencyType.months"
          },
          "description": { "type": "string", "example": "Months" },
          "id": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "GetRecurringDepositAccountsResponse": {
        "type": "object",
        "description": "GetRecurringDepositAccountsResponse",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 1 },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "Sangamesh N" },
          "currency": { "$ref": "#/components/schemas/GetRecurringDepositAccountsCurrency" },
          "depositAmount": { "type": "number", "format": "float", "example": 1150 },
          "depositPeriod": { "type": "integer", "format": "int32", "example": 6 },
          "depositPeriodFrequency": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsDepositPeriodFrequency"
          },
          "fieldOfficerId": { "type": "integer", "format": "int64", "example": 0 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsInterestCompoundingPeriodType"
          },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsInterestPostingPeriodType"
          },
          "maturityAmount": { "type": "number", "format": "float", "example": 252.59 },
          "maturityDate": { "type": "string", "format": "date" },
          "maxDepositTerm": { "type": "integer", "format": "int32", "example": 4 },
          "maxDepositTermType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsMaxDepositTermType"
          },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 3 },
          "minDepositTermType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsMinDepositTermType"
          },
          "preClosurePenalApplicable": { "type": "boolean", "example": false },
          "recurringDepositAmount": { "type": "integer", "format": "int32", "example": 100 },
          "recurringDepositFrequency": { "type": "integer", "format": "int32", "example": 1 },
          "recurringDepositFrequencyType": {
            "$ref": "#/components/schemas/GetRecurringDepositAccountsRecurringDepositFrequencyType"
          },
          "savingsProductId": { "type": "integer", "format": "int64", "example": 3 },
          "savingsProductName": { "type": "string", "example": "RD01" },
          "status": { "$ref": "#/components/schemas/GetRecurringDepositAccountsStatus" },
          "summary": { "$ref": "#/components/schemas/GetRecurringDepositAccountsSummary" },
          "timeline": { "$ref": "#/components/schemas/GetRecurringDepositAccountsTimeline" }
        }
      },
      "GetRecurringDepositAccountsStatus": {
        "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"
          },
          "description": { "type": "string", "example": "Submitted and pending approval" },
          "id": { "type": "integer", "format": "int64", "example": 100 },
          "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 },
          "withdrawnByApplicant": { "type": "boolean", "example": false }
        }
      },
      "GetRecurringDepositAccountsSummary": {
        "type": "object",
        "properties": {
          "accountBalance": { "type": "number", "format": "float", "example": 0 },
          "currency": { "$ref": "#/components/schemas/GetRecurringDepositAccountsCurrency" }
        }
      },
      "GetRecurringDepositAccountsTemplateResponse": {
        "type": "object",
        "description": "GetRecurringDepositAccountsTemplateResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "small business" },
          "productOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetRecurringProductOptions" },
            "uniqueItems": true
          }
        }
      },
      "GetRecurringDepositAccountsTimeline": {
        "type": "object",
        "properties": {
          "submittedByFirstname": { "type": "string", "example": "App" },
          "submittedByLastname": { "type": "string", "example": "Administrator" },
          "submittedByUsername": { "type": "string", "example": "admin" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "GetRecurringDepositProductsAccountingRule": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountingRuleType.none" },
          "description": { "type": "string", "example": "NONE" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetRecurringDepositProductsCurrency": {
        "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": 1 },
          "name": { "type": "string", "example": "US Dollar" },
          "nameCode": { "type": "string", "example": "currency.USD" }
        }
      },
      "GetRecurringDepositProductsGlAccount": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "2000001" },
          "id": { "type": "integer", "format": "int64", "example": 12 },
          "name": { "type": "string", "example": "savings control" }
        }
      },
      "GetRecurringDepositProductsInterestCalculationDaysInYearType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savingsInterestCalculationDaysInYearType.days365"
          },
          "description": { "type": "string", "example": "365 Days" },
          "id": { "type": "integer", "format": "int32", "example": 365 }
        }
      },
      "GetRecurringDepositProductsInterestCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savingsInterestCalculationType.dailybalance" },
          "description": { "type": "string", "example": "Daily Balance" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetRecurringDepositProductsInterestCompoundingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.period.savingsCompoundingInterestPeriodType.monthly"
          },
          "description": { "type": "string", "example": "Monthly" },
          "id": { "type": "integer", "format": "int32", "example": 4 }
        }
      },
      "GetRecurringDepositProductsInterestPostingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.posting.period.savingsPostingInterestPeriodType.monthly"
          },
          "description": { "type": "string", "example": "Monthly" },
          "id": { "type": "integer", "format": "int32", "example": 4 }
        }
      },
      "GetRecurringDepositProductsMaxDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.years" },
          "description": { "type": "string", "example": "Years" },
          "id": { "type": "integer", "format": "int32", "example": 3 }
        }
      },
      "GetRecurringDepositProductsMinDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.months" },
          "description": { "type": "string", "example": "Months" },
          "id": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "GetRecurringDepositProductsProductIdAccountingMappings": {
        "type": "object",
        "properties": {
          "feeReceivableAccount": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsGlAccount"
          },
          "incomeFromFeeAccount": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsGlAccount"
          },
          "incomeFromPenaltyAccount": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsGlAccount"
          },
          "interestOnSavingsAccount": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsGlAccount"
          },
          "interestPayableAccount": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsGlAccount"
          },
          "penaltyReceivableAccount": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsGlAccount"
          },
          "savingsControlAccount": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsGlAccount"
          },
          "transfersInSuspenseAccount": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsGlAccount"
          }
        }
      },
      "GetRecurringDepositProductsProductIdActiveChart": {
        "type": "object",
        "properties": {
          "chartSlabs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdChartSlabs"
            },
            "uniqueItems": true
          },
          "fromDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64", "example": 8 },
          "periodTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdPeriodType"
            },
            "uniqueItems": true
          },
          "savingsProductId": { "type": "integer", "format": "int64", "example": 8 },
          "savingsProductName": { "type": "string", "example": "Recurring deposit product" }
        }
      },
      "GetRecurringDepositProductsProductIdChartSlabs": {
        "type": "object",
        "properties": {
          "annualInterestRate": { "type": "number", "format": "double", "example": 4.5 },
          "currency": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdCurrency"
          },
          "description": { "type": "string", "example": "from 0 to 90 days" },
          "fromPeriod": { "type": "integer", "format": "int32", "example": 0 },
          "id": { "type": "integer", "format": "int64", "example": 18 },
          "periodType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdPeriodType"
          },
          "toPeriod": { "type": "integer", "format": "int32", "example": 90 }
        }
      },
      "GetRecurringDepositProductsProductIdCurrency": {
        "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" }
        }
      },
      "GetRecurringDepositProductsProductIdFeeToIncomeAccountMappings": {
        "type": "object",
        "properties": {
          "charge": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdFeeToIncomeAccountMappingsCharge"
          },
          "incomeAccount": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdFeeToIncomeAccountMappingsIncomeAccount"
          }
        }
      },
      "GetRecurringDepositProductsProductIdFeeToIncomeAccountMappingsCharge": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "id": { "type": "integer", "format": "int64", "example": 11 },
          "name": { "type": "string", "example": "sav charge" },
          "penalty": { "type": "boolean", "example": false }
        }
      },
      "GetRecurringDepositProductsProductIdFeeToIncomeAccountMappingsIncomeAccount": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "24" },
          "id": { "type": "integer", "format": "int64", "example": 16 },
          "name": { "type": "string", "example": "income from savings fee" }
        }
      },
      "GetRecurringDepositProductsProductIdInterestCompoundingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.period.savingsCompoundingInterestPeriodType.daily"
          },
          "description": { "type": "string", "example": "Daily" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetRecurringDepositProductsProductIdMaxDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.years" },
          "description": { "type": "string", "example": "Years" },
          "id": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "GetRecurringDepositProductsProductIdMinDepositTermType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "deposit.term.savingsPeriodFrequencyType.weeks" },
          "description": { "type": "string", "example": "Weeks" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetRecurringDepositProductsProductIdPenaltyToIncomeAccountMappings": {
        "type": "object",
        "properties": {
          "charge": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdPenaltyToIncomeAccountMappingsCharge"
          },
          "incomeAccount": { "$ref": "#/components/schemas/GetRecurringDepositProductsGlAccount" }
        }
      },
      "GetRecurringDepositProductsProductIdPenaltyToIncomeAccountMappingsCharge": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "id": { "type": "integer", "format": "int64", "example": 12 },
          "name": { "type": "string", "example": "sav 2" },
          "penalty": { "type": "boolean", "example": true }
        }
      },
      "GetRecurringDepositProductsProductIdPeriodType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "interestChartPeriodType.weeks" },
          "description": { "type": "string", "example": "Weeks" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetRecurringDepositProductsProductIdPreClosurePenalInterestOnType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "preClosurePenalInterestOnType.wholeTerm" },
          "description": { "type": "string", "example": "Whole term" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetRecurringDepositProductsProductIdResponse": {
        "type": "object",
        "description": "GetRecurringDepositProductsProductIdResponse",
        "properties": {
          "accountingMappings": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdAccountingMappings"
          },
          "activeChart": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdActiveChart"
          },
          "currency": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdCurrency"
          },
          "description": {
            "type": "string",
            "example": "Daily compounding using Daily Balance, 5% per year, 365 days in year"
          },
          "feeToIncomeAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdFeeToIncomeAccountMappings"
            },
            "uniqueItems": true
          },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdInterestCompoundingPeriodType"
          },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsInterestPostingPeriodType"
          },
          "maxDepositTerm": { "type": "integer", "format": "int32", "example": 5 },
          "maxDepositTermType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdMaxDepositTermType"
          },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 1 },
          "minDepositTermType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdMinDepositTermType"
          },
          "name": { "type": "string", "example": "Recurring deposit product" },
          "penaltyToIncomeAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdPenaltyToIncomeAccountMappings"
            },
            "uniqueItems": true
          },
          "preClosurePenalApplicable": { "type": "boolean", "example": true },
          "preClosurePenalInterest": { "type": "number", "format": "double", "example": 1.75 },
          "preClosurePenalInterestOnType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsProductIdPreClosurePenalInterestOnType"
          },
          "recurringDepositFrequency": { "type": "integer", "format": "int32", "example": 1 },
          "recurringDepositFrequencyType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsRecurringDepositFrequencyType"
          },
          "shortName": { "type": "string", "example": "RD01" }
        }
      },
      "GetRecurringDepositProductsRecurringDepositFrequencyType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "recurring.deposit.savingsPeriodFrequencyType.months"
          },
          "description": { "type": "string", "example": "Months" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetRecurringDepositProductsResponse": {
        "type": "object",
        "description": "GetRecurringDepositProductsResponse",
        "properties": {
          "accountingRule": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsAccountingRule"
          },
          "currency": { "$ref": "#/components/schemas/GetRecurringDepositProductsCurrency" },
          "description": { "type": "string", "example": "RD01" },
          "id": { "type": "integer", "format": "int64", "example": 3 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsInterestCompoundingPeriodType"
          },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsInterestPostingPeriodType"
          },
          "maxDepositTerm": { "type": "integer", "format": "int32", "example": 4 },
          "maxDepositTermType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsMaxDepositTermType"
          },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 3 },
          "minDepositTermType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsMinDepositTermType"
          },
          "name": { "type": "string", "example": "RD01" },
          "nominalAnnualInterestRate": { "type": "number", "format": "double", "example": 0 },
          "preClosurePenalApplicable": { "type": "boolean", "example": false },
          "recurringDepositFrequency": { "type": "integer", "format": "int32", "example": 1 },
          "recurringDepositFrequencyType": {
            "$ref": "#/components/schemas/GetRecurringDepositProductsRecurringDepositFrequencyType"
          },
          "shortName": { "type": "string", "example": "RD01" }
        }
      },
      "GetRecurringPaymentDetailData": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "integer", "format": "int32" },
          "bankNumber": { "type": "integer", "format": "int32" },
          "checkNumber": { "type": "integer", "format": "int32" },
          "id": { "type": "integer", "format": "int64", "example": 62 },
          "paymentType": { "$ref": "#/components/schemas/GetRecurringPaymentType" },
          "receiptNumber": { "type": "integer", "format": "int32" },
          "routingCode": { "type": "integer", "format": "int32" }
        }
      },
      "GetRecurringPaymentType": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 11 },
          "name": { "type": "string", "example": "cash" }
        }
      },
      "GetRecurringProductOptions": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Passbook Savings" }
        }
      },
      "GetRecurringTransactionType": {
        "type": "object",
        "properties": {
          "approveTransfer": { "type": "boolean", "example": false },
          "code": { "type": "string", "example": "savingsAccountTransactionType.deposit" },
          "deposit": { "type": "boolean", "example": true },
          "description": { "type": "string", "example": "Deposit" },
          "feeDeduction": { "type": "boolean", "example": false },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "initiateTransfer": { "type": "boolean", "example": false },
          "interestPosting": { "type": "boolean", "example": false },
          "overdraftFee": { "type": "boolean", "example": true },
          "overdraftInterest": { "type": "boolean", "example": false },
          "rejectTransfer": { "type": "boolean", "example": false },
          "withdrawTransfer": { "type": "boolean", "example": false },
          "withdrawal": { "type": "boolean", "example": false },
          "writtenoff": { "type": "boolean", "example": false }
        }
      },
      "GetRecurringTransactionsCurrency": {
        "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" }
        }
      },
      "GetRecurringTransactionsTransactionType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savingsAccountTransactionType.withdrawal" },
          "deposit": { "type": "boolean", "example": false },
          "description": { "type": "string", "example": "Withdrawal" },
          "feeDeduction": { "type": "boolean", "example": false },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "interestPosting": { "type": "boolean", "example": false },
          "withdrawal": { "type": "boolean", "example": true }
        }
      },
      "GetReportMailingJobsResponse": {
        "type": "object",
        "description": "GetReportMailingJobsResponse",
        "properties": {
          "description": { "type": "string", "example": "Client Numbers Report" },
          "emailAttachmentFileFormat": { "$ref": "#/components/schemas/EnumOptionData" },
          "emailMessage": { "type": "string", "example": "Client Numbers Report" },
          "emailRecipients": { "type": "string", "example": "info@musonisystem.com" },
          "emailSubject": { "type": "string", "example": "Client Numbers Report" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "isActive": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Client Numbers Report" },
          "nextRunDateTime": { "type": "string", "format": "date-time" },
          "numberOfRuns": { "type": "integer", "format": "int32", "example": 0 },
          "recurrence": { "type": "string" },
          "runAsUserId": { "type": "integer", "format": "int64", "example": 1 },
          "startDateTime": { "type": "string", "format": "date-time" },
          "stretchyReport": { "$ref": "#/components/schemas/ReportData" },
          "stretchyReportParamMap": {
            "type": "string",
            "example": "{\"startDate\":\"2016-07-01\",\"endDate\":\"2016-08-02\",\"selectOffice\":\"1\",\"environementUrl\":\"environementUrl\"}"
          },
          "timeline": { "$ref": "#/components/schemas/ReportMailingJobTimelineData" }
        }
      },
      "GetReportMailingJobsTemplate": {
        "type": "object",
        "description": "GetReportMailingJobsTemplate",
        "properties": {
          "emailAttachmentFileFormatOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "isActive": { "type": "boolean", "example": true },
          "stretchyReportParamDateOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          }
        }
      },
      "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" } }
        }
      },
      "GetRescheduleReasonsAllowedTypes": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": true },
          "description": { "type": "string", "example": "description" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "mandatory": { "type": "boolean", "example": false },
          "name": { "type": "string", "example": "reason" },
          "position": { "type": "integer", "format": "int32", "example": 0 }
        }
      },
      "GetRescheduleReasonsTemplateResponse": {
        "type": "object",
        "description": "GetRescheduleReasonsTemplateResponse",
        "properties": {
          "rescheduleReasons": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetRescheduleReasonsAllowedTypes" },
            "uniqueItems": true
          }
        }
      },
      "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" }
        }
      },
      "GetSavingsAccountChargesPaidByData": {
        "type": "object",
        "properties": {
          "amount": { "type": "number", "example": 0 },
          "chargeId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetSavingsAccountTransactionsPageItem": {
        "type": "object",
        "properties": {
          "accountId": { "type": "integer", "format": "int64", "example": 1 },
          "accountNo": { "type": "string", "example": "000000001" },
          "amount": { "type": "number", "example": 500 },
          "chargesPaidByData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsAccountChargesPaidByData" },
            "uniqueItems": true
          },
          "currency": { "$ref": "#/components/schemas/GetTransactionsCurrency" },
          "date": { "type": "string", "format": "date" },
          "entryType": { "type": "string", "enum": ["CREDIT", "DEBIT"], "example": "CREDIT" },
          "externalId": { "type": "string", "example": "5dd80a7c-ccba-4446-b378-01eb6f53e871" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "interestedPostedAsOn": { "type": "boolean", "example": false },
          "isManualTransaction": { "type": "boolean", "example": false },
          "isReversal": { "type": "boolean", "example": false },
          "lienTransaction": { "type": "boolean", "example": false },
          "originalTransactionId": { "type": "integer", "format": "int64", "example": 0 },
          "paymentDetailData": { "$ref": "#/components/schemas/GetTransactionsPaymentDetailData" },
          "releaseTransactionId": { "type": "integer", "format": "int64", "example": 0 },
          "reversed": { "type": "boolean", "example": false },
          "runningBalance": { "type": "number", "example": 500 },
          "submittedByUsername": { "type": "string", "example": "admin" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "transactionType": { "$ref": "#/components/schemas/GetTranscationEnumData" }
        }
      },
      "GetSavingsAccountsResponse": {
        "type": "object",
        "description": "GetSavingsAccountsResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsPageItems" },
            "uniqueItems": true
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetSavingsAccountsSavingsAccountIdChargesResponse": {
        "type": "object",
        "description": "GetSavingsAccountsSavingsAccountIdChargesResponse",
        "properties": {
          "accountId": { "type": "integer", "format": "int64", "example": 57 },
          "amount": { "type": "number", "format": "float", "example": 100 },
          "amountOrPercentage": { "type": "number", "format": "float", "example": 100 },
          "amountOutstanding": { "type": "number", "format": "float", "example": 100 },
          "amountPaid": { "type": "number", "format": "float", "example": 0 },
          "amountPercentageAppliedTo": { "type": "number", "format": "double", "example": 0 },
          "amountWaived": { "type": "number", "format": "float", "example": 0 },
          "amountWrittenOff": { "type": "number", "format": "float", "example": 0 },
          "chargeCalculationType": {
            "$ref": "#/components/schemas/GetChargesChargeCalculationType"
          },
          "chargeId": { "type": "integer", "format": "int64", "example": 3 },
          "chargeTimeType": { "$ref": "#/components/schemas/GetChargesChargeTimeType" },
          "currency": { "$ref": "#/components/schemas/GetChargesCurrencyResponse" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Savings account maintenance fee" },
          "penalty": { "type": "boolean", "example": false },
          "percentage": { "type": "number", "format": "double", "example": 0 }
        }
      },
      "GetSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse": {
        "type": "object",
        "description": "GetSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse",
        "properties": {
          "amount": { "type": "number", "format": "float", "example": 100 },
          "amountOrPercentage": { "type": "number", "format": "float", "example": 100 },
          "amountOutstanding": { "type": "number", "format": "float", "example": 100 },
          "amountPaid": { "type": "number", "format": "float", "example": 0 },
          "amountPercentageAppliedTo": { "type": "number", "format": "double", "example": 0 },
          "amountWaived": { "type": "number", "format": "float", "example": 0 },
          "amountWrittenOff": { "type": "number", "format": "float", "example": 0 },
          "chargeCalculationType": {
            "$ref": "#/components/schemas/GetChargesChargeCalculationType"
          },
          "chargeId": { "type": "integer", "format": "int64", "example": 1 },
          "chargeTimeType": { "$ref": "#/components/schemas/GetChargesChargeTimeType" },
          "currency": { "$ref": "#/components/schemas/GetChargesCurrencyResponse" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Passbook fee" },
          "penalty": { "type": "boolean", "example": false },
          "percentage": { "type": "number", "format": "double", "example": 0 }
        }
      },
      "GetSavingsAccountsSavingsAccountIdChargesTemplateResponse": {
        "type": "object",
        "description": "GetSavingsAccountsSavingsAccountIdChargesTemplateResponse",
        "properties": {
          "amountPaid": { "type": "number", "format": "float", "example": 0 },
          "amountWaived": { "type": "number", "format": "float", "example": 0 },
          "amountWrittenOff": { "type": "number", "format": "float", "example": 0 },
          "chargeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsChargesOptions" },
            "uniqueItems": true
          },
          "penalty": { "type": "boolean", "example": false }
        }
      },
      "GetSavingsAccountsTemplateResponse": {
        "type": "object",
        "description": "GetSavingsAccountsTemplateResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "small business" },
          "productOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductOptions" },
            "uniqueItems": true
          }
        }
      },
      "GetSavingsAssetLiabilityType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.asset" },
          "description": { "type": "string", "example": "ASSET" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetSavingsAssetTagId": { "type": "object" },
      "GetSavingsChargeCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeCalculationType.flat" },
          "description": { "type": "string", "example": "Flat" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetSavingsChargePaymentMode": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargepaymentmode.regular" },
          "description": { "type": "string", "example": "chargepaymentmode.regular" },
          "id": { "type": "integer", "format": "int32", "example": 0 }
        }
      },
      "GetSavingsChargeTimeType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeTimeType.specifiedDueDate" },
          "description": { "type": "string", "example": "Specified due date" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetSavingsChargesChargeTimeType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeTimeType.specifiedDueDate" },
          "description": { "type": "string", "example": "Specified due date" },
          "id": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "GetSavingsChargesOptions": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": true },
          "amount": { "type": "number", "format": "float", "example": 100 },
          "chargeCalculationType": {
            "$ref": "#/components/schemas/GetChargesChargeCalculationType"
          },
          "chargeTimeType": { "$ref": "#/components/schemas/GetSavingsChargesChargeTimeType" },
          "chargesAppliesTo": { "$ref": "#/components/schemas/GetChargesAppliesTo" },
          "currency": { "$ref": "#/components/schemas/GetChargesCurrencyResponse" },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "name": { "type": "string", "example": "Passbook Fee" },
          "penalty": { "type": "boolean", "example": false }
        }
      },
      "GetSavingsCurrency": {
        "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" }
        }
      },
      "GetSavingsInterestCalculationDaysInYearType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savingsInterestCalculationDaysInYearType.days365"
          },
          "id": { "type": "integer", "format": "int32", "example": 365 },
          "value": { "type": "string", "example": "365 Days" }
        }
      },
      "GetSavingsInterestCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savingsInterestCalculationType.dailybalance" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Daily Balance" }
        }
      },
      "GetSavingsInterestCompoundingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.period.savingsCompoundingInterestPeriodType.daily"
          },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Daily" }
        }
      },
      "GetSavingsInterestPostingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.posting.period.savingsPostingInterestPeriodType.monthly"
          },
          "id": { "type": "integer", "format": "int32", "example": 4 },
          "value": { "type": "string", "example": "Monthly" }
        }
      },
      "GetSavingsPageItems": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "string", "example": "000000001" },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "small business" },
          "currency": { "$ref": "#/components/schemas/GetSavingsCurrency" },
          "fieldOfficerId": { "type": "integer", "format": "int64", "example": 0 },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetSavingsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetSavingsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetSavingsInterestCompoundingPeriodType"
          },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetSavingsInterestPostingPeriodType"
          },
          "nominalAnnualInterestRate": { "type": "number", "format": "double", "example": 5 },
          "savingsProductId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsProductName": { "type": "string", "example": "Passbook Savings" },
          "status": { "$ref": "#/components/schemas/GetSavingsStatus" },
          "summary": { "$ref": "#/components/schemas/GetSavingsSummary" },
          "timeline": { "$ref": "#/components/schemas/GetSavingsTimeline" }
        }
      },
      "GetSavingsProductOptions": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "name": { "type": "string", "example": "Passbook Savings" }
        }
      },
      "GetSavingsProductsAccountingMappingOptions": {
        "type": "object",
        "properties": {
          "assetAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductsAssetAccountOptions" },
            "uniqueItems": true
          },
          "expenseAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductsExpenseAccountOptions" },
            "uniqueItems": true
          },
          "incomeAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductsIncomeAccountOptions" },
            "uniqueItems": true
          },
          "liabilityAccountOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductsLiabilityAccountOptions" },
            "uniqueItems": true
          }
        }
      },
      "GetSavingsProductsAccountingMappings": {
        "type": "object",
        "properties": {
          "feeReceivableAccount": { "$ref": "#/components/schemas/GetSavingsProductsGlAccount" },
          "incomeFromFeeAccount": { "$ref": "#/components/schemas/GetSavingsProductsGlAccount" },
          "incomeFromInterest": { "$ref": "#/components/schemas/GetSavingsProductsGlAccount" },
          "incomeFromPenaltyAccount": {
            "$ref": "#/components/schemas/GetSavingsProductsGlAccount"
          },
          "interestOnSavingsAccount": {
            "$ref": "#/components/schemas/GetSavingsProductsGlAccount"
          },
          "interestPayableAccount": { "$ref": "#/components/schemas/GetSavingsProductsGlAccount" },
          "interestReceivableAccount": {
            "$ref": "#/components/schemas/GetSavingsProductsGlAccount"
          },
          "overdraftPortfolioControl": {
            "$ref": "#/components/schemas/GetSavingsProductsGlAccount"
          },
          "penaltyReceivableAccount": {
            "$ref": "#/components/schemas/GetSavingsProductsGlAccount"
          },
          "savingsControlAccount": { "$ref": "#/components/schemas/GetSavingsProductsGlAccount" },
          "savingsReferenceAccount": { "$ref": "#/components/schemas/GetSavingsProductsGlAccount" },
          "transfersInSuspenseAccount": {
            "$ref": "#/components/schemas/GetSavingsProductsGlAccount"
          },
          "writeOffAccount": { "$ref": "#/components/schemas/GetSavingsProductsGlAccount" }
        }
      },
      "GetSavingsProductsAccountingRule": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountingRuleType.cash" },
          "id": { "type": "integer", "format": "int32", "example": 2 },
          "value": { "type": "string", "example": "CASH BASED" }
        }
      },
      "GetSavingsProductsAssetAccountOptions": {
        "type": "object",
        "properties": {
          "disabled": { "type": "boolean", "example": false },
          "glCode": { "type": "string", "example": "100001" },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Cash" },
          "tagId": { "$ref": "#/components/schemas/GetSavingsAssetTagId" },
          "type": { "$ref": "#/components/schemas/GetSavingsAssetLiabilityType" },
          "usage": { "$ref": "#/components/schemas/GetSavingsProductsLiabilityUsage" }
        }
      },
      "GetSavingsProductsChargeAppliesTo": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "chargeAppliesTo.savings" },
          "description": { "type": "string", "example": "Savings" },
          "id": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "GetSavingsProductsChargeOptions": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": true },
          "amount": { "type": "integer", "format": "int64", "example": 200 },
          "chargeAppliesTo": { "$ref": "#/components/schemas/GetSavingsProductsChargeAppliesTo" },
          "chargeCalculationType": {
            "$ref": "#/components/schemas/GetSavingsChargeCalculationType"
          },
          "chargePaymentMode": { "$ref": "#/components/schemas/GetSavingsChargePaymentMode" },
          "chargeTimeType": { "$ref": "#/components/schemas/GetSavingsChargeTimeType" },
          "currency": { "$ref": "#/components/schemas/GetSavingsCurrency" },
          "id": { "type": "integer", "format": "int64", "example": 4 },
          "name": { "type": "string", "example": "Savings charge 1" },
          "penalty": { "type": "boolean", "example": false }
        }
      },
      "GetSavingsProductsExpenseAccountOptions": {
        "type": "object",
        "properties": {
          "disabled": { "type": "boolean", "example": false },
          "glCode": { "type": "string", "example": "60001" },
          "id": { "type": "integer", "format": "int64", "example": 6 },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Write Off Expenses" },
          "tagId": { "$ref": "#/components/schemas/GetSavingsAssetTagId" },
          "type": { "$ref": "#/components/schemas/GetSavingsProductsExpenseType" },
          "usage": { "$ref": "#/components/schemas/GetSavingsProductsLiabilityUsage" }
        }
      },
      "GetSavingsProductsExpenseType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.expense" },
          "description": { "type": "string", "example": "EXPENSE" },
          "id": { "type": "integer", "format": "int32", "example": 5 }
        }
      },
      "GetSavingsProductsFeeToIncomeAccountMappings": {
        "type": "object",
        "properties": {
          "charge": {
            "$ref": "#/components/schemas/GetSavingsProductsFeeToIncomeAccountMappingsCharge"
          },
          "incomeAccount": {
            "$ref": "#/components/schemas/GetSavingsProductsFeeToIncomeAccountMappingsIncomeAccount"
          }
        }
      },
      "GetSavingsProductsFeeToIncomeAccountMappingsCharge": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "id": { "type": "integer", "format": "int64", "example": 11 },
          "name": { "type": "string", "example": "sav charge" },
          "penalty": { "type": "boolean", "example": false }
        }
      },
      "GetSavingsProductsFeeToIncomeAccountMappingsIncomeAccount": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "24" },
          "id": { "type": "integer", "format": "int64", "example": 16 },
          "name": { "type": "string", "example": "income from savings fee" }
        }
      },
      "GetSavingsProductsFundSourceAccount": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "20" },
          "id": { "type": "integer", "format": "int64", "example": 12 },
          "name": { "type": "string", "example": "savings ref" }
        }
      },
      "GetSavingsProductsGlAccount": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "2000001" },
          "id": { "type": "integer", "format": "int64", "example": 12 },
          "name": { "type": "string", "example": "savings control" }
        }
      },
      "GetSavingsProductsIncomeAccountOptions": {
        "type": "object",
        "properties": {
          "disabled": { "type": "boolean", "example": false },
          "glCode": { "type": "string", "example": "40001" },
          "id": { "type": "integer", "format": "int64", "example": 3 },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "income from interest" },
          "tagId": { "$ref": "#/components/schemas/GetSavingsAssetTagId" },
          "type": { "$ref": "#/components/schemas/GetSavingsProductsIncomeType" },
          "usage": { "$ref": "#/components/schemas/GetSavingsProductsLiabilityUsage" }
        }
      },
      "GetSavingsProductsIncomeType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.income" },
          "description": { "type": "string", "example": "INCOME" },
          "id": { "type": "integer", "format": "int32", "example": 4 }
        }
      },
      "GetSavingsProductsInterestCalculationDaysInYearType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savingsInterestCalculationDaysInYearType.days365"
          },
          "id": { "type": "integer", "format": "int32", "example": 365 },
          "value": { "type": "string", "example": "365 Days" }
        }
      },
      "GetSavingsProductsInterestCalculationType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savingsInterestCalculationType.dailybalance" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Daily Balance" }
        }
      },
      "GetSavingsProductsInterestCompoundingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.period.savingsCompoundingInterestPeriodType.daily"
          },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Daily" }
        }
      },
      "GetSavingsProductsInterestPostingPeriodType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "savings.interest.posting.period.savingsPostingInterestPeriodType.monthly"
          },
          "id": { "type": "integer", "format": "int32", "example": 4 },
          "value": { "type": "string", "example": "Monthly" }
        }
      },
      "GetSavingsProductsLiabilityAccountOptions": {
        "type": "object",
        "properties": {
          "disabled": { "type": "boolean", "example": false },
          "glCode": { "type": "string", "example": "50001" },
          "id": { "type": "integer", "format": "int64", "example": 15 },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Savings Control" },
          "nameDecorated": { "type": "string", "example": "Savings Control" },
          "tagId": { "$ref": "#/components/schemas/GetSavingsProductsLiabilityTagId" },
          "type": { "$ref": "#/components/schemas/GetSavingsProductsLiabilityType" },
          "usage": { "$ref": "#/components/schemas/GetSavingsProductsLiabilityUsage" }
        }
      },
      "GetSavingsProductsLiabilityTagId": {
        "type": "object",
        "properties": { "id": { "type": "integer", "format": "int64", "example": 0 } }
      },
      "GetSavingsProductsLiabilityType": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.liability" },
          "description": { "type": "string", "example": "LIABILITY" },
          "id": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "GetSavingsProductsLiabilityUsage": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountUsage.detail" },
          "description": { "type": "string", "example": "DETAIL" },
          "id": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetSavingsProductsLockinPeriodFrequencyTypeOptions": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savings.lockin.savingsPeriodFrequencyType.days" },
          "id": { "type": "integer", "format": "int32", "example": 0 },
          "value": { "type": "string", "example": "Days" }
        }
      },
      "GetSavingsProductsPaymentChannelToFundSourceMappings": {
        "type": "object",
        "properties": {
          "fundSourceAccount": {
            "$ref": "#/components/schemas/GetSavingsProductsFundSourceAccount"
          },
          "paymentType": { "$ref": "#/components/schemas/GetSavingsProductsPaymentType" }
        }
      },
      "GetSavingsProductsPaymentType": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 10 },
          "name": { "type": "string", "example": "check" }
        }
      },
      "GetSavingsProductsPaymentTypeOptions": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "example": "Money Transfer" },
          "id": { "type": "integer", "format": "int32", "example": 14 },
          "isCashPayment": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Wire Transfer" },
          "position": { "type": "integer", "format": "int32", "example": 0 }
        }
      },
      "GetSavingsProductsPenaltyToIncomeAccountMappings": {
        "type": "object",
        "properties": {
          "charge": {
            "$ref": "#/components/schemas/GetSavingsProductsPenaltyToIncomeAccountMappingsCharge"
          },
          "incomeAccount": { "$ref": "#/components/schemas/GetSavingsProductsGlAccount" }
        }
      },
      "GetSavingsProductsPenaltyToIncomeAccountMappingsCharge": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "id": { "type": "integer", "format": "int64", "example": 12 },
          "name": { "type": "string", "example": "sav 2" },
          "penalty": { "type": "boolean", "example": true }
        }
      },
      "GetSavingsProductsProductIdResponse": {
        "type": "object",
        "description": "GetSavingsProductsProductIdResponse",
        "properties": {
          "accountingMappings": {
            "$ref": "#/components/schemas/GetSavingsProductsAccountingMappings"
          },
          "accountingRule": { "$ref": "#/components/schemas/GetSavingsProductsAccountingRule" },
          "charges": {
            "type": "array",
            "example": [],
            "items": { "type": "integer", "format": "int64" }
          },
          "currency": { "$ref": "#/components/schemas/GetSavingsCurrency" },
          "description": { "type": "string", "example": "gtasga" },
          "feeToIncomeAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSavingsProductsFeeToIncomeAccountMappings"
            },
            "uniqueItems": true
          },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestCompoundingPeriodType"
          },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestPostingPeriodType"
          },
          "name": { "type": "string", "example": "savings product" },
          "nominalAnnualInterestRate": { "type": "number", "example": 5 },
          "paymentChannelToFundSourceMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSavingsProductsPaymentChannelToFundSourceMappings"
            },
            "uniqueItems": true
          },
          "penaltyToIncomeAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSavingsProductsPenaltyToIncomeAccountMappings"
            },
            "uniqueItems": true
          },
          "shortName": { "type": "string", "example": "sa1" },
          "withdrawalFeeForTransfers": { "type": "boolean", "example": false }
        }
      },
      "GetSavingsProductsResponse": {
        "type": "object",
        "description": "GetSavingsProductsResponse",
        "properties": {
          "accountingRule": { "$ref": "#/components/schemas/GetSavingsProductsAccountingRule" },
          "currency": { "$ref": "#/components/schemas/GetSavingsCurrency" },
          "description": { "type": "string", "example": "gtasga" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestCalculationDaysInYearType"
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestCalculationType"
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestCompoundingPeriodType"
          },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestPostingPeriodType"
          },
          "name": { "type": "string", "example": "Savings product" },
          "nominalAnnualInterestRate": { "type": "number", "example": 5 },
          "shortName": { "type": "string", "example": "sa1" },
          "withdrawalFeeForTransfers": { "type": "boolean", "example": false }
        }
      },
      "GetSavingsProductsTemplateAccountingRule": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountingRuleType.none" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "NONE" }
        }
      },
      "GetSavingsProductsTemplateResponse": {
        "type": "object",
        "description": "GetSavingsProductsTemplateResponse",
        "properties": {
          "accountMapping": { "$ref": "#/components/schemas/GetSavingsCurrency" },
          "accountingMappingOptions": {
            "$ref": "#/components/schemas/GetSavingsProductsAccountingMappingOptions"
          },
          "accountingRule": {
            "$ref": "#/components/schemas/GetSavingsProductsTemplateAccountingRule"
          },
          "accountingRuleOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductsTemplateAccountingRule" },
            "uniqueItems": true
          },
          "chargeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductsChargeOptions" },
            "uniqueItems": true
          },
          "currency": { "$ref": "#/components/schemas/GetSavingsCurrency" },
          "currencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsCurrency" },
            "uniqueItems": true
          },
          "interestCalculationDaysInYearType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestCalculationDaysInYearType"
          },
          "interestCalculationDaysInYearTypeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSavingsProductsInterestCalculationDaysInYearType"
            },
            "uniqueItems": true
          },
          "interestCalculationType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestCalculationType"
          },
          "interestCalculationTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductsInterestCalculationType" },
            "uniqueItems": true
          },
          "interestCompoundingPeriodType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestCompoundingPeriodType"
          },
          "interestCompoundingPeriodTypeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSavingsProductsInterestCompoundingPeriodType"
            },
            "uniqueItems": true
          },
          "interestPostingPeriodType": {
            "$ref": "#/components/schemas/GetSavingsProductsInterestPostingPeriodType"
          },
          "interestPostingPeriodTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductsInterestPostingPeriodType" },
            "uniqueItems": true
          },
          "lockinPeriodFrequencyTypeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSavingsProductsLockinPeriodFrequencyTypeOptions"
            },
            "uniqueItems": true
          },
          "paymentTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductsPaymentTypeOptions" },
            "uniqueItems": true
          },
          "withdrawalFeeTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsProductsWithdrawalFeeTypeOptions" },
            "uniqueItems": true
          }
        }
      },
      "GetSavingsProductsWithdrawalFeeTypeOptions": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "savingsWithdrawalFeesType.flat" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Flat" }
        }
      },
      "GetSavingsStatus": {
        "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": "int32", "example": 100 },
          "rejected": { "type": "boolean", "example": false },
          "submittedAndPendingApproval": { "type": "boolean", "example": true },
          "value": { "type": "string", "example": "Submitted and pending approval" },
          "withdrawnByApplicant": { "type": "boolean", "example": false }
        }
      },
      "GetSavingsSummary": {
        "type": "object",
        "properties": {
          "accountBalance": { "type": "number", "example": 0 },
          "currency": { "$ref": "#/components/schemas/GetSavingsCurrency" }
        }
      },
      "GetSavingsTimeline": {
        "type": "object",
        "properties": {
          "activatedOnDate": { "type": "string", "format": "date" },
          "approvedByFirstname": { "type": "string", "example": "name" },
          "approvedByLastname": { "type": "string", "example": "lastname" },
          "approvedByUsername": { "type": "string", "example": "admin" },
          "approvedOnDate": { "type": "string", "format": "date" },
          "submittedByFirstname": { "type": "string", "example": "name" },
          "submittedByLastname": { "type": "string", "example": "lastname" },
          "submittedByUsername": { "type": "string", "example": "username" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "GetSchedulerResponse": {
        "type": "object",
        "description": "GetSchedulerResponse",
        "properties": { "active": { "type": "boolean", "example": true } }
      },
      "GetSearchResponse": {
        "type": "object",
        "description": "GetSearchResponse",
        "properties": {
          "accountId": { "type": "integer", "format": "int64", "example": 42 },
          "accountNo": { "type": "string", "example": "000000042" },
          "accountType": { "type": "string", "example": "savings" },
          "entityAccountNo": { "type": "integer", "format": "int64", "example": 1 },
          "entityExternalId": { "type": "string", "example": "ID_JKZGEXF" },
          "entityId": { "type": "integer", "format": "int64", "example": 1 },
          "entityName": { "type": "string", "example": "Group_Name_HVCU5" },
          "entityStatus": { "$ref": "#/components/schemas/EnumOptionData" },
          "entityType": { "type": "string", "example": "GROUP" },
          "parentId": { "type": "integer", "format": "int64", "example": 1 },
          "parentName": { "type": "string", "example": "Head Office" },
          "parentType": { "type": "string", "example": "client" },
          "subEntityType": { "type": "string", "example": "depositAccountType.savingsDeposit" },
          "transactionExternalId": { "type": "string", "example": "txn-external-id-1" },
          "transactionId": { "type": "integer", "format": "int64", "example": 7253 },
          "transactionRefNo": {
            "type": "string",
            "example": "69da9027-653d-45e0-9a5a-cbd7c8507237"
          },
          "transactionType": { "type": "string", "example": "deposit" }
        }
      },
      "GetShareEquityId": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "EQUITY1" },
          "id": { "type": "integer", "format": "int64", "example": 66 },
          "name": { "type": "string", "example": "Equity Account" }
        }
      },
      "GetShareReferenceId": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "ASSET_ED1461237837829" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "ACCOUNT_NAME_1FJBQ" }
        }
      },
      "GetShareSuspenseId": {
        "type": "object",
        "properties": {
          "glCode": { "type": "string", "example": "LIABILITY_MA1461237860198" },
          "id": { "type": "integer", "format": "int64", "example": 8 },
          "name": { "type": "string", "example": "ACCOUNT_NAME_1FJBQ" }
        }
      },
      "GetStandingInstructionHistoryFromAccount": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 2 },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "General Savings" }
        }
      },
      "GetStandingInstructionHistoryPageItemsFromClient": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string", "example": "Test client" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" }
        }
      },
      "GetStandingInstructionHistoryPageItemsResponse": {
        "type": "object",
        "properties": {
          "amount": { "type": "number", "format": "float", "example": 10 },
          "errorLog": { "type": "string" },
          "executionTime": { "type": "string", "format": "date" },
          "fromAccount": {
            "$ref": "#/components/schemas/GetStandingInstructionHistoryFromAccount"
          },
          "fromAccountType": {
            "$ref": "#/components/schemas/GetFromAccountTypeStandingInstructionSwagger"
          },
          "fromClient": {
            "$ref": "#/components/schemas/GetStandingInstructionHistoryPageItemsFromClient"
          },
          "fromOffice": { "$ref": "#/components/schemas/GetFromOfficeStandingInstructionSwagger" },
          "name": { "type": "string", "example": "ACC Transfer" },
          "standingInstructionId": { "type": "integer", "format": "int64", "example": 1 },
          "status": { "type": "string", "example": "success" },
          "toAccount": { "$ref": "#/components/schemas/GetStandingInstructionHistoryToAccount" },
          "toAccountType": {
            "$ref": "#/components/schemas/GetToAccountTypeStandingInstructionSwagger"
          },
          "toClient": { "$ref": "#/components/schemas/GetStandingInstructionHistoryToClient" },
          "toOffice": { "$ref": "#/components/schemas/GetToOfficeStandingInstructionSwagger" }
        }
      },
      "GetStandingInstructionHistoryToAccount": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 1 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "productName": { "type": "string", "example": "General Savings" }
        }
      },
      "GetStandingInstructionHistoryToClient": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string", "example": "Test client" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" }
        }
      },
      "GetStandingInstructionRunHistoryResponse": {
        "type": "object",
        "description": "GetStandingInstructionRunHistoryResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetStandingInstructionHistoryPageItemsResponse"
            },
            "uniqueItems": true
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "GetStandingInstructionsResponse": {
        "type": "object",
        "description": "GetStandingInstructionsResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetPageItemsStandingInstructionSwagger" },
            "uniqueItems": true
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "GetStandingInstructionsStandingInstructionIdResponse": {
        "type": "object",
        "description": "GetStandingInstructionsStandingInstructionIdResponse",
        "properties": {
          "accountDetailId": { "type": "integer", "format": "int64", "example": 6 },
          "amount": { "type": "number", "format": "float", "example": 150 },
          "fromAccount": {
            "$ref": "#/components/schemas/GetFromAccountStandingInstructionSwagger"
          },
          "fromAccountType": {
            "$ref": "#/components/schemas/GetFromAccountTypeStandingInstructionSwagger"
          },
          "fromClient": { "$ref": "#/components/schemas/GetFromClientStandingInstructionSwagger" },
          "fromOffice": { "$ref": "#/components/schemas/GetFromOfficeStandingInstructionSwagger" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "instructionType": {
            "$ref": "#/components/schemas/GetInstructionTypeStandingInstructionSwagger"
          },
          "name": { "type": "string", "example": "test standing" },
          "priority": { "$ref": "#/components/schemas/GetPriorityStandingInstructionSwagger" },
          "recurrenceFrequency": {
            "$ref": "#/components/schemas/GetRecurrenceFrequencyStandingInstructionSwagger"
          },
          "recurrenceInterval": { "type": "integer", "format": "int32", "example": 1 },
          "recurrenceOnMonthDay": { "type": "string", "format": "date" },
          "recurrenceType": {
            "$ref": "#/components/schemas/GetRecurrenceTypeStandingInstructionSwagger"
          },
          "status": { "$ref": "#/components/schemas/GetStatusStandingInstructionSwagger" },
          "toAccount": { "$ref": "#/components/schemas/GetToAccountStandingInstructionSwagger" },
          "toAccountType": {
            "$ref": "#/components/schemas/GetToAccountTypeStandingInstructionSwagger"
          },
          "toClient": { "$ref": "#/components/schemas/GetToClientStandingInstructionSwagger" },
          "toOffice": { "$ref": "#/components/schemas/GetToOfficeStandingInstructionSwagger" },
          "transferType": {
            "$ref": "#/components/schemas/GetTransferTypeStandingInstructionSwagger"
          },
          "validFrom": { "type": "string", "format": "date" }
        }
      },
      "GetStandingInstructionsTemplateResponse": {
        "type": "object",
        "description": "GetStandingInstructionsTemplateResponse",
        "properties": {
          "fromAccountType": {
            "$ref": "#/components/schemas/GetFromAccountTypeResponseStandingInstructionSwagger"
          },
          "fromAccountTypeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFromAccountTypeOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          },
          "fromClientOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFromClientOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          },
          "fromOffice": {
            "$ref": "#/components/schemas/GetFromOfficeResponseStandingInstructionSwagger"
          },
          "fromOfficeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFromOfficeOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          },
          "instructionTypeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetInstructionTypeOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          },
          "priorityOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetPriorityOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          },
          "recurrenceFrequencyOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetRecurrenceFrequencyOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          },
          "recurrenceTypeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetRecurrenceTypeOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          },
          "statusOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetStatusOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          },
          "toAccountTypeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetToAccountTypeOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          },
          "toOfficeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetToOfficeOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          },
          "transferTypeOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetTransferTypeOptionsResponseStandingInstructionSwagger"
            },
            "uniqueItems": true
          }
        }
      },
      "GetStatusOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "standingInstructionStatus.active" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Active" }
        }
      },
      "GetStatusStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "standingInstructionStatus.deleted" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Deleted" }
        }
      },
      "GetSurveyResponse": {
        "type": "object",
        "description": "GetSurveyResponse",
        "properties": {
          "datatableData": { "$ref": "#/components/schemas/GetSurveyResponseDatatableData" },
          "enabled": { "type": "boolean", "example": false }
        }
      },
      "GetSurveyResponseDatatableData": {
        "type": "object",
        "properties": {
          "applicationTableName": { "type": "string", "example": "m_client" },
          "columnHeaderData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ResultsetColumnHeaderData" }
          },
          "registeredTableName": { "type": "string", "example": "ppi_kenya_2005" }
        }
      },
      "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" }
        }
      },
      "GetTellersResponse": {
        "type": "object",
        "description": "GetTellersResponse",
        "properties": {
          "creditAccountId": { "type": "integer", "format": "int64", "example": 0 },
          "debitAccountId": { "type": "integer", "format": "int64", "example": 0 },
          "id": { "type": "integer", "format": "int64", "example": 3 },
          "name": { "type": "string", "example": "Teller3" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "startDate": { "type": "string", "format": "date" },
          "status": {
            "type": "string",
            "enum": ["INVALID", "PENDING", "ACTIVE", "INACTIVE", "CLOSED"],
            "example": "ACTIVE"
          }
        }
      },
      "GetTellersTellerIdCashiersCashierIdResponse": {
        "type": "object",
        "description": "GetTellersTellerIdCashiersCashierIdResponse",
        "properties": {
          "description": { "type": "string" },
          "endDate": { "type": "string", "format": "date" },
          "endTime": { "type": "string" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "isFullDay": { "type": "boolean", "example": true },
          "staffId": { "type": "integer", "format": "int64", "example": 1 },
          "staffName": { "type": "string", "example": "Staff1, Test" },
          "startDate": { "type": "string", "format": "date" },
          "startTime": { "type": "string" },
          "tellerId": { "type": "integer", "format": "int64", "example": 1 },
          "tellerName": { "type": "string", "example": "Teller1" }
        }
      },
      "GetTellersTellerIdCashiersCashiersIdSummaryAndTransactionsResponse": {
        "type": "object",
        "description": "GetTellersTellerIdCashiersCashiersIdSummaryAndTransactionsResponse",
        "properties": {
          "cashierId": { "type": "integer", "format": "int64", "example": 1 },
          "cashierName": { "type": "string", "example": "Staff1, Test" },
          "cashierTransactions": { "$ref": "#/components/schemas/PageCashierTransactionData" },
          "netCash": { "type": "number", "example": 6950 },
          "officeName": { "type": "string", "example": "Head Office" },
          "sumCashAllocation": { "type": "number", "example": 7000 },
          "sumCashSettlement": { "type": "number", "example": 50 },
          "sumInwardCash": { "type": "number", "example": 0 },
          "sumOutwardCash": { "type": "number", "example": 0 },
          "tellerId": { "type": "integer", "format": "int64", "example": 1 },
          "tellerName": { "type": "string", "example": "Teller1" }
        }
      },
      "GetTellersTellerIdCashiersCashiersIdTransactionsResponse": {
        "type": "object",
        "description": "GetTellersTellerIdCashiersCashiersIdTransactionsResponse",
        "properties": {
          "cashierId": { "type": "integer", "format": "int64", "example": 15 },
          "cashierName": { "type": "string", "example": "B, Ramesh" },
          "createdDate": { "type": "string", "format": "date-time" },
          "entityId": { "type": "integer", "format": "int64", "example": 2 },
          "entityType": { "type": "string", "example": "loans" },
          "id": { "type": "integer", "format": "int64", "example": 8 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "tellerId": { "type": "integer", "format": "int64", "example": 0 },
          "txnAmount": { "type": "number", "example": 1000 },
          "txnDate": { "type": "string", "format": "date" },
          "txnNote": {
            "type": "string",
            "example": "Disbursement, Loan:2-000000002,Client:1-Test 1"
          },
          "txnType": { "$ref": "#/components/schemas/CashierTxnType" }
        }
      },
      "GetTellersTellerIdCashiersCashiersIdTransactionsTemplateResponse": {
        "type": "object",
        "description": "GetTellersTellerIdCashiersCashiersIdTransactionsTemplateResponse",
        "properties": {
          "cashierData": { "$ref": "#/components/schemas/CashierData" },
          "cashierId": { "type": "integer", "format": "int64", "example": 1 },
          "cashierName": { "type": "string", "example": "Staff1, Test" },
          "currencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CurrencyData" }
          },
          "endDate": { "type": "string", "format": "date" },
          "officeName": { "type": "string", "example": "Head Office" },
          "startDate": { "type": "string", "format": "date" },
          "tellerId": { "type": "integer", "format": "int64", "example": 0 },
          "tellerName": { "type": "string", "example": "Teller1" }
        }
      },
      "GetTellersTellerIdCashiersResponse": {
        "type": "object",
        "description": "GetTellersTellerIdCashiersResponse",
        "properties": {
          "cashiers": { "type": "array", "items": { "$ref": "#/components/schemas/CashierData" } },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "tellerId": { "type": "integer", "format": "int64", "example": 1 },
          "tellerName": { "type": "string", "example": "Teller1" }
        }
      },
      "GetTellersTellerIdCashiersTemplateResponse": {
        "type": "object",
        "description": "GetTellersTellerIdCashiersTemplateResponse",
        "properties": {
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "staffOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StaffData" }
          },
          "tellerId": { "type": "integer", "format": "int64", "example": 1 },
          "tellerName": { "type": "string", "example": "Teller1" }
        }
      },
      "GetToAccountStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 3 },
          "id": { "type": "integer", "format": "int64", "example": 3 },
          "productId": { "type": "integer", "format": "int64", "example": 4 },
          "productName": { "type": "string", "example": "account overdraft" }
        }
      },
      "GetToAccountTypeOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.loan" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Loan Account" }
        }
      },
      "GetToAccountTypeStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountType.savings" },
          "id": { "type": "integer", "format": "int32", "example": 2 },
          "value": { "type": "string", "example": "Savings Account" }
        }
      },
      "GetToClientStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string", "example": "Test test" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" }
        }
      },
      "GetToOfficeOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "name": { "type": "string", "example": "Head Office" },
          "nameDecorated": { "type": "string", "example": "Head Office" }
        }
      },
      "GetToOfficeStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Head Office" }
        }
      },
      "GetTransactionsCurrency": {
        "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": "$" },
          "isMultiplesOf": { "type": "integer", "format": "int32", "example": 0 },
          "name": { "type": "string", "example": "US Dollar" },
          "nameCode": { "type": "string", "example": "currency.USD" }
        }
      },
      "GetTransactionsPaymentDetailData": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string", "example": "acc123" },
          "bankNumber": { "type": "string", "example": "ban123" },
          "checkNumber": { "type": "string", "example": "che123" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "paymentType": { "$ref": "#/components/schemas/GetPaymentTypeData" },
          "receiptNumber": { "type": "string", "example": "rec123" },
          "routingCode": { "type": "string", "example": "rou123" }
        }
      },
      "GetTranscationEnumData": {
        "type": "object",
        "properties": {
          "amountHold": { "type": "boolean", "example": false },
          "amountRelease": { "type": "boolean", "example": false },
          "approveTransfer": { "type": "boolean", "example": false },
          "code": { "type": "string", "example": "savingsAccountTransactionType.deposit" },
          "deposit": { "type": "boolean", "example": true },
          "dividendPayout": { "type": "boolean", "example": false },
          "escheat": { "type": "boolean", "example": false },
          "feeDeduction": { "type": "boolean", "example": false },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "initiateTransfer": { "type": "boolean", "example": false },
          "interestPosting": { "type": "boolean", "example": false },
          "overdraftFee": { "type": "boolean", "example": true },
          "overdraftInterest": { "type": "boolean", "example": false },
          "rejectTransfer": { "type": "boolean", "example": false },
          "value": { "type": "string", "example": "Deposit" },
          "withdrawTransfer": { "type": "boolean", "example": false },
          "withdrawal": { "type": "boolean", "example": false },
          "withholdTax": { "type": "boolean", "example": false },
          "writtenoff": { "type": "boolean", "example": false }
        }
      },
      "GetTransferTypeOptionsResponseStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountTransferType.account.transfer" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Account Transfer" }
        }
      },
      "GetTransferTypeStandingInstructionSwagger": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "accountTransferType.account.transfer" },
          "id": { "type": "integer", "format": "int32", "example": 1 },
          "value": { "type": "string", "example": "Account Transfer" }
        }
      },
      "GetUserDetailsResponse": {
        "type": "object",
        "description": "GetUserDetailsResponse",
        "properties": {
          "accessToken": { "type": "string", "example": "bWlmb3M6cGFzc3dvcmQ=" },
          "authenticated": { "type": "boolean", "example": true },
          "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": "mifosStaffDisplayName" },
          "staffId": { "type": "integer", "format": "int64", "example": 1 },
          "userId": { "type": "integer", "format": "int64", "example": 1 },
          "username": { "type": "string", "example": "admin" }
        }
      },
      "GetUsersResponse": {
        "type": "object",
        "description": "GetUsersResponse",
        "properties": {
          "email": { "type": "string", "example": "demomfi@mifos.org" },
          "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": "demomfi@mifos.org" },
          "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" }
        }
      },
      "GetWorkingCapitalLoanBreach": {
        "type": "object",
        "description": "GetWorkingCapitalLoanBreach",
        "properties": {
          "breachAmount": { "type": "number", "example": 10 },
          "breachAmountCalculationType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "breachFrequency": { "type": "integer", "format": "int32", "example": 30 },
          "breachFrequencyType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Default WCL Breach" }
        }
      },
      "GetWorkingCapitalLoanCharge": {
        "type": "object",
        "description": "Working Capital Loan charge",
        "properties": {
          "amount": { "type": "number", "example": 10 },
          "amountOutstanding": { "type": "number", "example": 0 },
          "amountPaid": { "type": "number", "example": 10 },
          "amountWaived": { "type": "number", "example": 0 },
          "amountWrittenOff": { "type": "number", "example": 0 },
          "chargeCalculationType": { "$ref": "#/components/schemas/EnumOptionData" },
          "chargeId": { "type": "integer", "format": "int64", "example": 1 },
          "chargePaymentMode": { "$ref": "#/components/schemas/EnumOptionData" },
          "chargeTimeType": { "$ref": "#/components/schemas/EnumOptionData" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "dueDate": { "type": "string", "format": "date" },
          "externalId": { "type": "string", "example": "c9b17bbe-4a4b-4a68-8c69-b9dfb9210f93" },
          "externalLoanId": { "type": "string", "example": "8f4a5f3e-7c2d-4d7a-9b1c-2e6d4a8b9c0d" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "nsf fees" },
          "paid": { "type": "boolean", "example": true },
          "penalty": { "type": "boolean", "example": false },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "GetWorkingCapitalLoanChargePaidByData": {
        "type": "object",
        "description": "How much of a transaction settled one specific charge",
        "properties": {
          "amount": { "type": "number", "example": 100 },
          "chargeId": { "type": "integer", "format": "int64", "example": 12 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Processing fee" },
          "transactionId": { "type": "integer", "format": "int64", "example": 34 }
        }
      },
      "GetWorkingCapitalLoanDelinquencyRangeScheduleTagHistoryResponse": {
        "type": "object",
        "description": "GetWorkingCapitalLoanDelinquencyTagHistoryResponse",
        "properties": {
          "addedOnDate": { "type": "string", "format": "date" },
          "delinquencyRange": { "$ref": "#/components/schemas/DelinquencyRangeData" },
          "delinquentAmount": { "type": "number", "example": 123.45 },
          "delinquentDays": { "type": "integer", "format": "int64", "example": 10 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "liftedOnDate": { "type": "string", "format": "date" },
          "loanId": { "type": "integer", "format": "int64", "example": 10 },
          "periodNumber": { "type": "integer", "format": "int32", "example": 2 },
          "rangeId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetWorkingCapitalLoanNearBreach": {
        "type": "object",
        "description": "GetWorkingCapitalLoanNearBreach",
        "properties": {
          "frequency": { "type": "integer", "format": "int32", "example": 30 },
          "frequencyType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "Near Breach ABC" },
          "threshold": { "type": "number", "example": 10 }
        }
      },
      "GetWorkingCapitalLoanProductsProductIdResponse": {
        "type": "object",
        "description": "GetWorkingCapitalLoanProductsProductIdResponse",
        "properties": {
          "accountingMappings": {
            "type": "object",
            "additionalProperties": { "$ref": "#/components/schemas/GLAccountData" }
          },
          "accountingRule": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "allowAttributeOverrides": { "$ref": "#/components/schemas/GetConfigurableAttributes" },
          "amortizationType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "breach": { "$ref": "#/components/schemas/GetWorkingCapitalLoanBreach" },
          "breachGraceDays": {
            "type": "integer",
            "format": "int32",
            "description": "Number of days to shift the start of the first breach schedule period after disbursement",
            "example": 0
          },
          "breachStartType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "chargeOffReasonToExpenseAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AdvancedMappingToExpenseAccountData" }
          },
          "closeDate": { "type": "string", "format": "date" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "delinquencyBucket": { "$ref": "#/components/schemas/GetDelinquencyBucket" },
          "delinquencyGraceDays": { "type": "integer", "format": "int32", "example": 1 },
          "delinquencyStartType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "description": {
            "type": "string",
            "example": "Working Capital Loan Product for merchants"
          },
          "discount": { "type": "number", "example": 0 },
          "externalId": { "type": "string", "example": "2075e308-d4a8-44d9-8203-f5a947b8c2f4" },
          "feeToIncomeAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeToGLAccountMapper" }
          },
          "fundId": { "type": "integer", "format": "int64", "example": 3 },
          "fundName": { "type": "string", "example": "Fund 1" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "maxAnnualEir": {
            "type": "number",
            "description": "Maximum annual EIR percentage. Optional; only for ANNUAL_EIR strategy.",
            "example": 50
          },
          "maxPeriodPaymentRate": { "type": "number", "example": 2 },
          "maxPrincipal": { "type": "number", "example": 50000 },
          "minAnnualEir": {
            "type": "number",
            "description": "Minimum annual EIR percentage. Optional; only for ANNUAL_EIR strategy.",
            "example": 20
          },
          "minPeriodPaymentRate": { "type": "number", "example": 0.5 },
          "minPrincipal": { "type": "number", "example": 1000 },
          "name": { "type": "string", "example": "Working Capital Product 1" },
          "nearBreach": { "$ref": "#/components/schemas/GetWorkingCapitalLoanNearBreach" },
          "npvDayCount": { "type": "integer", "format": "int32", "example": 365 },
          "paymentAllocation": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetPaymentAllocation" }
          },
          "paymentChannelToFundSourceMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PaymentTypeToGLAccountMapper" }
          },
          "penaltyToIncomeAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeToGLAccountMapper" }
          },
          "periodPaymentRate": { "type": "number", "example": 1 },
          "principal": { "type": "number", "example": 10000 },
          "repaymentEvery": { "type": "integer", "format": "int32", "example": 30 },
          "repaymentFrequencyType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "shortName": { "type": "string", "example": "WCP1" },
          "startDate": { "type": "string", "format": "date" },
          "status": { "type": "string", "example": "ACTIVE" },
          "writeOffReasonsToExpenseMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AdvancedMappingToExpenseAccountData" }
          }
        }
      },
      "GetWorkingCapitalLoanProductsResponse": {
        "type": "object",
        "description": "GetWorkingCapitalLoanProductsResponse",
        "properties": {
          "accountingMappings": {
            "type": "object",
            "additionalProperties": { "$ref": "#/components/schemas/GLAccountData" }
          },
          "accountingRule": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "allowAttributeOverrides": { "$ref": "#/components/schemas/GetConfigurableAttributes" },
          "amortizationType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "breach": { "$ref": "#/components/schemas/GetWorkingCapitalLoanBreach" },
          "breachGraceDays": {
            "type": "integer",
            "format": "int32",
            "description": "Number of days to shift the start of the first breach schedule period after disbursement",
            "example": 0
          },
          "breachStartType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "chargeOffReasonToExpenseAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AdvancedMappingToExpenseAccountData" }
          },
          "closeDate": { "type": "string", "format": "date" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "delinquencyBucket": { "$ref": "#/components/schemas/GetDelinquencyBucket" },
          "delinquencyGraceDays": { "type": "integer", "format": "int32", "example": 1 },
          "delinquencyStartType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "description": {
            "type": "string",
            "example": "Working Capital Loan Product for merchants"
          },
          "discount": { "type": "number", "example": 0 },
          "externalId": { "type": "string", "example": "2075e308-d4a8-44d9-8203-f5a947b8c2f4" },
          "feeToIncomeAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeToGLAccountMapper" }
          },
          "fundId": { "type": "integer", "format": "int64", "example": 3 },
          "fundName": { "type": "string", "example": "Fund 1" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "maxAnnualEir": {
            "type": "number",
            "description": "Maximum annual EIR percentage. Optional; only for ANNUAL_EIR strategy.",
            "example": 50
          },
          "maxPeriodPaymentRate": { "type": "number", "example": 2 },
          "maxPrincipal": { "type": "number", "example": 50000 },
          "minAnnualEir": {
            "type": "number",
            "description": "Minimum annual EIR percentage. Optional; only for ANNUAL_EIR strategy.",
            "example": 20
          },
          "minPeriodPaymentRate": { "type": "number", "example": 0.5 },
          "minPrincipal": { "type": "number", "example": 1000 },
          "name": { "type": "string", "example": "Working Capital Product 1" },
          "nearBreach": { "$ref": "#/components/schemas/GetWorkingCapitalLoanNearBreach" },
          "npvDayCount": { "type": "integer", "format": "int32", "example": 365 },
          "paymentAllocation": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetPaymentAllocation" }
          },
          "paymentChannelToFundSourceMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PaymentTypeToGLAccountMapper" }
          },
          "penaltyToIncomeAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeToGLAccountMapper" }
          },
          "periodPaymentRate": { "type": "number", "example": 1 },
          "principal": { "type": "number", "example": 10000 },
          "repaymentEvery": { "type": "integer", "format": "int32", "example": 30 },
          "repaymentFrequencyType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "shortName": { "type": "string", "example": "WCP1" },
          "startDate": { "type": "string", "format": "date" },
          "status": { "type": "string", "example": "ACTIVE" },
          "writeOffReasonsToExpenseMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AdvancedMappingToExpenseAccountData" }
          }
        }
      },
      "GetWorkingCapitalLoanProductsTemplateResponse": {
        "type": "object",
        "description": "GetWorkingCapitalLoanProductsTemplateResponse",
        "properties": {
          "accountingMappingOptions": {
            "type": "object",
            "additionalProperties": { "type": "object" }
          },
          "accountingRuleOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "advancedPaymentAllocationTransactionTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "advancedPaymentAllocationTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "amortizationTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "breachOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/WorkingCapitalBreachData" }
          },
          "breachStartTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "chargeOffReasonOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "chargeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeData" }
          },
          "currencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CurrencyData" }
          },
          "delinquencyBucketOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetDelinquencyBucket" }
          },
          "delinquencyMinimumPaymentTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "delinquencyStartTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "fundOptions": { "type": "array", "items": { "$ref": "#/components/schemas/FundData" } },
          "nearBreachOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/WorkingCapitalNearBreachData" }
          },
          "paymentTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PaymentTypeData" }
          },
          "penaltyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeData" }
          },
          "periodFrequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "writeOffReasonOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          }
        }
      },
      "GetWorkingCapitalLoanSummary": {
        "type": "object",
        "description": "Working Capital Loan summary",
        "properties": {
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "fee": { "type": "number" },
          "feeOutstanding": { "type": "number" },
          "feePaid": { "type": "number" },
          "feeWaived": {
            "type": "number",
            "description": "Fees moved out of the outstanding balance by a charge waiver"
          },
          "overpayment": { "type": "number" },
          "penalty": { "type": "number" },
          "penaltyOutstanding": { "type": "number" },
          "penaltyPaid": { "type": "number" },
          "penaltyWaived": {
            "type": "number",
            "description": "Penalties moved out of the outstanding balance by a charge waiver"
          },
          "principal": {
            "type": "number",
            "description": "Total principal due: original principal plus principalAdjustment. Already inclusive of principalAdjustment — do not add the two together."
          },
          "principalAdjustment": {
            "type": "number",
            "description": "Principal re-injected by an over-refunding credit balance refund. Already included in principal."
          },
          "principalOutstanding": { "type": "number" },
          "principalPaid": { "type": "number" },
          "realizedIncomeFromDiscountFee": { "type": "number" },
          "totalDisbursement": {
            "type": "number",
            "description": "Total amount actually disbursed"
          },
          "totalDiscountFee": { "type": "number" },
          "totalDiscountFeeAdjustment": { "type": "number" },
          "totalExpectedRepayment": { "type": "number" },
          "totalOutstanding": { "type": "number" },
          "totalRepayment": { "type": "number" },
          "unrealizedIncomeFromDiscountFee": { "type": "number" }
        }
      },
      "GetWorkingCapitalLoanTransactionIdResponse": {
        "type": "object",
        "description": "Working Capital Loan transaction (e.g. disbursement) in GET transaction response.",
        "properties": {
          "chargePaidByList": {
            "type": "array",
            "description": "Which charges this transaction settled, and for how much",
            "items": { "$ref": "#/components/schemas/GetWorkingCapitalLoanChargePaidByData" }
          },
          "classification": { "$ref": "#/components/schemas/CodeValueData" },
          "externalId": { "type": "string", "example": "txn-ext-001" },
          "feeChargesPortion": {
            "type": "number",
            "description": "Fee charges portion from allocation",
            "example": 0
          },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "overpaymentPortion": { "type": "number" },
          "paymentDetailData": {
            "$ref": "#/components/schemas/WorkingCapitalLoanTransactionPaymentDetailData"
          },
          "penaltyChargesPortion": {
            "type": "number",
            "description": "Penalty charges portion from allocation",
            "example": 0
          },
          "principalPortion": {
            "type": "number",
            "description": "Principal portion from allocation",
            "example": 10000
          },
          "reversalExternalId": { "type": "string", "example": "reversal-ext-001" },
          "reversed": { "type": "boolean", "example": false },
          "reversedOnDate": { "type": "string", "format": "date" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "transactionAmount": { "type": "number", "example": 10000 },
          "transactionDate": { "type": "string", "format": "date" },
          "type": { "$ref": "#/components/schemas/LoanTransactionEnumData" }
        }
      },
      "GetWorkingCapitalLoanTransactionsResponse": {
        "type": "object",
        "description": "GetWorkingCapitalLoanTransactionsResponse (Spring Data Page: content, totalElements, totalPages, number, size, first, last)",
        "properties": {
          "content": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetWorkingCapitalLoanTransactionIdResponse" }
          },
          "first": { "type": "boolean" },
          "last": { "type": "boolean" },
          "number": { "type": "integer", "format": "int32", "example": 0 },
          "size": { "type": "integer", "format": "int32", "example": 20 },
          "totalElements": { "type": "integer", "format": "int64", "example": 5 },
          "totalPages": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "GetWorkingCapitalLoansClient": {
        "type": "object",
        "description": "GetWorkingCapitalLoansClient",
        "properties": {
          "displayName": { "type": "string", "example": "Client One" },
          "id": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "GetWorkingCapitalLoansLoanIdOriginatorData": {
        "type": "object",
        "description": "Originator data associated with the loan",
        "properties": {
          "channelType": { "$ref": "#/components/schemas/CodeValueData" },
          "externalId": { "type": "string", "example": "REV-SHARE-001" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "name": { "type": "string", "example": "PP Merchant" },
          "originatorType": { "$ref": "#/components/schemas/CodeValueData" },
          "status": { "type": "string", "example": "ACTIVE" }
        }
      },
      "GetWorkingCapitalLoansLoanIdResponse": {
        "type": "object",
        "description": "GetWorkingCapitalLoansLoanIdResponse",
        "properties": {
          "accountNo": { "type": "string", "example": "WCL-1" },
          "amortizationType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "annualEir": {
            "type": "number",
            "description": "Configured annual EIR percentage for ANNUAL_EIR strategy loans",
            "example": 43.7562
          },
          "approvedDiscountFee": {
            "type": "number",
            "description": "Approved discount fee set during loan approval",
            "example": 0
          },
          "approvedPrincipal": {
            "type": "number",
            "description": "Principal granted at approval; zero before approval and after undoing it (deliberate Working Capital divergence from classic loans)",
            "example": 10000
          },
          "balance": { "$ref": "#/components/schemas/GetBalance" },
          "breach": { "$ref": "#/components/schemas/GetWorkingCapitalLoanBreach" },
          "breachGraceDays": {
            "type": "integer",
            "format": "int32",
            "description": "Number of days to shift the start of the first breach schedule period after disbursement",
            "example": 0
          },
          "breachStartDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the loan's breach, i.e. the fromDate of the earliest breached breach schedule period (the breach grace days are already reflected in this date). Null when the loan is not in breach"
          },
          "breachStartType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "calculatedAnnualEir": {
            "type": "number",
            "description": "Annual effective rate the loan was priced at, as a percentage: compounded over the product's NPV day count, not a calendar year, and rounded to six decimals. The base schedule's daily discounting derives from it. A rate change does not restate it - the schedule re-solves its own rate from the day the change takes effect. Comes from discount-fee pricing, not a lending interest rate. Null if schedule not yet generated or if the loan amortizes FLAT, which solves no rate",
            "example": 46.845102
          },
          "chargeOffReason": { "$ref": "#/components/schemas/CodeValueData" },
          "chargedOff": {
            "type": "boolean",
            "description": "Whether the loan is charged off (pure accounting tag; the loan stays active)"
          },
          "chargedOffOnDate": {
            "type": "string",
            "format": "date",
            "description": "Date the loan was charged off",
            "example": "2026-07-16"
          },
          "charges": {
            "type": "array",
            "description": "Charges associated with the loan",
            "items": { "$ref": "#/components/schemas/GetWorkingCapitalLoanCharge" }
          },
          "client": { "$ref": "#/components/schemas/GetWorkingCapitalLoansClient" },
          "clientAccountNo": { "type": "string", "example": "000000001" },
          "clientExternalId": { "type": "string", "example": "786444UUUYYH7" },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "clientName": { "type": "string", "example": "bharath gowda" },
          "clientOfficeId": { "type": "integer", "format": "int64", "example": 1 },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "delinquencyBucket": { "$ref": "#/components/schemas/GetDelinquencyBucket" },
          "delinquencyGraceDays": {
            "type": "integer",
            "format": "int32",
            "description": "Number of grace days before delinquency tracking starts",
            "example": 3
          },
          "delinquencyStartDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the loan's delinquency, i.e. the fromDate of the earliest delinquent range schedule period shifted by delinquencyGraceDays. Null when the loan is not delinquent"
          },
          "delinquencyStartType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "delinquent": { "$ref": "#/components/schemas/WorkingCapitalCollection" },
          "disbursementDetails": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetDisbursementDetail" }
          },
          "discountFee": {
            "type": "number",
            "description": "Discount fee set during loan disbursement",
            "example": 0
          },
          "enableInstallmentLevelDelinquency": {
            "type": "boolean",
            "description": "Installment-level delinquency flag (Term-compatible name). True when the loan has a delinquency bucket configured (Working Capital tracks delinquency at the period level); false otherwise",
            "example": true
          },
          "externalId": { "type": "string", "example": "ext-id-001" },
          "fraud": {
            "type": "boolean",
            "description": "Fraud flag. True when the loan has been marked as fraudulent",
            "example": false
          },
          "fundId": { "type": "integer", "format": "int64", "example": 1 },
          "fundName": { "type": "string", "example": "Fund 1" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "lastClosedBusinessDate": {
            "type": "string",
            "format": "date",
            "description": "Last closed business date (COB)"
          },
          "loanProductCounter": {
            "type": "integer",
            "format": "int32",
            "description": "Loan cycle (sequential WC loan counter per client+product)",
            "example": 1
          },
          "loanProductDescription": {
            "type": "string",
            "example": "Buy now pay later loan product"
          },
          "loanProductId": { "type": "integer", "format": "int64", "example": 1 },
          "loanProductName": { "type": "string", "example": "BNPL" },
          "nearBreach": { "$ref": "#/components/schemas/GetWorkingCapitalLoanNearBreach" },
          "netDisbursalAmount": {
            "type": "number",
            "description": "Net disbursal amount from the amortization schedule; null if schedule not yet generated",
            "example": 10000
          },
          "npvDayCount": {
            "type": "integer",
            "format": "int32",
            "description": "NPV day count used by the amortization schedule",
            "example": 360
          },
          "numberOfRepayments": {
            "type": "integer",
            "format": "int32",
            "description": "Number of repayments (effectiveTotalTerm from the amortization schedule; for WC this is the loan term in days). Unlike the priced figures beside it a rate change does move it, to the day the rate now in force is solved to close the schedule on - a day the amounts here cannot be used to derive, because it falls out of the balance and the fee still unearned when the change takes effect. Null if schedule not yet generated",
            "example": 90
          },
          "originators": {
            "type": "array",
            "description": "List of originators associated with this loan",
            "items": { "$ref": "#/components/schemas/GetWorkingCapitalLoansLoanIdOriginatorData" }
          },
          "overpaidOnDate": {
            "type": "string",
            "format": "date",
            "description": "Date on which loan was overpaid otherwise null",
            "example": "2024-01-14"
          },
          "paymentAllocation": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetPaymentAllocation" }
          },
          "paymentAmountCalculationStrategy": {
            "$ref": "#/components/schemas/StringEnumOptionData"
          },
          "paymentRate": {
            "type": "number",
            "description": "The loan's own period payment rate. A rate change does not move it - the rate in force on a given date comes from the rate-change history",
            "example": 1
          },
          "periodPaymentAmount": {
            "type": "number",
            "description": "Daily payment amount the loan was priced at: totalPaymentVolume x paymentRate / 100 / npvDayCount, rounded to the currency. A rate change does not restate it, no more than it restates paymentRate or calculatedAnnualEir - what is billed from the day a change takes effect follows the rate then in force, and is read off the amortization schedule rows. Null if schedule not yet generated",
            "example": 0.29
          },
          "periodPaymentRateHistory": {
            "type": "array",
            "description": "Period payment rate change history, most recently booked first - which for a backdated change is not the same as effective-date order. Each entry carries the annual EIR (as a percentage, e.g. 43.756245, the unit the top-level calculatedAnnualEir is expressed in as well), daily payment amount and segment term the amortization schedule computed when that change was booked; those are null for changes booked before the snapshot was introduced, and the EIR is null on a FLAT loan",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalLoanPeriodPaymentRateChangeData"
            }
          },
          "principal": {
            "type": "number",
            "description": "Active principal: the requested amount while the application is pending, the granted amount from approval, the actually disbursed amount from disbursement. Undoing approval or disbursal restores the previous stage's value. This is the contractual principal, not the outstanding balance - see summary.principalOutstanding for that.",
            "example": 10000
          },
          "product": { "$ref": "#/components/schemas/GetWorkingCapitalLoanProductsResponse" },
          "proposedDiscountFee": {
            "type": "number",
            "description": "Proposed discount fee at loan submission time",
            "example": 0
          },
          "proposedPrincipal": {
            "type": "number",
            "description": "Principal requested at submission; never changes afterwards",
            "example": 10000
          },
          "repaymentEvery": { "type": "integer", "format": "int32", "example": 30 },
          "repaymentFrequencyType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "status": { "$ref": "#/components/schemas/GetWorkingCapitalLoansLoanIdStatus" },
          "summary": { "$ref": "#/components/schemas/GetWorkingCapitalLoanSummary" },
          "timeline": { "$ref": "#/components/schemas/GetWorkingCapitalLoansLoanIdTimeline" },
          "totalPaymentVolume": { "type": "number", "example": 10500 },
          "writeOffReason": { "$ref": "#/components/schemas/CodeValueData" },
          "writtenOffOnDate": {
            "type": "string",
            "format": "date",
            "description": "Date the loan was written off. Cleared by an undo write-off",
            "example": "2026-07-16"
          }
        }
      },
      "GetWorkingCapitalLoansLoanIdStatus": {
        "type": "object",
        "description": "GetWorkingCapitalLoansLoanIdStatus",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "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.submitted.and.pending.approval" },
          "id": { "type": "integer", "format": "int64", "example": 100 },
          "overpaid": { "type": "boolean", "example": false },
          "pendingApproval": { "type": "boolean", "example": true },
          "value": { "type": "string", "example": "Submitted and pending approval" },
          "waitingForDisbursal": { "type": "boolean", "example": false }
        }
      },
      "GetWorkingCapitalLoansLoanIdTimeline": {
        "type": "object",
        "description": "GetWorkingCapitalLoansLoanIdTimeline",
        "properties": {
          "actualDisbursementDate": { "type": "string", "format": "date" },
          "actualMaturityDate": {
            "type": "string",
            "format": "date",
            "description": "Actual maturity date (when loan is fully paid)"
          },
          "approvedByFirstname": { "type": "string", "example": "App" },
          "approvedByLastname": { "type": "string", "example": "Administrator" },
          "approvedByUsername": { "type": "string", "example": "admin" },
          "approvedOnDate": { "type": "string", "format": "date" },
          "closedByFirstname": { "type": "string", "example": "App" },
          "closedByLastname": { "type": "string", "example": "Administrator" },
          "closedByUsername": { "type": "string", "example": "admin" },
          "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",
            "description": "Expected maturity date"
          },
          "overpaidOnDate": { "type": "string", "format": "date", "description": "Overpaid date" },
          "rejectedByFirstname": { "type": "string", "example": "App" },
          "rejectedByLastname": { "type": "string", "example": "Administrator" },
          "rejectedByUsername": { "type": "string", "example": "admin" },
          "rejectedOnDate": { "type": "string", "format": "date" },
          "submittedByFirstname": { "type": "string", "example": "App" },
          "submittedByLastname": { "type": "string", "example": "Administrator" },
          "submittedByUsername": { "type": "string", "example": "admin" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "GetWorkingCapitalLoansPagedResponse": {
        "type": "object",
        "description": "GetWorkingCapitalLoansPagedResponse (content, totalElements, totalPages, number, size, first, last)",
        "properties": {
          "content": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetWorkingCapitalLoansLoanIdResponse" }
          },
          "first": { "type": "boolean" },
          "last": { "type": "boolean" },
          "number": { "type": "integer", "format": "int32", "example": 0 },
          "size": { "type": "integer", "format": "int32", "example": 50 },
          "totalElements": { "type": "integer", "format": "int64", "example": 100 },
          "totalPages": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "GetWorkingCapitalLoansTemplateResponse": {
        "type": "object",
        "description": "Template: loan details (prefilled when productId/clientId provided) plus dropdown options.",
        "properties": {
          "breachOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetWorkingCapitalLoanBreach" }
          },
          "breachStartTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "delinquencyBucketOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetDelinquencyBucket" }
          },
          "delinquencyMinimumPaymentTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "delinquencyStartTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "fundOptions": { "type": "array", "items": { "$ref": "#/components/schemas/FundData" } },
          "loanData": { "$ref": "#/components/schemas/GetWorkingCapitalLoansLoanIdResponse" },
          "periodFrequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "productOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetWorkingCapitalLoanProductsResponse" }
          }
        }
      },
      "GlobalConfigurationPropertyData": {
        "type": "object",
        "properties": {
          "dateValue": { "type": "string", "format": "date" },
          "description": { "type": "string" },
          "enabled": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "stringValue": { "type": "string" },
          "trapDoor": { "type": "boolean" },
          "value": { "type": "integer", "format": "int64" }
        }
      },
      "GrantedAuthority": { "type": "object", "properties": { "authority": { "type": "string" } } },
      "Group": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string" },
          "activatedBy": { "$ref": "#/components/schemas/AppUser" },
          "activationDate": { "type": "string", "format": "date" },
          "active": { "type": "boolean" },
          "activeClientMembers": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/Client" },
            "uniqueItems": true
          },
          "center": { "type": "boolean" },
          "childGroup": { "type": "boolean" },
          "clientMembers": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/Client" },
            "uniqueItems": true
          },
          "closed": { "type": "boolean" },
          "closedBy": { "$ref": "#/components/schemas/AppUser" },
          "closureDate": { "type": "string", "format": "date" },
          "closureReason": { "$ref": "#/components/schemas/CodeValue" },
          "externalId": { "type": "string" },
          "group": { "type": "boolean" },
          "groupLevel": { "$ref": "#/components/schemas/GroupLevel" },
          "groupMembers": { "type": "array", "items": { "$ref": "#/components/schemas/Group" } },
          "groupRole": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GroupRole" },
            "uniqueItems": true
          },
          "hierarchy": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "notActive": { "type": "boolean" },
          "notPending": { "type": "boolean" },
          "office": { "$ref": "#/components/schemas/Office" },
          "parent": { "$ref": "#/components/schemas/Group" },
          "pending": { "type": "boolean" },
          "staff": { "$ref": "#/components/schemas/Staff" },
          "staffHistory": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StaffAssignmentHistory" },
            "uniqueItems": true
          },
          "status": { "type": "integer", "format": "int32" },
          "submittedBy": { "$ref": "#/components/schemas/AppUser" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "transferInProgress": { "type": "boolean" },
          "transferInProgressOrOnHold": { "type": "boolean" },
          "transferOnHold": { "type": "boolean" }
        }
      },
      "GroupGeneralData": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "string" },
          "activationDate": { "type": "string", "format": "date" },
          "active": { "type": "boolean" },
          "activeClientMembers": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ClientData" }
          },
          "availableRoles": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "calendarsData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CalendarData" }
          },
          "centerId": { "type": "integer", "format": "int64" },
          "centerName": { "type": "string" },
          "centerOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CenterData" }
          },
          "childGroup": { "type": "boolean" },
          "clientMembers": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ClientData" }
          },
          "clientOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ClientData" }
          },
          "closureReasons": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "collectionMeetingCalendar": { "$ref": "#/components/schemas/CalendarData" },
          "datatables": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DatatableData" }
          },
          "dateFormat": { "type": "string" },
          "externalId": { "type": "string" },
          "groupLevel": { "type": "string" },
          "groupRoles": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GroupRoleData" }
          },
          "hierarchy": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "locale": { "type": "string" },
          "name": { "type": "string" },
          "officeId": { "type": "integer", "format": "int64" },
          "officeName": { "type": "string" },
          "officeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/OfficeData" }
          },
          "parentId": { "type": "integer", "format": "int64" },
          "rowIndex": { "type": "integer", "format": "int32" },
          "selectedRole": { "$ref": "#/components/schemas/GroupRoleData" },
          "staffId": { "type": "integer", "format": "int64" },
          "staffName": { "type": "string" },
          "staffOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StaffData" }
          },
          "status": { "$ref": "#/components/schemas/EnumOptionData" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "timeline": { "$ref": "#/components/schemas/GroupTimelineData" }
        }
      },
      "GroupLevel": {
        "type": "object",
        "properties": {
          "center": { "type": "boolean" },
          "group": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "levelName": { "type": "string" },
          "new": { "type": "boolean" },
          "parentId": { "type": "integer", "format": "int64" },
          "recursable": { "type": "boolean" },
          "superParent": { "type": "boolean" }
        }
      },
      "GroupLevelData": {
        "type": "object",
        "properties": {
          "canHaveClients": { "type": "boolean" },
          "childLevelId": { "type": "integer", "format": "int64" },
          "childLevelName": { "type": "string" },
          "levelId": { "type": "integer", "format": "int64" },
          "levelName": { "type": "string" },
          "parentLevelId": { "type": "integer", "format": "int64" },
          "parentLevelName": { "type": "string" },
          "recursable": { "type": "boolean" },
          "superParent": { "type": "boolean" }
        }
      },
      "GroupRole": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "new": { "type": "boolean" }
        }
      },
      "GroupRoleData": {
        "type": "object",
        "properties": {
          "clientId": { "type": "integer", "format": "int64" },
          "clientName": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "role": { "$ref": "#/components/schemas/CodeValueData" }
        }
      },
      "GroupTimelineData": { "type": "object" },
      "GuarantorData": {
        "type": "object",
        "properties": {
          "accountId": { "type": "integer", "format": "int64" },
          "accountLinkingOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PortfolioAccountData" }
          },
          "addressLine1": { "type": "string" },
          "addressLine2": { "type": "string" },
          "allowedClientRelationshipTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "amount": { "type": "number" },
          "city": { "type": "string" },
          "clientRelationshipType": { "$ref": "#/components/schemas/CodeValueData" },
          "clientRelationshipTypeId": { "type": "integer", "format": "int32" },
          "comment": { "type": "string" },
          "country": { "type": "string" },
          "dateFormat": { "type": "string" },
          "dob": { "type": "string", "format": "date" },
          "entityId": { "type": "integer", "format": "int64" },
          "existingClient": { "type": "boolean" },
          "existingGroup": { "type": "boolean" },
          "externalGuarantor": { "type": "boolean" },
          "externalId": { "type": "string" },
          "firstname": { "type": "string" },
          "guarantorFundingDetails": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GuarantorFundingData" }
          },
          "guarantorType": { "$ref": "#/components/schemas/EnumOptionData" },
          "guarantorTypeId": { "type": "integer", "format": "int32" },
          "guarantorTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "housePhoneNumber": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "joinedDate": { "type": "string", "format": "date" },
          "lastname": { "type": "string" },
          "loanId": { "type": "integer", "format": "int64" },
          "locale": { "type": "string" },
          "mobileNumber": { "type": "string" },
          "officeName": { "type": "string" },
          "rowIndex": { "type": "integer", "format": "int32" },
          "savingsId": { "type": "integer", "format": "int32" },
          "staffMember": { "type": "boolean" },
          "state": { "type": "string" },
          "status": { "type": "boolean" },
          "zip": { "type": "string" }
        }
      },
      "GuarantorFundingData": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "amountReleased": { "type": "number" },
          "amountRemaining": { "type": "number" },
          "amountTransfered": { "type": "number" },
          "guarantorTransactions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GuarantorTransactionData" }
          },
          "id": { "type": "integer", "format": "int64" },
          "savingsAccount": { "$ref": "#/components/schemas/PortfolioAccountData" },
          "status": { "$ref": "#/components/schemas/EnumOptionData" }
        }
      },
      "GuarantorTransactionData": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "loanTransactionData": { "$ref": "#/components/schemas/LoanTransactionData" },
          "onHoldTransactionData": {
            "$ref": "#/components/schemas/DepositAccountOnHoldTransactionData"
          },
          "reversed": { "type": "boolean" }
        }
      },
      "GuarantorsRequest": {
        "type": "object",
        "properties": {
          "addressLine1": { "type": "string" },
          "addressLine2": { "type": "string" },
          "amount": { "type": "number" },
          "city": { "type": "string" },
          "clientRelationshipTypeId": { "type": "integer", "format": "int64" },
          "comment": { "type": "string" },
          "country": { "type": "string" },
          "dateFormat": { "type": "string" },
          "dob": { "type": "string" },
          "entityId": { "type": "integer", "format": "int64" },
          "firstname": { "type": "string" },
          "guarantorTypeId": { "type": "integer", "format": "int32" },
          "housePhoneNumber": { "type": "string" },
          "lastname": { "type": "string" },
          "locale": { "type": "string" },
          "mobileNumber": { "type": "string" },
          "savingsId": { "type": "integer", "format": "int64" },
          "state": { "type": "string" },
          "zip": { "type": "string" }
        }
      },
      "Header": {
        "type": "object",
        "properties": { "name": { "type": "string" }, "value": { "type": "string" } }
      },
      "HookCreateRequest": {
        "type": "object",
        "properties": {
          "config": { "type": "object", "additionalProperties": { "type": "string" } },
          "displayName": { "type": "string" },
          "events": { "type": "array", "items": { "$ref": "#/components/schemas/HookEventData" } },
          "isActive": { "type": "boolean" },
          "name": { "type": "string", "maxLength": 100, "minLength": 0 },
          "templateId": { "type": "integer", "format": "int64" }
        }
      },
      "HookCreateResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "HookData": {
        "type": "object",
        "properties": {
          "config": { "type": "array", "items": { "$ref": "#/components/schemas/HookFieldData" } },
          "createdAt": { "type": "string", "format": "date" },
          "displayName": { "type": "string" },
          "events": { "type": "array", "items": { "$ref": "#/components/schemas/HookEventData" } },
          "groupings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/HookGroupingData" }
          },
          "id": { "type": "integer", "format": "int64" },
          "isActive": { "type": "boolean" },
          "name": { "type": "string" },
          "templateId": { "type": "integer", "format": "int64" },
          "templateName": { "type": "string" },
          "templates": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/HookTemplateData" }
          },
          "updatedAt": { "type": "string", "format": "date" }
        }
      },
      "HookDeleteResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "HookDetailsData": {
        "type": "object",
        "properties": {
          "groupings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/HookGroupingData" }
          },
          "templates": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/HookTemplateData" }
          }
        }
      },
      "HookEntityData": {
        "type": "object",
        "properties": {
          "actions": { "type": "array", "items": { "type": "string" } },
          "name": { "type": "string" }
        }
      },
      "HookEventData": {
        "type": "object",
        "properties": { "actionName": { "type": "string" }, "entityName": { "type": "string" } }
      },
      "HookFieldData": {
        "type": "object",
        "properties": {
          "fieldName": { "type": "string" },
          "fieldType": { "type": "string" },
          "fieldValue": { "type": "string" },
          "optional": { "type": "boolean" },
          "placeholder": { "type": "string" }
        }
      },
      "HookGroupingData": {
        "type": "object",
        "properties": {
          "entities": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/HookEntityData" }
          },
          "name": { "type": "string" }
        }
      },
      "HookTemplateData": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "schema": { "type": "array", "items": { "$ref": "#/components/schemas/HookFieldData" } }
        }
      },
      "HookUpdateRequest": {
        "type": "object",
        "properties": {
          "config": { "type": "object", "additionalProperties": { "type": "string" } },
          "displayName": { "type": "string" },
          "events": { "type": "array", "items": { "$ref": "#/components/schemas/HookEventData" } },
          "id": { "type": "integer", "format": "int64" },
          "isActive": { "type": "boolean" },
          "name": { "type": "string", "maxLength": 100, "minLength": 0 },
          "templateId": { "type": "integer", "format": "int64" }
        }
      },
      "HookUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "resourceId": { "type": "integer", "format": "int64" }
        }
      },
      "ILoanConfigurationDetails": {
        "type": "object",
        "properties": {
          "allowFullTermForTranche": { "type": "boolean" },
          "allowPartialPeriodInterestCalculation": { "type": "boolean" },
          "amortizationMethod": {
            "type": "string",
            "enum": ["EQUAL_PRINCIPAL", "EQUAL_INSTALLMENTS", "INVALID"]
          },
          "annualNominalInterestRate": { "type": "number" },
          "currencyData": { "$ref": "#/components/schemas/CurrencyData" },
          "daysInMonthType": { "type": "integer", "format": "int32" },
          "daysInYearCustomStrategy": {
            "type": "string",
            "enum": ["FULL_LEAP_YEAR", "FEB_29_PERIOD_ONLY"]
          },
          "daysInYearType": { "type": "integer", "format": "int32" },
          "graceOnArrearsAgeing": { "type": "integer", "format": "int32" },
          "graceOnInterestCharged": { "type": "integer", "format": "int32" },
          "graceOnInterestPayment": { "type": "integer", "format": "int32" },
          "graceOnPrincipalPayment": { "type": "integer", "format": "int32" },
          "interestCalculationPeriodMethod": {
            "type": "string",
            "enum": ["DAILY", "SAME_AS_REPAYMENT_PERIOD", "INVALID"]
          },
          "interestMethod": { "type": "string", "enum": ["DECLINING_BALANCE", "FLAT", "INVALID"] },
          "interestPeriodFrequencyType": {
            "type": "string",
            "enum": ["DAYS", "WEEKS", "MONTHS", "YEARS", "WHOLE_TERM", "INVALID"]
          },
          "interestRecalculationEnabled": { "type": "boolean" },
          "interestRecognitionOnDisbursementDate": { "type": "boolean" },
          "loanScheduleProcessingType": { "type": "string", "enum": ["HORIZONTAL", "VERTICAL"] },
          "nominalInterestRatePerPeriod": { "type": "number" },
          "numberOfRepayments": { "type": "integer", "format": "int32" },
          "preCloseInterestCalculationStrategy": {
            "type": "string",
            "enum": ["NONE", "TILL_PRE_CLOSURE_DATE", "TILL_REST_FREQUENCY_DATE"]
          },
          "recurringMoratoriumOnPrincipalPeriods": { "type": "integer", "format": "int32" },
          "repayEvery": { "type": "integer", "format": "int32" },
          "repaymentPeriodFrequencyType": {
            "type": "string",
            "enum": ["DAYS", "WEEKS", "MONTHS", "YEARS", "WHOLE_TERM", "INVALID"]
          },
          "restFrequencyType": {
            "type": "string",
            "enum": ["INVALID", "SAME_AS_REPAYMENT_PERIOD", "DAILY", "WEEKLY", "MONTHLY"]
          }
        }
      },
      "IdDocument": {
        "type": "object",
        "properties": {
          "idNumber": { "type": "string" },
          "idType": { "type": "string" },
          "issuerCountry": { "type": "string" },
          "otherIdDescription": { "type": "string" }
        }
      },
      "ImageCreateResponse": {
        "type": "object",
        "properties": {
          "resourceId": { "type": "integer", "format": "int64" },
          "resourceIdentifier": { "type": "string" }
        }
      },
      "ImageDeleteResponse": {
        "type": "object",
        "properties": {
          "resourceId": { "type": "integer", "format": "int64" },
          "resourceIdentifier": { "type": "string" }
        }
      },
      "Incentive": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "attributeName": { "type": "integer", "format": "int32" },
          "attributeValue": { "type": "string" },
          "conditionType": { "type": "integer", "format": "int32" },
          "description": { "type": "string" },
          "entityType": { "type": "integer", "format": "int32" },
          "id": { "type": "integer", "format": "int64" },
          "incentiveType": { "type": "integer", "format": "int32" }
        }
      },
      "InlineJobRequest": {
        "type": "object",
        "description": "InlineJobRequest",
        "properties": {
          "loanIds": { "type": "array", "items": { "type": "integer", "format": "int64" } }
        }
      },
      "InlineJobResponse": {
        "type": "object",
        "description": "InlineJobResponse",
        "properties": {
          "loanIds": { "type": "array", "items": { "type": "integer", "format": "int64" } }
        }
      },
      "InterestIncentiveData": { "type": "object" },
      "InterestPauseRequestDto": {
        "type": "object",
        "description": "Request DTO for creating an interest pause",
        "properties": {
          "dateFormat": {
            "type": "string",
            "description": "Format of the dates provided",
            "example": "yyyy-MM-dd"
          },
          "endDate": {
            "type": "string",
            "description": "End date of the interest pause period",
            "example": "2024-01-11"
          },
          "locale": {
            "type": "string",
            "description": "Locale to interpret the date format",
            "example": "en"
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the interest pause period",
            "example": "2024-01-01"
          }
        }
      },
      "InterestPauseResponseDto": {
        "type": "object",
        "description": "Response DTO for Interest Pause periods",
        "properties": {
          "dateFormat": {
            "type": "string",
            "description": "Date format used to interpret start and end dates",
            "example": "yyyy-MM-dd"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date of the interest pause period",
            "example": "2024-01-11"
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "ID of the loan term variation",
            "example": 1
          },
          "locale": {
            "type": "string",
            "description": "Locale used for date formatting",
            "example": "en"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the interest pause period",
            "example": "2024-01-01"
          }
        }
      },
      "InterestPeriod": {
        "type": "object",
        "properties": {
          "balanceCorrectionAmount": { "$ref": "#/components/schemas/Money" },
          "calculatedDueInterest": { "type": "number" },
          "capitalizedIncomePrincipal": { "$ref": "#/components/schemas/Money" },
          "creditedAmounts": { "$ref": "#/components/schemas/Money" },
          "creditedInterest": { "$ref": "#/components/schemas/Money" },
          "creditedPrincipal": { "$ref": "#/components/schemas/Money" },
          "disbursementAmount": { "$ref": "#/components/schemas/Money" },
          "dueDate": { "type": "string", "format": "date" },
          "firstInterestPeriod": { "type": "boolean" },
          "fromDate": { "type": "string", "format": "date" },
          "length": { "type": "integer", "format": "int64" },
          "lengthTillPeriodDueDate": { "type": "integer", "format": "int64" },
          "mc": {
            "type": "object",
            "properties": {
              "precision": { "type": "integer", "format": "int32" },
              "roundingMode": {
                "type": "string",
                "enum": [
                  "UP",
                  "DOWN",
                  "CEILING",
                  "FLOOR",
                  "HALF_UP",
                  "HALF_DOWN",
                  "HALF_EVEN",
                  "UNNECESSARY"
                ]
              }
            }
          },
          "outstandingLoanBalance": { "$ref": "#/components/schemas/Money" },
          "paused": { "type": "boolean" },
          "rateFactor": { "type": "number" },
          "rateFactorTillPeriodDueDate": { "type": "number" },
          "repaymentPeriod": { "$ref": "#/components/schemas/RepaymentPeriod" }
        },
        "required": ["dueDate", "fromDate"]
      },
      "InterestRateChartCreateRequest": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string" },
          "description": { "type": "string" },
          "fromDate": { "type": "string" },
          "locale": { "type": "string" },
          "name": { "type": "string" },
          "type": { "type": "string" }
        }
      },
      "InterestRateChartCreateResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "InterestRateChartDeleteResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "InterestRateChartSlabData": {
        "type": "object",
        "properties": {
          "amountRangeFrom": { "type": "number" },
          "amountRangeTo": { "type": "number" },
          "annualInterestRate": { "type": "number" },
          "attributeNameOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "clientClassificationOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "clientTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "conditionTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "description": { "type": "string" },
          "entityTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "fromPeriod": { "type": "integer", "format": "int32" },
          "genderOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "id": { "type": "integer", "format": "int64" },
          "incentiveTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "incentives": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/InterestIncentiveData" },
            "uniqueItems": true
          },
          "periodType": { "$ref": "#/components/schemas/EnumOptionData" },
          "periodTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "toPeriod": { "type": "integer", "format": "int32" }
        }
      },
      "InterestRateChartSlabsCreateRequest": {
        "type": "object",
        "properties": {
          "amountRangeFrom": { "type": "number" },
          "amountRangeTo": { "type": "number" },
          "annualInterestRate": { "type": "number", "format": "double" },
          "chartSlabId": { "type": "integer", "format": "int64" },
          "currencyCode": { "type": "string" },
          "description": { "type": "string" },
          "fromPeriod": { "type": "integer", "format": "int32" },
          "incentives": { "type": "array", "items": { "$ref": "#/components/schemas/Incentive" } },
          "locale": { "type": "string" },
          "periodType": { "type": "integer", "format": "int32" },
          "toPeriod": { "type": "integer", "format": "int32" }
        }
      },
      "InterestRateChartSlabsCreateResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "InterestRateChartSlabsDeleteResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "InterestRateChartSlabsUpdateChanges": {
        "type": "object",
        "properties": {
          "annualInterestRate": { "type": "number", "format": "double" },
          "description": { "type": "string" }
        }
      },
      "InterestRateChartSlabsUpdateRequest": {
        "type": "object",
        "properties": {
          "amountRangeFrom": { "type": "number" },
          "amountRangeTo": { "type": "number" },
          "annualInterestRate": { "type": "number", "format": "double" },
          "currencyCode": { "type": "string" },
          "description": { "type": "string" },
          "fromPeriod": { "type": "integer", "format": "int32" },
          "incentives": { "type": "array", "items": { "$ref": "#/components/schemas/Incentive" } },
          "locale": { "type": "string" },
          "periodType": { "type": "integer", "format": "int32" },
          "toPeriod": { "type": "integer", "format": "int32" }
        }
      },
      "InterestRateChartSlabsUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "$ref": "#/components/schemas/InterestRateChartSlabsUpdateChanges" },
          "resourceId": { "type": "integer", "format": "int64" }
        }
      },
      "InterestRateChartUpdateRequest": {
        "type": "object",
        "properties": { "description": { "type": "string" }, "name": { "type": "string" } }
      },
      "InterestRateChartUpdateResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "InteropAccountData": {
        "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" }
        }
      },
      "InteropIdentifierAccountResponseData": {
        "type": "object",
        "properties": {
          "accountId": { "type": "string", "minLength": 1 },
          "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" }
        },
        "required": ["accountId"]
      },
      "InteropIdentifierRequestData": {
        "type": "object",
        "properties": {
          "accountId": { "type": "string", "minLength": 1 },
          "idType": {
            "type": "string",
            "enum": [
              "MSISDN",
              "EMAIL",
              "PERSONAL_ID",
              "BUSINESS",
              "DEVICE",
              "ACCOUNT_ID",
              "IBAN",
              "ALIAS",
              "BBAN"
            ],
            "minLength": 1
          },
          "idValue": { "type": "string", "minLength": 1 },
          "subIdOrType": { "type": "string" }
        },
        "required": ["accountId", "idType", "idValue"]
      },
      "InteropIdentifiersResponseData": {
        "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" }
        }
      },
      "InteropKycResponseData": {
        "type": "object",
        "properties": {
          "birthCountry": { "type": "string" },
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "clientId": { "type": "integer", "format": "int64" },
          "commandId": { "type": "integer", "format": "int64" },
          "contactPhone": { "type": "string" },
          "creditBureauReportData": {
            "type": "object",
            "additionalProperties": { "type": "object" }
          },
          "dateOfBirth": { "type": "string" },
          "emailAddress": { "type": "string" },
          "externalIdOrNull": { "$ref": "#/components/schemas/ExternalId" },
          "gender": { "type": "string" },
          "glimId": { "type": "integer", "format": "int64" },
          "groupId": { "type": "integer", "format": "int64" },
          "gsimId": { "type": "integer", "format": "int64" },
          "idDocument": { "type": "array", "items": { "$ref": "#/components/schemas/IdDocument" } },
          "loanExternalId": { "$ref": "#/components/schemas/ExternalId" },
          "loanId": { "type": "integer", "format": "int64" },
          "nationality": { "type": "string" },
          "officeId": { "type": "integer", "format": "int64" },
          "postalAddress": { "$ref": "#/components/schemas/PostalAddress" },
          "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" },
          "subjectName": { "$ref": "#/components/schemas/SubjectName" },
          "transactionId": { "type": "string" }
        }
      },
      "InteropQuoteRequestData": {
        "type": "object",
        "properties": {
          "accountId": { "type": "string" },
          "amount": { "$ref": "#/components/schemas/MoneyData" },
          "amountType": { "type": "string", "enum": ["SEND", "RECEIVE"] },
          "expiration": { "type": "string", "format": "date-time" },
          "expirationLocalDate": { "type": "string", "format": "date" },
          "extensionList": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ExtensionData" }
          },
          "fees": { "$ref": "#/components/schemas/MoneyData" },
          "geoCode": { "$ref": "#/components/schemas/GeoCodeData" },
          "note": { "type": "string" },
          "quoteCode": { "type": "string" },
          "requestCode": { "type": "string" },
          "transactionCode": { "type": "string" },
          "transactionRole": { "type": "string", "enum": ["PAYER", "PAYEE"] },
          "transactionType": { "$ref": "#/components/schemas/InteropTransactionTypeData" }
        },
        "required": [
          "accountId",
          "amount",
          "amountType",
          "quoteCode",
          "transactionCode",
          "transactionRole"
        ]
      },
      "InteropQuoteResponseData": {
        "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" }
          },
          "expiration": { "type": "string" },
          "extensionList": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ExtensionData" }
          },
          "externalIdOrNull": { "$ref": "#/components/schemas/ExternalId" },
          "fspCommission": { "$ref": "#/components/schemas/MoneyData" },
          "fspFee": { "$ref": "#/components/schemas/MoneyData" },
          "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" },
          "quoteCode": { "type": "string" },
          "resourceExternalId": { "$ref": "#/components/schemas/ExternalId" },
          "resourceId": { "type": "integer", "format": "int64" },
          "resourceIdentifier": { "type": "string" },
          "rollbackTransaction": { "type": "boolean" },
          "savingsId": { "type": "integer", "format": "int64" },
          "state": { "type": "string", "enum": ["ACCEPTED", "REJECTED"] },
          "subResourceExternalId": { "$ref": "#/components/schemas/ExternalId" },
          "subResourceId": { "type": "integer", "format": "int64" },
          "transactionCode": { "type": "string" },
          "transactionId": { "type": "string" }
        },
        "required": ["quoteCode", "state", "transactionCode"]
      },
      "InteropTransactionData": {
        "type": "object",
        "properties": {
          "accountBalance": { "type": "number" },
          "accountId": { "type": "string" },
          "amount": { "type": "number" },
          "bookingDateTime": { "type": "string", "format": "date" },
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "chargeAmount": { "type": "number" },
          "clientId": { "type": "integer", "format": "int64" },
          "commandId": { "type": "integer", "format": "int64" },
          "creditBureauReportData": {
            "type": "object",
            "additionalProperties": { "type": "object" }
          },
          "currency": { "type": "string" },
          "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" },
          "note": { "type": "string" },
          "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" },
          "savingTransactionId": { "type": "string" },
          "savingsId": { "type": "integer", "format": "int64" },
          "subResourceExternalId": { "$ref": "#/components/schemas/ExternalId" },
          "subResourceId": { "type": "integer", "format": "int64" },
          "transactionId": { "type": "string" },
          "transactionType": {
            "type": "string",
            "enum": [
              "INVALID",
              "DEPOSIT",
              "WITHDRAWAL",
              "INTEREST_POSTING",
              "WITHDRAWAL_FEE",
              "ANNUAL_FEE",
              "WAIVE_CHARGES",
              "PAY_CHARGE",
              "DIVIDEND_PAYOUT",
              "ACCRUAL",
              "INITIATE_TRANSFER",
              "APPROVE_TRANSFER",
              "WITHDRAW_TRANSFER",
              "REJECT_TRANSFER",
              "WRITTEN_OFF",
              "OVERDRAFT_INTEREST",
              "WITHHOLD_TAX",
              "ESCHEAT",
              "AMOUNT_HOLD",
              "AMOUNT_RELEASE"
            ]
          },
          "valueDateTime": { "type": "string", "format": "date" }
        },
        "required": [
          "accountBalance",
          "accountId",
          "amount",
          "bookingDateTime",
          "currency",
          "savingTransactionId",
          "transactionType",
          "valueDateTime"
        ]
      },
      "InteropTransactionRequestData": {
        "type": "object",
        "properties": {
          "accountId": { "type": "string" },
          "amount": { "$ref": "#/components/schemas/MoneyData" },
          "expiration": { "type": "string", "format": "date-time" },
          "expirationLocalDate": { "type": "string", "format": "date" },
          "extensionList": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ExtensionData" }
          },
          "geoCode": { "$ref": "#/components/schemas/GeoCodeData" },
          "note": { "type": "string" },
          "requestCode": { "type": "string" },
          "transactionCode": { "type": "string" },
          "transactionRole": { "type": "string", "enum": ["PAYER", "PAYEE"] },
          "transactionType": { "$ref": "#/components/schemas/InteropTransactionTypeData" }
        },
        "required": ["accountId", "amount", "transactionCode", "transactionRole"]
      },
      "InteropTransactionRequestResponseData": {
        "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" }
          },
          "expiration": { "type": "string" },
          "extensionList": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ExtensionData" }
          },
          "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" },
          "requestCode": { "type": "string" },
          "resourceExternalId": { "$ref": "#/components/schemas/ExternalId" },
          "resourceId": { "type": "integer", "format": "int64" },
          "resourceIdentifier": { "type": "string" },
          "rollbackTransaction": { "type": "boolean" },
          "savingsId": { "type": "integer", "format": "int64" },
          "state": { "type": "string", "enum": ["ACCEPTED", "REJECTED"] },
          "subResourceExternalId": { "$ref": "#/components/schemas/ExternalId" },
          "subResourceId": { "type": "integer", "format": "int64" },
          "transactionCode": { "type": "string" },
          "transactionId": { "type": "string" }
        },
        "required": ["requestCode", "state", "transactionCode"]
      },
      "InteropTransactionTypeData": {
        "type": "object",
        "properties": {
          "initiator": { "type": "string", "enum": ["PAYER", "PAYEE"] },
          "initiatorType": {
            "type": "string",
            "enum": ["CONSUMER", "AGENT", "BUSINESS", "DEVICE"]
          },
          "scenario": {
            "type": "string",
            "enum": ["DEPOSIT", "WITHDRAWAL", "TRANSFER", "PAYMENT", "REFUND"]
          },
          "subScenario": { "type": "string" }
        },
        "required": ["initiator", "initiatorType", "scenario"]
      },
      "InteropTransactionsData": {
        "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" },
          "transactions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/InteropTransactionData" }
          }
        }
      },
      "InteropTransferRequestData": {
        "type": "object",
        "properties": {
          "accountId": { "type": "string" },
          "amount": { "$ref": "#/components/schemas/MoneyData" },
          "expiration": { "type": "string", "format": "date-time" },
          "expirationLocalDate": { "type": "string", "format": "date" },
          "extensionList": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ExtensionData" }
          },
          "fspCommission": { "$ref": "#/components/schemas/MoneyData" },
          "fspFee": { "$ref": "#/components/schemas/MoneyData" },
          "geoCode": { "$ref": "#/components/schemas/GeoCodeData" },
          "note": { "type": "string" },
          "requestCode": { "type": "string" },
          "transactionCode": { "type": "string" },
          "transactionRole": { "type": "string", "enum": ["PAYER", "PAYEE"] },
          "transactionType": { "$ref": "#/components/schemas/InteropTransactionTypeData" },
          "transferCode": { "type": "string" }
        },
        "required": ["accountId", "amount", "transactionCode", "transactionRole", "transferCode"]
      },
      "InteropTransferResponseData": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "clientId": { "type": "integer", "format": "int64" },
          "commandId": { "type": "integer", "format": "int64" },
          "completedTimestamp": { "type": "string" },
          "creditBureauReportData": {
            "type": "object",
            "additionalProperties": { "type": "object" }
          },
          "expiration": { "type": "string" },
          "extensionList": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ExtensionData" }
          },
          "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" },
          "state": { "type": "string", "enum": ["ACCEPTED", "REJECTED"] },
          "subResourceExternalId": { "$ref": "#/components/schemas/ExternalId" },
          "subResourceId": { "type": "integer", "format": "int64" },
          "transactionCode": { "type": "string" },
          "transactionId": { "type": "string" },
          "transferCode": { "type": "string" }
        },
        "required": ["state", "transactionCode", "transferCode"]
      },
      "IsCatchUpRunningDTO": {
        "type": "object",
        "properties": {
          "catchUpRunning": { "type": "boolean" },
          "processingDate": { "type": "string", "format": "date" }
        }
      },
      "JobBusinessStepConfigData": {
        "type": "object",
        "properties": {
          "businessSteps": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/BusinessStep" }
          },
          "jobName": { "type": "string" }
        }
      },
      "JobBusinessStepDetail": {
        "type": "object",
        "properties": {
          "availableBusinessSteps": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/BusinessStepDetail" }
          },
          "jobName": { "type": "string" }
        }
      },
      "JobDetailHistoryData": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "jobRunEndTime": { "type": "string", "format": "date-time" },
          "jobRunErrorLog": { "type": "string" },
          "jobRunErrorMessage": { "type": "string" },
          "jobRunStartTime": { "type": "string", "format": "date-time" },
          "status": { "type": "string" },
          "triggerType": { "type": "string" },
          "version": { "type": "integer", "format": "int64" }
        }
      },
      "JobDetailHistoryDataSwagger": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "jobRunEndTime": { "type": "string", "format": "date-time" },
          "jobRunStartTime": { "type": "string", "format": "date-time" },
          "status": { "type": "string", "example": "success" },
          "triggerType": { "type": "string", "example": "cron" },
          "version": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "JobParameterDTO": {
        "type": "object",
        "example": "Update loan Summary",
        "properties": {
          "parameterName": { "type": "string" },
          "parameterValue": { "type": "string" }
        }
      },
      "JournalEntryCommand": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string" },
          "accountingRuleId": { "type": "integer", "format": "int64" },
          "amount": { "type": "number" },
          "bankNumber": { "type": "string" },
          "checkNumber": { "type": "string" },
          "comments": { "type": "string" },
          "credits": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SingleDebitOrCreditEntryCommand" }
          },
          "currencyCode": { "type": "string" },
          "dateFormat": { "type": "string" },
          "debits": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SingleDebitOrCreditEntryCommand" }
          },
          "externalAssetOwner": { "type": "string" },
          "locale": { "type": "string" },
          "officeId": { "type": "integer", "format": "int64" },
          "paymentTypeId": { "type": "integer", "format": "int64" },
          "receiptNumber": { "type": "string" },
          "referenceNumber": { "type": "string" },
          "routingCode": { "type": "string" },
          "transactionDate": { "type": "string", "format": "date" }
        }
      },
      "JournalEntryData": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string" },
          "amount": { "type": "number" },
          "bankNumber": { "type": "string" },
          "checkNumber": { "type": "string" },
          "comments": { "type": "string" },
          "createdByUserId": { "type": "integer", "format": "int64" },
          "createdByUserName": { "type": "string" },
          "createdDate": { "type": "string", "format": "date" },
          "credits": { "type": "array", "items": { "$ref": "#/components/schemas/CreditDebit" } },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "currencyCode": { "type": "string" },
          "dateFormat": { "type": "string" },
          "debits": { "type": "array", "items": { "$ref": "#/components/schemas/CreditDebit" } },
          "entityId": { "type": "integer", "format": "int64" },
          "entityType": { "$ref": "#/components/schemas/EnumOptionData" },
          "entryType": { "$ref": "#/components/schemas/EnumOptionData" },
          "externalAssetOwner": { "type": "string" },
          "glAccountCode": { "type": "string" },
          "glAccountId": { "type": "integer", "format": "int64" },
          "glAccountName": { "type": "string" },
          "glAccountType": { "$ref": "#/components/schemas/EnumOptionData" },
          "id": { "type": "integer", "format": "int64" },
          "locale": { "type": "string" },
          "manualEntry": { "type": "boolean" },
          "officeId": { "type": "integer", "format": "int64" },
          "officeName": { "type": "string" },
          "officeRunningBalance": { "type": "number" },
          "organizationRunningBalance": { "type": "number" },
          "paymentTypeId": { "type": "integer", "format": "int64" },
          "receiptNumber": { "type": "string" },
          "referenceNumber": { "type": "string" },
          "reversed": { "type": "boolean" },
          "routingCode": { "type": "string" },
          "rowIndex": { "type": "integer", "format": "int32" },
          "runningBalanceComputed": { "type": "boolean" },
          "savingTransactionId": { "type": "integer", "format": "int64" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "transactionDate": { "type": "string", "format": "date" },
          "transactionDetails": { "$ref": "#/components/schemas/TransactionDetailData" },
          "transactionId": { "type": "string" }
        }
      },
      "JournalEntryTransactionItem": {
        "type": "object",
        "properties": {
          "amount": { "type": "number", "format": "double", "example": 100 },
          "comments": { "type": "string", "example": "Manual entry" },
          "createdByUserId": { "type": "integer", "format": "int64", "example": 1 },
          "createdByUserName": { "type": "string", "example": "admin" },
          "createdDate": { "type": "string", "format": "date" },
          "currency": { "$ref": "#/components/schemas/CurrencyItem" },
          "entityId": { "type": "integer", "format": "int64", "example": 1 },
          "entityType": { "$ref": "#/components/schemas/EnumOptionType" },
          "entryType": { "$ref": "#/components/schemas/EnumOptionType" },
          "externalAssetOwner": { "type": "string", "example": "qwerty1234" },
          "glAccountCode": { "type": "string", "example": "0123-4567" },
          "glAccountId": { "type": "integer", "format": "int64", "example": 10 },
          "glAccountName": { "type": "string", "example": "Cash Account" },
          "glAccountType": { "$ref": "#/components/schemas/EnumOptionType" },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "manualEntry": { "type": "boolean", "example": false },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "officeName": { "type": "string", "example": "Head Office" },
          "officeRunningBalance": { "type": "number", "example": 1234.56 },
          "organizationRunningBalance": { "type": "number", "example": 1234.56 },
          "referenceNumber": { "type": "string", "example": "QWERTY" },
          "reversed": { "type": "boolean", "example": false },
          "runningBalanceComputed": { "type": "boolean", "example": false },
          "submittedOnDate": { "type": "string", "format": "date" },
          "transactionDate": { "type": "string", "format": "date" },
          "transactionDetails": { "$ref": "#/components/schemas/TransactionDetails" },
          "transactionId": { "type": "string", "example": "L12" }
        }
      },
      "LoanAccountLock": {
        "type": "object",
        "properties": {
          "error": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "loanId": { "type": "integer", "format": "int64" },
          "lockOwner": {
            "type": "string",
            "enum": ["LOAN_COB_CHUNK_PROCESSING", "LOAN_INLINE_COB_PROCESSING"]
          },
          "lockPlacedOn": { "type": "string", "format": "date-time" },
          "lockPlacedOnCobBusinessDate": { "type": "string", "format": "date" },
          "new": { "type": "boolean" },
          "newLockOwner": {
            "type": "string",
            "enum": ["LOAN_COB_CHUNK_PROCESSING", "LOAN_INLINE_COB_PROCESSING"],
            "writeOnly": true
          },
          "stacktrace": { "type": "string" },
          "version": { "type": "integer", "format": "int64" }
        }
      },
      "LoanAccountLockResponseDTO": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanAccountLock" }
          },
          "limit": { "type": "integer", "format": "int32" },
          "page": { "type": "integer", "format": "int32" }
        }
      },
      "LoanAmortizationAllocationResponse": {
        "type": "object",
        "description": "LoanAmortizationAllocationResponse",
        "properties": {
          "adjustmentAmount": { "type": "number", "example": 25 },
          "amortizationMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AmortizationMappingData" }
          },
          "baseLoanTransactionAmount": { "type": "number", "example": 1000 },
          "baseLoanTransactionDate": {
            "type": "string",
            "format": "date",
            "example": "2024-01-15"
          },
          "baseLoanTransactionId": { "type": "integer", "format": "int64", "example": 123 },
          "chargedOffAmount": { "type": "number", "example": 0 },
          "loanExternalId": { "type": "string", "example": "loan-ext-123" },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "unrecognizedAmount": { "type": "number", "example": 50 }
        }
      },
      "LoanApprovedAmountHistoryData": {
        "type": "object",
        "properties": {
          "dateOfChange": { "type": "string", "format": "date-time" },
          "externalLoanId": { "$ref": "#/components/schemas/ExternalId" },
          "loanId": { "type": "integer", "format": "int64" },
          "newApprovedAmount": { "type": "number" },
          "oldApprovedAmount": { "type": "number" }
        }
      },
      "LoanArrearsData": {
        "type": "object",
        "properties": {
          "feeOverdue": { "type": "number" },
          "interestOverdue": { "type": "number" },
          "overDueSince": { "type": "string", "format": "date" },
          "overdue": { "type": "boolean" },
          "penaltyOverdue": { "type": "number" },
          "principalOverdue": { "type": "number" },
          "totalOverdue": { "type": "number" }
        }
      },
      "LoanAuditFieldsData": {
        "type": "object",
        "properties": {
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" }
        }
      },
      "LoanCapitalizedIncomeData": {
        "type": "object",
        "properties": {
          "capitalizedIncomeData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CapitalizedIncomeDetails" }
          }
        }
      },
      "LoanChargePaidByData": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "chargeId": { "type": "integer", "format": "int64" },
          "id": { "type": "integer", "format": "int64" },
          "installmentNumber": { "type": "integer", "format": "int32" },
          "name": { "type": "string" },
          "transactionId": { "type": "integer", "format": "int64" }
        }
      },
      "LoanCollateralDeleteResponse": {
        "type": "object",
        "properties": {
          "loanId": { "type": "integer", "format": "int64" },
          "resourceId": { "type": "integer", "format": "int64" }
        }
      },
      "LoanCollateralResponseData": {
        "type": "object",
        "properties": {
          "clientCollateralId": { "type": "integer", "format": "int64" },
          "collateralId": { "type": "integer", "format": "int64" },
          "quantity": { "type": "number" },
          "total": { "type": "number" },
          "totalCollateral": { "type": "number" }
        }
      },
      "LoanCollateralTemplateData": {
        "type": "object",
        "properties": {
          "basePrice": { "type": "number" },
          "collateralId": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "pctToBase": { "type": "number" },
          "quantity": { "type": "number" }
        }
      },
      "LoanFeeData": {
        "type": "object",
        "properties": {
          "feeAdjustments": { "type": "number" },
          "feeChargesCharged": { "type": "number" },
          "feeChargesDueAtDisbursementCharged": { "type": "number" },
          "feeChargesOutstanding": { "type": "number" },
          "feeChargesPaid": { "type": "number" },
          "feeChargesWaived": { "type": "number" },
          "feeChargesWrittenOff": { "type": "number" }
        }
      },
      "LoanInterestData": {
        "type": "object",
        "properties": {
          "interestCharged": { "type": "number" },
          "interestOutstanding": { "type": "number" },
          "interestPaid": { "type": "number" },
          "interestWaived": { "type": "number" },
          "interestWrittenOff": { "type": "number" }
        }
      },
      "LoanOriginatorData": {
        "type": "object",
        "properties": {
          "channelType": { "$ref": "#/components/schemas/CodeValueData" },
          "externalId": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "originatorType": { "$ref": "#/components/schemas/CodeValueData" },
          "status": { "type": "string" }
        }
      },
      "LoanOriginatorMappingResponse": {
        "type": "object",
        "properties": {
          "loanExternalId": { "type": "string" },
          "loanId": { "type": "integer", "format": "int64" },
          "originatorExternalId": { "type": "string" },
          "originatorId": { "type": "integer", "format": "int64" }
        }
      },
      "LoanOriginatorsResponse": {
        "type": "object",
        "properties": {
          "originators": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanOriginatorData" }
          }
        }
      },
      "LoanPenaltyData": {
        "type": "object",
        "properties": {
          "penaltyAdjustments": { "type": "number" },
          "penaltyChargesCharged": { "type": "number" },
          "penaltyChargesOutstanding": { "type": "number" },
          "penaltyChargesPaid": { "type": "number" },
          "penaltyChargesWaived": { "type": "number" },
          "penaltyChargesWrittenOff": { "type": "number" }
        }
      },
      "LoanPointInTimeData": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "string" },
          "arrears": { "$ref": "#/components/schemas/LoanArrearsData" },
          "clientAccountNo": { "type": "string" },
          "clientDisplayName": { "type": "string" },
          "clientExternalId": { "type": "string" },
          "clientId": { "type": "integer", "format": "int64" },
          "clientOfficeId": { "type": "integer", "format": "int64" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "externalId": { "type": "string" },
          "fee": { "$ref": "#/components/schemas/LoanFeeData" },
          "id": { "type": "integer", "format": "int64" },
          "interest": { "$ref": "#/components/schemas/LoanInterestData" },
          "loanProductId": { "type": "integer", "format": "int64" },
          "loanProductName": { "type": "string" },
          "penalty": { "$ref": "#/components/schemas/LoanPenaltyData" },
          "principal": { "$ref": "#/components/schemas/LoanPrincipalData" },
          "status": { "$ref": "#/components/schemas/LoanStatusEnumData" },
          "total": { "$ref": "#/components/schemas/LoanTotalAmountData" }
        }
      },
      "LoanPrincipalData": {
        "type": "object",
        "properties": {
          "principalAdjustments": { "type": "number" },
          "principalDisbursed": { "type": "number" },
          "principalOutstanding": { "type": "number" },
          "principalPaid": { "type": "number" },
          "principalWrittenOff": { "type": "number" }
        }
      },
      "LoanProduct": {
        "type": "object",
        "properties": {
          "accountMovesOutOfNPAOnlyOnArrearsCompletion": { "type": "boolean" },
          "accountingDisabled": { "type": "boolean" },
          "accountingRule": {
            "type": "string",
            "enum": ["NONE", "CASH BASED", "ACCRUAL PERIODIC", "ACCRUAL UPFRONT"]
          },
          "allowApprovedDisbursedAmountsOverApplied": { "type": "boolean" },
          "allowFullTermForTranche": { "type": "boolean" },
          "allowVariabeInstallments": { "type": "boolean" },
          "arrearsBasedOnOriginalSchedule": { "type": "boolean" },
          "borrowerCycleVariations": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductBorrowerCycleVariations" },
            "uniqueItems": true
          },
          "canDefineInstallmentAmount": { "type": "boolean" },
          "canUseForTopup": { "type": "boolean" },
          "cashBasedAccountingEnabled": { "type": "boolean" },
          "charges": { "type": "array", "items": { "$ref": "#/components/schemas/Charge" } },
          "closeDate": { "type": "string", "format": "date" },
          "creditAllocationRules": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductCreditAllocationRule" }
          },
          "currency": { "$ref": "#/components/schemas/MonetaryCurrency" },
          "delinquencyBucket": { "$ref": "#/components/schemas/DelinquencyBucket" },
          "description": { "type": "string" },
          "disallowExpectedDisbursements": { "type": "boolean" },
          "dueDaysForRepaymentEvent": { "type": "integer", "format": "int32" },
          "enableInstallmentLevelDelinquency": { "type": "boolean" },
          "equalAmortization": { "type": "boolean" },
          "externalId": { "$ref": "#/components/schemas/ExternalId" },
          "fixedPrincipalPercentagePerInstallment": { "type": "number" },
          "floatingRates": { "$ref": "#/components/schemas/LoanProductFloatingRates" },
          "fund": { "$ref": "#/components/schemas/Fund" },
          "holdGuaranteeFunds": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "includeInBorrowerCycle": { "type": "boolean" },
          "interestPeriodFrequencyType": {
            "type": "string",
            "enum": ["DAYS", "WEEKS", "MONTHS", "YEARS", "WHOLE_TERM", "INVALID"]
          },
          "interestRecalculationEnabled": { "type": "boolean" },
          "linkedToFloatingInterestRate": { "type": "boolean" },
          "loanConfigurableAttributes": {
            "$ref": "#/components/schemas/LoanProductConfigurableAttributes"
          },
          "loanProductGuaranteeDetails": {
            "$ref": "#/components/schemas/LoanProductGuaranteeDetails"
          },
          "loanProductMinMaxConstraints": {
            "$ref": "#/components/schemas/LoanProductMinMaxConstraints"
          },
          "loanProductRelatedDetail": { "$ref": "#/components/schemas/LoanProductRelatedDetail" },
          "loanProductTrancheDetails": { "$ref": "#/components/schemas/LoanProductTrancheDetails" },
          "maxNominalInterestRatePerPeriod": { "type": "number" },
          "maxNumberOfRepayments": { "type": "integer", "format": "int32" },
          "maxPrincipalAmount": { "$ref": "#/components/schemas/Money" },
          "minNominalInterestRatePerPeriod": { "type": "number" },
          "minNumberOfRepayments": { "type": "integer", "format": "int32" },
          "minPrincipalAmount": { "$ref": "#/components/schemas/Money" },
          "minimumDaysBetweenDisbursalAndFirstRepayment": { "type": "integer", "format": "int32" },
          "multiDisburseLoan": { "type": "boolean" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "nominalInterestRatePerPeriod": { "type": "number" },
          "numberOfRepayments": { "type": "integer", "format": "int32" },
          "overAppliedCalculationType": { "type": "string" },
          "overAppliedNumber": { "type": "integer", "format": "int32" },
          "overDueDaysForRepaymentEvent": { "type": "integer", "format": "int32" },
          "overdueDaysForNPA": { "type": "integer", "format": "int32" },
          "paymentAllocationRules": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductPaymentAllocationRule" }
          },
          "periodicAccrualAccountingEnabled": { "type": "boolean" },
          "principalAmount": { "$ref": "#/components/schemas/Money" },
          "principalThresholdForLastInstallment": { "type": "number" },
          "productInterestRecalculationDetails": {
            "$ref": "#/components/schemas/LoanProductInterestRecalculationDetails"
          },
          "rates": { "type": "array", "items": { "$ref": "#/components/schemas/Rate" } },
          "repaymentStartDateType": {
            "type": "string",
            "enum": ["INVALID", "DISBURSEMENT_DATE", "SUBMITTED_ON_DATE"]
          },
          "shortName": { "type": "string" },
          "startDate": { "type": "string", "format": "date" },
          "syncExpectedWithDisbursementDate": { "type": "boolean" },
          "transactionProcessingStrategyCode": { "type": "string" },
          "transactionProcessingStrategyName": { "type": "string" },
          "upfrontAccrualAccountingEnabled": { "type": "boolean" },
          "useBorrowerCycle": { "type": "boolean" },
          "variableInstallmentConfig": {
            "$ref": "#/components/schemas/LoanProductVariableInstallmentConfig"
          }
        }
      },
      "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" }
        }
      },
      "LoanProductBorrowerCycleVariationData": {
        "type": "object",
        "properties": {
          "borrowerCycleNumber": { "type": "integer", "format": "int32" },
          "defaultValue": { "type": "number" },
          "id": { "type": "integer", "format": "int64" },
          "loanProductParamType": {
            "type": "string",
            "enum": ["INVALID", "PRINCIPAL", "INTERESTRATE", "REPAYMENT"]
          },
          "loanProductValueConditionType": {
            "type": "string",
            "enum": ["INVALID", "EQUAL", "GREATERTHAN"]
          },
          "maxValue": { "type": "number" },
          "minValue": { "type": "number" },
          "paramType": { "$ref": "#/components/schemas/EnumOptionData" },
          "valueConditionType": { "$ref": "#/components/schemas/EnumOptionData" }
        }
      },
      "LoanProductBorrowerCycleVariations": {
        "type": "object",
        "properties": {
          "borrowerCycleNumber": { "type": "integer", "format": "int32" },
          "defaultValue": { "type": "number" },
          "id": { "type": "integer", "format": "int64" },
          "maxValue": { "type": "number" },
          "minValue": { "type": "number" },
          "new": { "type": "boolean" },
          "paramType": {
            "type": "string",
            "enum": ["INVALID", "PRINCIPAL", "INTERESTRATE", "REPAYMENT"]
          },
          "valueConditionType": { "type": "string", "enum": ["INVALID", "EQUAL", "GREATERTHAN"] }
        }
      },
      "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" },
          "chargeId": { "type": "integer", "format": "int64", "example": 1 },
          "incomeAccount": { "$ref": "#/components/schemas/GLAccountData" },
          "incomeAccountId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "LoanProductConfigurableAttributes": {
        "type": "object",
        "properties": {
          "amortizationBoolean": { "type": "boolean" },
          "amortizationType": { "type": "boolean", "writeOnly": true },
          "arrearsToleranceBoolean": { "type": "boolean" },
          "graceOnArrearsAgeing": { "type": "boolean", "writeOnly": true },
          "graceOnArrearsAgingBoolean": { "type": "boolean" },
          "graceOnPrincipalAndInterestPayment": { "type": "boolean", "writeOnly": true },
          "graceOnPrincipalAndInterestPaymentBoolean": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "inArrearsTolerance": { "type": "boolean", "writeOnly": true },
          "interestCalcPeriodBoolean": { "type": "boolean" },
          "interestCalculationPeriodType": { "type": "boolean", "writeOnly": true },
          "interestMethodBoolean": { "type": "boolean" },
          "interestType": { "type": "boolean", "writeOnly": true },
          "loanProduct": { "$ref": "#/components/schemas/LoanProduct" },
          "new": { "type": "boolean" },
          "repaymentEvery": { "type": "boolean", "writeOnly": true },
          "repaymentEveryBoolean": { "type": "boolean" },
          "transactionProcessingStrategyBoolean": { "type": "boolean" },
          "transactionProcessingStrategyCode": { "type": "boolean", "writeOnly": true }
        }
      },
      "LoanProductCreditAllocationRule": {
        "type": "object",
        "properties": {
          "allocationTypes": {
            "type": "array",
            "items": { "type": "string", "enum": ["PENALTY", "FEE", "PRINCIPAL", "INTEREST"] }
          },
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "loanProduct": { "$ref": "#/components/schemas/LoanProduct" },
          "new": { "type": "boolean" },
          "transactionType": { "type": "string", "enum": ["CHARGEBACK"] }
        },
        "required": ["createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate"]
      },
      "LoanProductData": {
        "type": "object",
        "properties": {
          "accountMovesOutOfNPAOnlyOnArrearsCompletion": { "type": "boolean" },
          "accountingMappingOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": { "$ref": "#/components/schemas/GLAccountData" }
            }
          },
          "accountingMappings": { "type": "object", "additionalProperties": { "type": "object" } },
          "accountingRule": { "$ref": "#/components/schemas/EnumOptionData" },
          "accountingRuleOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "advancedPaymentAllocationFutureInstallmentAllocationRules": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "advancedPaymentAllocationTransactionTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "advancedPaymentAllocationTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "allowApprovedDisbursedAmountsOverApplied": { "type": "boolean" },
          "allowAttributeOverrides": {
            "$ref": "#/components/schemas/LoanProductConfigurableAttributes"
          },
          "allowFullTermForTranche": { "type": "boolean" },
          "allowPartialPeriodInterestCalculation": { "type": "boolean" },
          "allowVariableInstallments": { "type": "boolean" },
          "amortizationType": { "$ref": "#/components/schemas/EnumOptionData" },
          "amortizationTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "annualInterestRate": { "type": "number" },
          "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/CodeValueData" }
          },
          "buydownFeeClassificationToIncomeAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ClassificationToGLAccountData" }
          },
          "canDefineInstallmentAmount": { "type": "boolean" },
          "canUseForTopup": { "type": "boolean" },
          "capitalizedIncomeCalculationType": {
            "$ref": "#/components/schemas/StringEnumOptionData"
          },
          "capitalizedIncomeCalculationTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "capitalizedIncomeClassificationOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "capitalizedIncomeClassificationToIncomeAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ClassificationToGLAccountData" }
          },
          "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/CodeValueData" }
          },
          "chargeOffReasonToExpenseAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AdvancedMappingToExpenseAccountData" }
          },
          "chargeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeData" }
          },
          "charges": { "type": "array", "items": { "$ref": "#/components/schemas/ChargeData" } },
          "closeDate": { "type": "string", "format": "date" },
          "compoundingToBePostedAsTransaction": { "type": "boolean" },
          "creditAllocation": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CreditAllocationData" }
          },
          "creditAllocationAllocationTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "creditAllocationTransactionTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "currencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CurrencyData" }
          },
          "daysInMonthType": { "$ref": "#/components/schemas/EnumOptionData" },
          "daysInMonthTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "daysInYearCustomStrategy": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "daysInYearCustomStrategyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "daysInYearType": { "$ref": "#/components/schemas/EnumOptionData" },
          "daysInYearTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "defaultDifferentialLendingRate": { "type": "number" },
          "delinquencyBucket": { "$ref": "#/components/schemas/DelinquencyBucketData" },
          "delinquencyBucketOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DelinquencyBucketData" }
          },
          "description": { "type": "string" },
          "disallowExpectedDisbursements": { "type": "boolean" },
          "disbursedAmountPercentageForDownPayment": { "type": "number" },
          "dueDaysForRepaymentEvent": { "type": "integer", "format": "int32" },
          "enableAccrualActivityPosting": { "type": "boolean" },
          "enableAutoRepaymentForDownPayment": { "type": "boolean" },
          "enableBuyDownFee": { "type": "boolean" },
          "enableDownPayment": { "type": "boolean" },
          "enableIncomeCapitalization": { "type": "boolean" },
          "enableInstallmentLevelDelinquency": { "type": "boolean" },
          "equalAmortization": { "type": "boolean" },
          "externalId": { "type": "string" },
          "feeToIncomeAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeToGLAccountMapper" }
          },
          "fixedLength": { "type": "integer", "format": "int32" },
          "fixedPrincipalPercentagePerInstallment": { "type": "number" },
          "floatingInterestRateCalculationAllowed": { "type": "boolean" },
          "floatingRateId": { "type": "integer", "format": "int32" },
          "floatingRateName": { "type": "string" },
          "floatingRateOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/FloatingRateData" }
          },
          "fundId": { "type": "integer", "format": "int64" },
          "fundName": { "type": "string" },
          "fundOptions": { "type": "array", "items": { "$ref": "#/components/schemas/FundData" } },
          "graceOnArrearsAgeing": { "type": "integer", "format": "int32" },
          "graceOnInterestCharged": { "type": "integer", "format": "int32" },
          "graceOnInterestPayment": { "type": "integer", "format": "int32" },
          "graceOnPrincipalPayment": { "type": "integer", "format": "int32" },
          "holdGuaranteeFunds": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "inArrearsTolerance": { "type": "number" },
          "includeInBorrowerCycle": { "type": "boolean" },
          "installmentAmountInMultiplesOf": { "type": "integer", "format": "int32" },
          "interestCalculationPeriodType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCalculationPeriodTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestRateDifferential": { "type": "number" },
          "interestRateFrequencyType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestRateFrequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestRatePerPeriod": { "type": "number" },
          "interestRateVariationsForBorrowerCycle": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductBorrowerCycleVariationData" }
          },
          "interestRecalculationCompoundingTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestRecalculationData": {
            "$ref": "#/components/schemas/LoanProductInterestRecalculationData"
          },
          "interestRecalculationDayOfWeekTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestRecalculationEnabled": { "type": "boolean" },
          "interestRecalculationFrequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestRecalculationNthDayTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestRecognitionOnDisbursementDate": { "type": "boolean" },
          "interestType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "isAllowPartialPeriodInterestCalculation": { "type": "boolean" },
          "isEqualAmortization": { "type": "boolean" },
          "isFloatingInterestRateCalculationAllowed": { "type": "boolean" },
          "isInterestRecalculationEnabled": { "type": "boolean" },
          "isLinkedToFloatingInterestRates": { "type": "boolean" },
          "isRatesEnabled": { "type": "boolean" },
          "linkedToFloatingInterestRates": { "type": "boolean" },
          "loanProductConfigurableAttributes": {
            "$ref": "#/components/schemas/LoanProductConfigurableAttributes"
          },
          "loanScheduleProcessingType": { "$ref": "#/components/schemas/EnumOptionData" },
          "loanScheduleProcessingTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "loanScheduleType": { "$ref": "#/components/schemas/EnumOptionData" },
          "loanScheduleTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "maxDifferentialLendingRate": { "type": "number" },
          "maxInterestRatePerPeriod": { "type": "number" },
          "maxNumberOfRepayments": { "type": "integer", "format": "int32" },
          "maxPrincipal": { "type": "number" },
          "maxTrancheCount": { "type": "integer", "format": "int32" },
          "maximumGap": { "type": "integer", "format": "int32" },
          "merchantBuyDownFee": { "type": "boolean" },
          "minDifferentialLendingRate": { "type": "number" },
          "minInterestRatePerPeriod": { "type": "number" },
          "minNumberOfRepayments": { "type": "integer", "format": "int32" },
          "minPrincipal": { "type": "number" },
          "minimumDaysBetweenDisbursalAndFirstRepayment": { "type": "integer", "format": "int32" },
          "minimumGap": { "type": "integer", "format": "int32" },
          "multiDisburseLoan": { "type": "boolean" },
          "name": { "type": "string" },
          "numberOfRepaymentVariationsForBorrowerCycle": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductBorrowerCycleVariationData" }
          },
          "numberOfRepayments": { "type": "integer", "format": "int32" },
          "outstandingLoanBalance": { "type": "number" },
          "overAppliedCalculationType": { "type": "string" },
          "overAppliedNumber": { "type": "integer", "format": "int32" },
          "overDueDaysForRepaymentEvent": { "type": "integer", "format": "int32" },
          "overdueDaysForNPA": { "type": "integer", "format": "int32" },
          "paymentAllocation": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AdvancedPaymentData" }
          },
          "paymentChannelToFundSourceMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PaymentTypeToGLAccountMapper" }
          },
          "paymentTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PaymentTypeData" }
          },
          "penaltyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeData" }
          },
          "penaltyToIncomeAccountMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeToGLAccountMapper" }
          },
          "preClosureInterestCalculationStrategyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "principal": { "type": "number" },
          "principalThresholdForLastInstallment": { "type": "number" },
          "principalVariationsForBorrowerCycle": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductBorrowerCycleVariationData" }
          },
          "productGuaranteeData": { "$ref": "#/components/schemas/LoanProductGuaranteeData" },
          "rateOptions": { "type": "array", "items": { "$ref": "#/components/schemas/RateData" } },
          "rates": { "type": "array", "items": { "$ref": "#/components/schemas/RateData" } },
          "ratesEnabled": { "type": "boolean" },
          "recurringMoratoriumOnPrincipalPeriods": { "type": "integer", "format": "int32" },
          "repaymentEvery": { "type": "integer", "format": "int32" },
          "repaymentFrequencyType": { "$ref": "#/components/schemas/EnumOptionData" },
          "repaymentFrequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "repaymentStartDateType": { "$ref": "#/components/schemas/EnumOptionData" },
          "repaymentStartDateTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "rescheduleStrategyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "shortName": { "type": "string" },
          "startDate": { "type": "string", "format": "date" },
          "status": { "type": "string" },
          "supportedInterestRefundTypes": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "supportedInterestRefundTypesOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "syncExpectedWithDisbursementDate": { "type": "boolean" },
          "transactionProcessingStrategyCode": { "type": "string" },
          "transactionProcessingStrategyName": { "type": "string" },
          "transactionProcessingStrategyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/TransactionProcessingStrategyData" }
          },
          "useBorrowerCycle": { "type": "boolean" },
          "valueConditionTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "writeOffReasonOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "writeOffReasonsToExpenseMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/AdvancedMappingToExpenseAccountData" }
          }
        }
      },
      "LoanProductFloatingRates": {
        "type": "object",
        "properties": {
          "defaultDifferentialLendingRate": { "type": "number" },
          "floatingInterestRateCalculationAllowed": { "type": "boolean" },
          "floatingRate": { "$ref": "#/components/schemas/FloatingRate" },
          "id": { "type": "integer", "format": "int64" },
          "interestRateDifferential": { "type": "number" },
          "loanProduct": { "$ref": "#/components/schemas/LoanProduct" },
          "maxDifferentialLendingRate": { "type": "number" },
          "minDifferentialLendingRate": { "type": "number" },
          "new": { "type": "boolean" }
        }
      },
      "LoanProductGuaranteeData": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "mandatoryGuarantee": { "type": "number" },
          "minimumGuaranteeFromGuarantor": { "type": "number" },
          "minimumGuaranteeFromOwnFunds": { "type": "number" },
          "productId": { "type": "integer", "format": "int64" }
        }
      },
      "LoanProductGuaranteeDetails": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "loanProduct": { "$ref": "#/components/schemas/LoanProduct" },
          "mandatoryGuarantee": { "type": "number" },
          "minimumGuaranteeFromGuarantor": { "type": "number" },
          "minimumGuaranteeFromOwnFunds": { "type": "number" },
          "new": { "type": "boolean" }
        }
      },
      "LoanProductInterestRecalculationData": {
        "type": "object",
        "properties": {
          "allowCompoundingOnEod": { "type": "boolean" },
          "arrearsBasedOnOriginalSchedule": { "type": "boolean" },
          "compoundingToBePostedAsTransaction": { "type": "boolean" },
          "disallowInterestCalculationOnPastDue": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "interestRecalculationCompoundingType": { "$ref": "#/components/schemas/EnumOptionData" },
          "isArrearsBasedOnOriginalSchedule": { "type": "boolean" },
          "isCompoundingToBePostedAsTransaction": { "type": "boolean" },
          "preClosureInterestCalculationStrategy": {
            "$ref": "#/components/schemas/EnumOptionData"
          },
          "productId": { "type": "integer", "format": "int64" },
          "recalculationCompoundingFrequencyInterval": { "type": "integer", "format": "int32" },
          "recalculationCompoundingFrequencyNthDay": {
            "$ref": "#/components/schemas/EnumOptionData"
          },
          "recalculationCompoundingFrequencyOnDay": { "type": "integer", "format": "int32" },
          "recalculationCompoundingFrequencyType": {
            "$ref": "#/components/schemas/EnumOptionData"
          },
          "recalculationCompoundingFrequencyWeekday": {
            "$ref": "#/components/schemas/EnumOptionData"
          },
          "recalculationRestFrequencyInterval": { "type": "integer", "format": "int32" },
          "recalculationRestFrequencyNthDay": { "$ref": "#/components/schemas/EnumOptionData" },
          "recalculationRestFrequencyOnDay": { "type": "integer", "format": "int32" },
          "recalculationRestFrequencyType": { "$ref": "#/components/schemas/EnumOptionData" },
          "recalculationRestFrequencyWeekday": { "$ref": "#/components/schemas/EnumOptionData" },
          "rescheduleStrategyType": { "$ref": "#/components/schemas/EnumOptionData" }
        }
      },
      "LoanProductInterestRecalculationDetails": {
        "type": "object",
        "properties": {
          "allowCompoundingOnEod": { "type": "boolean" },
          "arrearsBasedOnOriginalSchedule": { "type": "boolean" },
          "compoundingFrequencyNthDay": { "type": "integer", "format": "int32" },
          "compoundingFrequencyOnDay": { "type": "integer", "format": "int32" },
          "compoundingFrequencyType": {
            "type": "string",
            "enum": ["INVALID", "SAME_AS_REPAYMENT_PERIOD", "DAILY", "WEEKLY", "MONTHLY"]
          },
          "compoundingFrequencyWeekday": { "type": "integer", "format": "int32" },
          "compoundingInterval": { "type": "integer", "format": "int32" },
          "disallowInterestCalculationOnPastDue": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "interestRecalculationCompoundingMethod": { "type": "integer", "format": "int32" },
          "isCompoundingToBePostedAsTransaction": { "type": "boolean" },
          "loanProduct": { "$ref": "#/components/schemas/LoanProduct" },
          "new": { "type": "boolean" },
          "preCloseInterestCalculationStrategy": {
            "type": "string",
            "enum": ["NONE", "TILL_PRE_CLOSURE_DATE", "TILL_REST_FREQUENCY_DATE"]
          },
          "rescheduleStrategyMethod": { "type": "integer", "format": "int32" },
          "restFrequencyNthDay": { "type": "integer", "format": "int32" },
          "restFrequencyOnDay": { "type": "integer", "format": "int32" },
          "restFrequencyType": {
            "type": "string",
            "enum": ["INVALID", "SAME_AS_REPAYMENT_PERIOD", "DAILY", "WEEKLY", "MONTHLY"]
          },
          "restFrequencyWeekday": { "type": "integer", "format": "int32" },
          "restInterval": { "type": "integer", "format": "int32" }
        }
      },
      "LoanProductMinMaxConstraints": {
        "type": "object",
        "properties": {
          "maxNominalInterestRatePerPeriod": { "type": "number" },
          "maxNumberOfRepayments": { "type": "integer", "format": "int32" },
          "maxPrincipal": { "type": "number" },
          "minNominalInterestRatePerPeriod": { "type": "number" },
          "minNumberOfRepayments": { "type": "integer", "format": "int32" },
          "minPrincipal": { "type": "number" }
        }
      },
      "LoanProductPaymentAllocationRule": {
        "type": "object",
        "properties": {
          "allocationTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "PAST_DUE_PENALTY",
                "PAST_DUE_FEE",
                "PAST_DUE_PRINCIPAL",
                "PAST_DUE_INTEREST",
                "DUE_PENALTY",
                "DUE_FEE",
                "DUE_PRINCIPAL",
                "DUE_INTEREST",
                "IN_ADVANCE_PENALTY",
                "IN_ADVANCE_FEE",
                "IN_ADVANCE_PRINCIPAL",
                "IN_ADVANCE_INTEREST"
              ]
            }
          },
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "futureInstallmentAllocationRule": {
            "type": "string",
            "enum": [
              "NEXT_INSTALLMENT",
              "LAST_INSTALLMENT",
              "NEXT_LAST_INSTALLMENT",
              "REAMORTIZATION"
            ]
          },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "loanProduct": { "$ref": "#/components/schemas/LoanProduct" },
          "new": { "type": "boolean" },
          "transactionType": {
            "type": "string",
            "enum": [
              "DEFAULT",
              "REPAYMENT",
              "DOWN_PAYMENT",
              "MERCHANT_ISSUED_REFUND",
              "PAYOUT_REFUND",
              "GOODWILL_CREDIT",
              "CHARGE_REFUND",
              "CHARGE_ADJUSTMENT",
              "WAIVE_INTEREST",
              "CHARGE_PAYMENT",
              "REFUND_FOR_ACTIVE_LOAN",
              "INTEREST_PAYMENT_WAIVER",
              "INTEREST_REFUND",
              "CAPITALIZED_INCOME_ADJUSTMENT"
            ]
          }
        },
        "required": ["createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate"]
      },
      "LoanProductProvisioningEntryData": {
        "type": "object",
        "properties": {
          "amountreserved": { "type": "number" },
          "balance": { "type": "number" },
          "categoryId": { "type": "integer", "format": "int64" },
          "categoryName": { "type": "string" },
          "criteriaId": { "type": "integer", "format": "int64" },
          "currencyCode": { "type": "string" },
          "expenseAccount": { "type": "integer", "format": "int64" },
          "expenseAccountCode": { "type": "string" },
          "expenseAccountName": { "type": "string" },
          "historyId": { "type": "integer", "format": "int64" },
          "liabilityAccountCode": { "type": "string" },
          "liabilityAccountName": { "type": "string" },
          "liablityAccount": { "type": "integer", "format": "int64" },
          "officeId": { "type": "integer", "format": "int64" },
          "officeName": { "type": "string" },
          "overdueInDays": { "type": "integer", "format": "int64" },
          "percentage": { "type": "number" },
          "productId": { "type": "integer", "format": "int64" },
          "productName": { "type": "string" }
        }
      },
      "LoanProductRelatedDetail": {
        "type": "object",
        "properties": {
          "allowPartialPeriodInterestCalculation": { "type": "boolean" },
          "amortizationMethod": {
            "type": "string",
            "enum": ["EQUAL_PRINCIPAL", "EQUAL_INSTALLMENTS", "INVALID"]
          },
          "annualNominalInterestRate": { "type": "number" },
          "buyDownFeeCalculationType": { "type": "string", "enum": ["FLAT"] },
          "buyDownFeeIncomeType": { "type": "string", "enum": ["FEE", "INTEREST"] },
          "buyDownFeeStrategy": { "type": "string", "enum": ["EQUAL_AMORTIZATION"] },
          "capitalizedIncomeCalculationType": { "type": "string", "enum": ["FLAT"] },
          "capitalizedIncomeStrategy": { "type": "string", "enum": ["EQUAL_AMORTIZATION"] },
          "capitalizedIncomeType": { "type": "string", "enum": ["FEE", "INTEREST"] },
          "chargeOffBehaviour": {
            "type": "string",
            "enum": ["REGULAR", "ZERO_INTEREST", "ACCELERATE_MATURITY"]
          },
          "currency": { "$ref": "#/components/schemas/MonetaryCurrency" },
          "currencyData": { "$ref": "#/components/schemas/CurrencyData" },
          "daysInMonthType": { "type": "integer", "format": "int32" },
          "daysInYearCustomStrategy": {
            "type": "string",
            "enum": ["FULL_LEAP_YEAR", "FEB_29_PERIOD_ONLY"]
          },
          "daysInYearType": { "type": "integer", "format": "int32" },
          "disbursedAmountPercentageForDownPayment": { "type": "number" },
          "enableAccrualActivityPosting": { "type": "boolean" },
          "enableAutoRepaymentForDownPayment": { "type": "boolean" },
          "enableBuyDownFee": { "type": "boolean" },
          "enableDownPayment": { "type": "boolean" },
          "enableIncomeCapitalization": { "type": "boolean" },
          "equalAmortization": { "type": "boolean" },
          "fixedLength": { "type": "integer", "format": "int32" },
          "graceOnArrearsAgeing": { "type": "integer", "format": "int32" },
          "graceOnInterestCharged": { "type": "integer", "format": "int32" },
          "graceOnInterestPayment": { "type": "integer", "format": "int32" },
          "graceOnPrincipalPayment": { "type": "integer", "format": "int32" },
          "inArrearsTolerance": { "$ref": "#/components/schemas/Money" },
          "installmentAmountInMultiplesOf": { "type": "integer", "format": "int32" },
          "interestCalculationPeriodMethod": {
            "type": "string",
            "enum": ["DAILY", "SAME_AS_REPAYMENT_PERIOD", "INVALID"]
          },
          "interestMethod": { "type": "string", "enum": ["DECLINING_BALANCE", "FLAT", "INVALID"] },
          "interestPeriodFrequencyType": {
            "type": "string",
            "enum": ["DAYS", "WEEKS", "MONTHS", "YEARS", "WHOLE_TERM", "INVALID"]
          },
          "interestRecalculationEnabled": { "type": "boolean" },
          "interestRecognitionOnDisbursementDate": { "type": "boolean" },
          "loanScheduleProcessingType": { "type": "string", "enum": ["HORIZONTAL", "VERTICAL"] },
          "loanScheduleType": { "type": "string", "enum": ["CUMULATIVE", "PROGRESSIVE"] },
          "merchantBuyDownFee": { "type": "boolean" },
          "nominalInterestRatePerPeriod": { "type": "number" },
          "numberOfRepayments": { "type": "integer", "format": "int32" },
          "principal": { "$ref": "#/components/schemas/Money" },
          "recurringMoratoriumOnPrincipalPeriods": { "type": "integer", "format": "int32" },
          "repayEvery": { "type": "integer", "format": "int32" },
          "repaymentPeriodFrequencyType": {
            "type": "string",
            "enum": ["DAYS", "WEEKS", "MONTHS", "YEARS", "WHOLE_TERM", "INVALID"]
          },
          "supportedInterestRefundTypes": {
            "type": "array",
            "items": { "type": "string", "enum": ["MERCHANT_ISSUED_REFUND", "PAYOUT_REFUND"] }
          }
        }
      },
      "LoanProductTrancheDetails": {
        "type": "object",
        "properties": {
          "allowFullTermForTranche": { "type": "boolean" },
          "maxTrancheCount": { "type": "integer", "format": "int32" },
          "multiDisburseLoan": { "type": "boolean" },
          "outstandingLoanBalance": { "type": "number" }
        }
      },
      "LoanProductVariableInstallmentConfig": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "loanProduct": { "$ref": "#/components/schemas/LoanProduct" },
          "maximumGap": { "type": "integer", "format": "int32" },
          "minimumGap": { "type": "integer", "format": "int32" },
          "new": { "type": "boolean" }
        }
      },
      "LoanRepaymentScheduleInstallmentData": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "date": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64" },
          "installmentId": { "type": "integer", "format": "int32" }
        }
      },
      "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": {
          "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" }
        }
      },
      "LoanStatusEnumData": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean" },
          "closed": { "type": "boolean" },
          "closedObligationsMet": { "type": "boolean" },
          "closedRescheduled": { "type": "boolean" },
          "closedWrittenOff": { "type": "boolean" },
          "code": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "overpaid": { "type": "boolean" },
          "pendingApproval": { "type": "boolean" },
          "value": { "type": "string" },
          "waitingForDisbursal": { "type": "boolean" }
        }
      },
      "LoanTermTypeOptions": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "loanTermType.dueDate" },
          "id": { "type": "integer", "format": "int64", "example": 2 },
          "value": { "type": "string", "example": "dueDate" }
        }
      },
      "LoanTermVariationsData": {
        "type": "object",
        "properties": {
          "dateValue": { "type": "string", "format": "date" },
          "decimalValue": { "type": "number", "example": 100 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "isProcessed": { "type": "boolean", "example": true },
          "isSpecificToInstallment": { "type": "boolean", "example": true },
          "termType": { "$ref": "#/components/schemas/LoanTermTypeOptions" },
          "termVariationApplicableFrom": { "type": "string", "format": "date" }
        }
      },
      "LoanTotalAmountData": {
        "type": "object",
        "properties": {
          "totalCostOfLoan": { "type": "number" },
          "totalExpectedCostOfLoan": { "type": "number" },
          "totalExpectedRepayment": { "type": "number" },
          "totalOutstanding": { "type": "number" },
          "totalRepayment": { "type": "number" },
          "totalWaived": { "type": "number" },
          "totalWrittenOff": { "type": "number" }
        }
      },
      "LoanTransactionData": {
        "type": "object",
        "properties": {
          "accountId": { "type": "integer", "format": "int64" },
          "accountNumber": { "type": "string" },
          "amount": { "type": "number" },
          "availableDisbursementAmountWithOverApplied": { "type": "number" },
          "bankNumber": { "type": "integer", "format": "int32" },
          "calculatedStartDate": { "type": "string", "format": "date" },
          "chargeOffReasonOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "checkNumber": { "type": "integer", "format": "int32" },
          "classification": { "$ref": "#/components/schemas/CodeValueData" },
          "classificationOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "date": { "type": "string", "format": "date" },
          "dateFormat": { "type": "string" },
          "externalId": { "$ref": "#/components/schemas/ExternalId" },
          "externalLoanId": { "$ref": "#/components/schemas/ExternalId" },
          "feeChargesPortion": { "type": "number" },
          "fixedEmiAmount": { "type": "number" },
          "id": { "type": "integer", "format": "int64" },
          "interestPortion": { "type": "number" },
          "loanChargePaidByList": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanChargePaidByData" }
          },
          "loanId": { "type": "integer", "format": "int64" },
          "loanRepaymentScheduleInstallments": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanRepaymentScheduleInstallmentData" }
          },
          "locale": { "type": "string" },
          "manuallyReversed": { "type": "boolean" },
          "netDisbursalAmount": { "type": "number" },
          "nextInstallmentDueDate": { "type": "string", "format": "date" },
          "numberOfFutureInstallments": { "type": "integer", "format": "int32" },
          "numberOfPastInstallments": { "type": "integer", "format": "int32" },
          "numberOfRepayments": { "type": "integer", "format": "int32" },
          "officeId": { "type": "integer", "format": "int64" },
          "officeName": { "type": "string" },
          "outstandingLoanBalance": { "type": "number" },
          "overpaymentPortion": { "type": "number" },
          "paymentDetailData": { "$ref": "#/components/schemas/PaymentDetailData" },
          "paymentTypeId": { "type": "integer", "format": "int64" },
          "paymentTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PaymentTypeData" }
          },
          "penaltyChargesPortion": { "type": "number" },
          "periodFrequencyOptions": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": ["DAYS", "WEEKS", "MONTHS", "YEARS", "WHOLE_TERM", "INVALID"]
            }
          },
          "possibleNextRepaymentDate": { "type": "string", "format": "date" },
          "principalPortion": { "type": "number" },
          "reAgeInterestHandlingOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "reAgeReasonOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "reAmortizationInterestHandlingOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "reAmortizationReasonOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "receiptNumber": { "type": "integer", "format": "int32" },
          "reversalExternalId": { "$ref": "#/components/schemas/ExternalId" },
          "reversedOnDate": { "type": "string", "format": "date" },
          "routingCode": { "type": "integer", "format": "int32" },
          "rowIndex": { "type": "integer", "format": "int32" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "transactionAmount": { "type": "number" },
          "transactionDate": { "type": "string", "format": "date" },
          "transactionRelations": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanTransactionRelationData" }
          },
          "transactionType": { "type": "string" },
          "transfer": { "$ref": "#/components/schemas/AccountTransferData" },
          "type": { "$ref": "#/components/schemas/LoanTransactionEnumData" },
          "unrecognizedIncomePortion": { "type": "number" },
          "writeOffReasonOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          }
        }
      },
      "LoanTransactionEnumData": {
        "type": "object",
        "properties": {
          "accrual": { "type": "boolean" },
          "accrualActivity": { "type": "boolean" },
          "accrualAdjustment": { "type": "boolean" },
          "approveTransfer": { "type": "boolean" },
          "buyDownFee": { "type": "boolean" },
          "buyDownFeeAdjustment": { "type": "boolean" },
          "buyDownFeeAmortization": { "type": "boolean" },
          "buyDownFeeAmortizationAdjustment": { "type": "boolean" },
          "capitalizedIncome": { "type": "boolean" },
          "capitalizedIncomeAdjustment": { "type": "boolean" },
          "capitalizedIncomeAmortization": { "type": "boolean" },
          "capitalizedIncomeAmortizationAdjustment": { "type": "boolean" },
          "chargeAdjustment": { "type": "boolean" },
          "chargePayment": { "type": "boolean" },
          "chargeRefund": { "type": "boolean" },
          "chargeback": { "type": "boolean" },
          "chargeoff": { "type": "boolean" },
          "code": { "type": "string" },
          "contra": { "type": "boolean" },
          "contractTermination": { "type": "boolean" },
          "creditBalanceRefund": { "type": "boolean" },
          "disbursement": { "type": "boolean" },
          "downPayment": { "type": "boolean" },
          "goodwillCredit": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "initiateTransfer": { "type": "boolean" },
          "interestPaymentWaiver": { "type": "boolean" },
          "interestRefund": { "type": "boolean" },
          "merchantIssuedRefund": { "type": "boolean" },
          "payoutRefund": { "type": "boolean" },
          "reAge": { "type": "boolean" },
          "reAmortize": { "type": "boolean" },
          "recoveryRepayment": { "type": "boolean" },
          "refund": { "type": "boolean" },
          "refundForActiveLoans": { "type": "boolean" },
          "rejectTransfer": { "type": "boolean" },
          "repayment": { "type": "boolean" },
          "repaymentAtDisbursement": { "type": "boolean" },
          "repaymentType": { "type": "boolean" },
          "value": { "type": "string" },
          "waiveCharges": { "type": "boolean" },
          "waiveInterest": { "type": "boolean" },
          "withdrawTransfer": { "type": "boolean" },
          "writeOff": { "type": "boolean" }
        }
      },
      "LoanTransactionRelationData": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "fromLoanTransaction": { "type": "integer", "format": "int64" },
          "paymentType": { "type": "string" },
          "relationType": {
            "type": "string",
            "enum": [
              "INVALID",
              "CHARGEBACK",
              "CHARGE_ADJUSTMENT",
              "REPLAYED",
              "RELATED",
              "ADJUSTMENT"
            ]
          },
          "toLoanCharge": { "type": "integer", "format": "int64" },
          "toLoanTransaction": { "type": "integer", "format": "int64" }
        }
      },
      "LoansLoanIdCollateralsRequest": {
        "type": "object",
        "properties": { "collateralTypeId": { "type": "integer", "format": "int64" } }
      },
      "LoansLoandIdCollateralsCollateralIdRequest": {
        "type": "object",
        "properties": { "description": { "type": "string" } }
      },
      "LocalTime": {
        "type": "object",
        "properties": {
          "hour": { "type": "integer", "format": "int32" },
          "minute": { "type": "integer", "format": "int32" },
          "nano": { "type": "integer", "format": "int32" },
          "second": { "type": "integer", "format": "int32" }
        }
      },
      "LockRequest": {
        "type": "object",
        "properties": {
          "cobBusinessDate": { "type": "string", "format": "date" },
          "error": { "type": "string" },
          "nullCobBusinessDate": { "type": "boolean" }
        }
      },
      "LookupTableData": {
        "type": "object",
        "properties": {
          "description": { "type": "string" },
          "entries": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LookupTableEntry" }
          },
          "key": { "type": "string" }
        }
      },
      "LookupTableEntry": {
        "type": "object",
        "properties": {
          "score": { "type": "number", "format": "double" },
          "valueFrom": { "type": "integer", "format": "int32" },
          "valueTo": { "type": "integer", "format": "int32" }
        }
      },
      "MarkWorkingCapitalLoanAsFraudRequest": {
        "type": "object",
        "properties": {
          "fraud": {
            "type": "boolean",
            "description": "Whether the loan should be flagged as fraudulent",
            "example": true
          }
        },
        "required": ["fraud"]
      },
      "MediaType": {
        "type": "object",
        "properties": {
          "parameters": { "type": "object", "additionalProperties": { "type": "string" } },
          "subtype": { "type": "string" },
          "type": { "type": "string" },
          "wildcardSubtype": { "type": "boolean" },
          "wildcardType": { "type": "boolean" }
        }
      },
      "MeetingAttendanceData": {
        "type": "object",
        "properties": {
          "attendanceType": { "$ref": "#/components/schemas/EnumOptionData" },
          "clientId": { "type": "integer", "format": "int64" },
          "clientName": { "type": "string" },
          "id": { "type": "integer", "format": "int64" }
        },
        "required": ["attendanceType", "clientId"]
      },
      "MeetingAttendanceUpdateRequest": {
        "type": "object",
        "properties": {
          "attendanceType": { "type": "integer", "format": "int32" },
          "id": { "type": "integer", "format": "int64" }
        }
      },
      "MeetingAttendanceUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "entityId": { "type": "integer", "format": "int64" },
          "groupId": { "type": "integer", "format": "int64" }
        }
      },
      "MeetingCreateRequest": {
        "type": "object",
        "properties": {
          "calendarId": { "type": "integer", "format": "int64" },
          "clientsAttendance": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/MeetingAttendanceData" }
          },
          "dateFormat": { "type": "string" },
          "locale": { "type": "string" },
          "meetingDate": { "type": "string" }
        },
        "required": ["calendarId", "dateFormat", "locale", "meetingDate"]
      },
      "MeetingCreateResponse": {
        "type": "object",
        "properties": {
          "entityId": { "type": "integer", "format": "int64" },
          "groupId": { "type": "integer", "format": "int64" }
        }
      },
      "MeetingData": {
        "type": "object",
        "properties": {
          "attendanceTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "calendarData": { "$ref": "#/components/schemas/CalendarData" },
          "clients": { "type": "array", "items": { "$ref": "#/components/schemas/ClientData" } },
          "clientsAttendance": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/MeetingAttendanceData" }
          },
          "id": { "type": "integer", "format": "int64" },
          "meetingDate": { "type": "string", "format": "date" }
        }
      },
      "MeetingDeleteResponse": {
        "type": "object",
        "properties": { "entityId": { "type": "integer", "format": "int64" } }
      },
      "MeetingUpdateRequest": {
        "type": "object",
        "properties": {
          "calendarId": { "type": "integer", "format": "int64" },
          "clientsAttendance": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/MeetingAttendanceData" }
          },
          "dateFormat": { "type": "string" },
          "locale": { "type": "string" },
          "meetingDate": { "type": "string" }
        },
        "required": ["calendarId", "dateFormat", "locale", "meetingDate"]
      },
      "MeetingUpdateResponse": {
        "type": "object",
        "properties": {
          "entityId": { "type": "integer", "format": "int64" },
          "groupId": { "type": "integer", "format": "int64" }
        }
      },
      "MessageBodyWorkers": { "type": "object" },
      "MinimumPaymentPeriodAndRule": {
        "type": "object",
        "properties": {
          "frequency": { "type": "integer", "format": "int32" },
          "frequencyType": { "type": "string" },
          "minimumPayment": { "type": "number" },
          "minimumPaymentType": { "type": "string" }
        }
      },
      "MonetaryCurrency": {
        "type": "object",
        "properties": {
          "code": { "type": "string" },
          "digitsAfterDecimal": { "type": "integer", "format": "int32" },
          "inMultiplesOf": { "type": "integer", "format": "int32" }
        }
      },
      "Money": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "amountDefaultedToNullIfZero": { "type": "number" },
          "currency": { "$ref": "#/components/schemas/MonetaryCurrency" },
          "currencyCode": { "type": "string" },
          "currencyData": { "$ref": "#/components/schemas/CurrencyData" },
          "greaterThanZero": { "type": "boolean" },
          "inMultiplesOf": { "type": "integer", "format": "int32" },
          "lessThanZero": { "type": "boolean" },
          "mc": {
            "type": "object",
            "properties": {
              "precision": { "type": "integer", "format": "int32" },
              "roundingMode": {
                "type": "string",
                "enum": [
                  "UP",
                  "DOWN",
                  "CEILING",
                  "FLOOR",
                  "HALF_UP",
                  "HALF_DOWN",
                  "HALF_EVEN",
                  "UNNECESSARY"
                ]
              }
            }
          },
          "zero": { "type": "boolean" }
        }
      },
      "MoneyData": {
        "type": "object",
        "properties": { "amount": { "type": "number" }, "currency": { "type": "string" } },
        "required": ["amount", "currency"]
      },
      "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" }
        }
      },
      "NoteCreateRequest": {
        "type": "object",
        "properties": { "note": { "type": "string", "maxLength": 65535, "minLength": 0 } },
        "required": ["note"]
      },
      "NoteCreateResponse": {
        "type": "object",
        "properties": {
          "entityId": { "type": "integer", "format": "int64" },
          "officeId": { "type": "integer", "format": "int64" },
          "resourceId": { "type": "integer", "format": "int64" }
        }
      },
      "NoteData": {
        "type": "object",
        "properties": {
          "clientId": { "type": "integer", "format": "int64" },
          "createdById": { "type": "integer", "format": "int64" },
          "createdByUsername": { "type": "string" },
          "createdOn": { "type": "string", "format": "date-time" },
          "depositAccountId": { "type": "integer", "format": "int64" },
          "groupId": { "type": "integer", "format": "int64" },
          "id": { "type": "integer", "format": "int64" },
          "loanId": { "type": "integer", "format": "int64" },
          "loanTransactionId": { "type": "integer", "format": "int64" },
          "note": { "type": "string" },
          "noteType": { "$ref": "#/components/schemas/EnumOptionData" },
          "savingAccountId": { "type": "integer", "format": "int64" },
          "updatedById": { "type": "integer", "format": "int64" },
          "updatedByUsername": { "type": "string" },
          "updatedOn": { "type": "string", "format": "date-time" }
        }
      },
      "NoteDeleteResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "NoteUpdateRequest": {
        "type": "object",
        "properties": { "note": { "type": "string", "maxLength": 65535, "minLength": 0 } },
        "required": ["note"]
      },
      "NoteUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "officeId": { "type": "integer", "format": "int64" },
          "resourceId": { "type": "integer", "format": "int64" }
        }
      },
      "Office": {
        "type": "object",
        "properties": {
          "children": { "type": "array", "items": { "$ref": "#/components/schemas/Office" } },
          "externalId": { "$ref": "#/components/schemas/ExternalId" },
          "hierarchy": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "openingDate": { "type": "string", "format": "date" },
          "openingLocalDate": { "type": "string", "format": "date" },
          "parent": { "$ref": "#/components/schemas/Office" }
        }
      },
      "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" }
        }
      },
      "OldestCOBProcessedLoanDTO": {
        "type": "object",
        "properties": {
          "cobBusinessDate": { "type": "string", "format": "date" },
          "cobProcessedDate": { "type": "string", "format": "date" },
          "loanIds": { "type": "array", "items": { "type": "integer", "format": "int64" } }
        }
      },
      "PageAuditData": {
        "type": "object",
        "properties": {
          "pageItems": { "type": "array", "items": { "$ref": "#/components/schemas/AuditData" } },
          "totalFilteredRecords": { "type": "integer", "format": "int32" }
        }
      },
      "PageCashierTransactionData": {
        "type": "object",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/CashierTransactionData" }
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32" }
        }
      },
      "PageCenterData": {
        "type": "object",
        "properties": {
          "pageItems": { "type": "array", "items": { "$ref": "#/components/schemas/CenterData" } },
          "totalFilteredRecords": { "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" }
        }
      },
      "PageDepositAccountData": {
        "type": "object",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DepositAccountData" }
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32" }
        }
      },
      "PageExternalTransferData": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ExternalTransferData" }
          },
          "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" }
        }
      },
      "PageExternalTransferLoanProductAttributesData": {
        "type": "object",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ExternalTransferLoanProductAttributesData" }
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32" }
        }
      },
      "PageGetEntityDatatableChecksResponse": {
        "type": "object",
        "description": "PageGetEntityDatatableChecksResponse",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetEntityDatatableChecksResponse" }
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "PageGroupGeneralData": {
        "type": "object",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GroupGeneralData" }
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32" }
        }
      },
      "PageJournalEntryData": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/JournalEntryData" }
          },
          "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" }
        }
      },
      "PageLoanProductProvisioningEntryData": {
        "type": "object",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductProvisioningEntryData" }
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32" }
        }
      },
      "PageProvisioningEntryData": {
        "type": "object",
        "properties": {
          "pageItems": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ProvisioningEntryData" }
          },
          "totalFilteredRecords": { "type": "integer", "format": "int32" }
        }
      },
      "PageSmsData": {
        "type": "object",
        "properties": {
          "pageItems": { "type": "array", "items": { "$ref": "#/components/schemas/SmsData" } },
          "totalFilteredRecords": { "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" }
        }
      },
      "PagedLocalRequestAdvancedQueryData": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string" },
          "dateTimeFormat": { "type": "string" },
          "locale": { "type": "string" },
          "localeObject": {
            "type": "object",
            "properties": {
              "country": { "type": "string" },
              "displayCountry": { "type": "string" },
              "displayLanguage": { "type": "string" },
              "displayName": { "type": "string" },
              "displayScript": { "type": "string" },
              "displayVariant": { "type": "string" },
              "extensionKeys": {
                "type": "array",
                "items": { "type": "string" },
                "uniqueItems": true
              },
              "iso3Country": { "type": "string" },
              "iso3Language": { "type": "string" },
              "language": { "type": "string" },
              "script": { "type": "string" },
              "unicodeLocaleAttributes": {
                "type": "array",
                "items": { "type": "string" },
                "uniqueItems": true
              },
              "unicodeLocaleKeys": {
                "type": "array",
                "items": { "type": "string" },
                "uniqueItems": true
              },
              "variant": { "type": "string" }
            }
          },
          "page": { "type": "integer", "format": "int32" },
          "request": { "$ref": "#/components/schemas/AdvancedQueryData" },
          "size": { "type": "integer", "format": "int32" },
          "sorts": { "type": "array", "items": { "$ref": "#/components/schemas/SortOrder" } }
        }
      },
      "PagedLocalRequestAdvancedQueryRequest": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string" },
          "dateTimeFormat": { "type": "string" },
          "locale": { "type": "string" },
          "localeObject": {
            "type": "object",
            "properties": {
              "country": { "type": "string" },
              "displayCountry": { "type": "string" },
              "displayLanguage": { "type": "string" },
              "displayName": { "type": "string" },
              "displayScript": { "type": "string" },
              "displayVariant": { "type": "string" },
              "extensionKeys": {
                "type": "array",
                "items": { "type": "string" },
                "uniqueItems": true
              },
              "iso3Country": { "type": "string" },
              "iso3Language": { "type": "string" },
              "language": { "type": "string" },
              "script": { "type": "string" },
              "unicodeLocaleAttributes": {
                "type": "array",
                "items": { "type": "string" },
                "uniqueItems": true
              },
              "unicodeLocaleKeys": {
                "type": "array",
                "items": { "type": "string" },
                "uniqueItems": true
              },
              "variant": { "type": "string" }
            }
          },
          "page": { "type": "integer", "format": "int32" },
          "request": { "$ref": "#/components/schemas/AdvancedQueryRequest" },
          "size": { "type": "integer", "format": "int32" },
          "sorts": { "type": "array", "items": { "$ref": "#/components/schemas/SortOrder" } }
        }
      },
      "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" } }
        }
      },
      "PagedRequestExternalAssetOwnerSearchRequest": {
        "type": "object",
        "properties": {
          "page": { "type": "integer", "format": "int32" },
          "request": { "$ref": "#/components/schemas/ExternalAssetOwnerSearchRequest" },
          "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" }
        }
      },
      "PaymentType": {
        "type": "object",
        "properties": {
          "codeName": { "type": "string" },
          "description": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "isCashPayment": { "type": "boolean" },
          "isSystemDefined": { "type": "boolean" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "position": { "type": "integer", "format": "int64" }
        }
      },
      "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" } }
      },
      "PaymentTypeToGLAccountMapper": {
        "type": "object",
        "properties": {
          "fundSourceAccount": { "$ref": "#/components/schemas/GLAccountData" },
          "paymentType": { "$ref": "#/components/schemas/PaymentTypeData" }
        }
      },
      "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" } }
      },
      "Permission": {
        "type": "object",
        "properties": {
          "code": { "type": "string" },
          "grouping": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "new": { "type": "boolean" }
        }
      },
      "PortfolioAccountData": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "string" },
          "amtForTransfer": { "type": "number" },
          "clientId": { "type": "integer", "format": "int64" },
          "clientName": { "type": "string" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "currencyCodeFromCurrency": { "type": "string" },
          "externalId": { "type": "string" },
          "fieldOfficerId": { "type": "integer", "format": "int64" },
          "fieldOfficerName": { "type": "string" },
          "groupId": { "type": "integer", "format": "int64" },
          "groupName": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "productId": { "type": "integer", "format": "int64" },
          "productName": { "type": "string" }
        }
      },
      "PostAccountNumberFormatsRequest": {
        "type": "object",
        "description": "PostAccountNumberFormatsRequest",
        "properties": {
          "accountType": { "type": "integer", "format": "int64", "example": 1 },
          "prefixType": { "type": "integer", "format": "int64", "example": 101 }
        }
      },
      "PostAccountNumberFormatsResponse": {
        "type": "object",
        "description": "PostAccountNumberFormatsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 4 } }
      },
      "PostAccountTransfersRefundByTransferResponse": {
        "type": "object",
        "description": "PostAccountTransfersRefundByTransferResponse",
        "properties": {
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostAccountTransfersResponse": {
        "type": "object",
        "description": "PostAccountTransfersResponse",
        "properties": {
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostAccountingRulesResponse": {
        "type": "object",
        "description": "PostAccountingRulesResponse",
        "properties": {
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostAccountsRequestedShares": {
        "type": "object",
        "properties": { "id": { "type": "integer", "format": "int64", "example": 35 } }
      },
      "PostAccountsTypeAccountIdRequest": {
        "type": "object",
        "description": "PostAccountsTypeAccountIdRequest",
        "properties": {
          "requestedShares": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostAccountsRequestedShares" },
            "uniqueItems": true
          }
        }
      },
      "PostAccountsTypeAccountIdResponse": {
        "type": "object",
        "description": "PostAccountsTypeAccountIdResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 5 } }
      },
      "PostAccountsTypeResponse": {
        "type": "object",
        "description": "PostAccountsTypeResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostAddAndDeleteDisbursementDetailRequest": {
        "type": "object",
        "description": "PostAddAndDeleteDisbursementDetailRequest",
        "properties": {
          "approvedLoanAmount": { "type": "number", "format": "double", "example": 1000 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "disbursementData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DisbursementDetail" }
          },
          "locale": { "type": "string", "example": "de_DE" }
        }
      },
      "PostAdhocQuerySearchRequest": {
        "type": "object",
        "description": "PostAdhocQuerySearchRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "includeOutStandingAmountPercentage": { "type": "boolean", "example": true },
          "includeOutstandingAmount": { "type": "boolean", "example": true },
          "loanDateOption": { "type": "string", "example": "approvalDate" },
          "loanFromDate": { "type": "string", "format": "date", "example": "2013-01-01" },
          "loanToDate": { "type": "string", "format": "date", "example": "2014-01-27" },
          "locale": { "type": "string", "example": "en" },
          "maxOutstandingAmount": { "type": "integer", "format": "int64", "example": 10000 },
          "minOutstandingAmount": { "type": "integer", "format": "int64", "example": 100 },
          "outStandingAmountPercentage": { "type": "integer", "format": "int64", "example": 80 },
          "outStandingAmountPercentageCondition": { "type": "string", "example": "<=" },
          "outstandingAmountCondition": { "type": "string", "example": "between" }
        }
      },
      "PostAllowAttributeOverrides": {
        "type": "object",
        "description": "PostAllowAttributeOverrides",
        "properties": {
          "breach": { "type": "boolean", "example": true },
          "delinquencyBucketClassification": { "type": "boolean", "example": true },
          "discountDefault": { "type": "boolean", "example": true },
          "periodPaymentFrequency": { "type": "boolean", "example": true },
          "periodPaymentFrequencyType": { "type": "boolean", "example": true }
        }
      },
      "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" }
        }
      },
      "PostCentersCenterIdChanges": {
        "type": "object",
        "properties": {
          "groupMembers": {
            "type": "array",
            "description": "Ids of the groups associated or disassociated by the command",
            "items": {
              "type": "string",
              "description": "Ids of the groups associated or disassociated by the command"
            }
          }
        }
      },
      "PostCentersCenterIdRequest": {
        "type": "object",
        "description": "PostCentersCenterIdRequest",
        "properties": {
          "closureDate": { "type": "string", "example": "05 May 2014" },
          "closureReasonId": { "type": "integer", "format": "int64", "example": 32 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "groupMembers": {
            "type": "array",
            "description": "List of group ids to associate with or disassociate from the center",
            "items": {
              "type": "integer",
              "format": "int64",
              "description": "List of group ids to associate with or disassociate from the center"
            }
          },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostCentersCenterIdResponse": {
        "type": "object",
        "description": "PostCentersCenterIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PostCentersCenterIdChanges" },
          "groupId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostCentersRequest": {
        "type": "object",
        "description": "PostCentersRequest",
        "properties": {
          "activationDate": { "type": "string", "example": "04 March 2011" },
          "active": { "type": "boolean", "example": false },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "externalId": { "type": "string", "example": "externalId1" },
          "groupMembers": {
            "type": "array",
            "description": "List of group ids to associate at creation",
            "items": {
              "type": "integer",
              "format": "int64",
              "description": "List of group ids to associate at creation"
            }
          },
          "locale": { "type": "string", "example": "en" },
          "name": { "type": "string", "example": "First Center (No groups)" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "staffId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostCentersResponse": {
        "type": "object",
        "description": "PostCentersResponse",
        "properties": {
          "groupId": { "type": "integer", "format": "int64", "example": 8 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 8 }
        }
      },
      "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 } }
      },
      "PostClientsClientIdChanges": {
        "type": "object",
        "properties": { "staffId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostClientsClientIdChargesChargeIdRequest": {
        "type": "object",
        "description": "PostClientsClientIdChargesChargeIdRequest",
        "properties": {
          "amount": { "type": "integer", "format": "int32", "example": 200 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "externalId": { "type": "string", "example": "3e7791ce-aa10-11ec-b909-0242ac120002" },
          "locale": { "type": "string", "example": "en" },
          "transactionDate": { "type": "string", "example": "01 September 2015" }
        }
      },
      "PostClientsClientIdChargesChargeIdResponse": {
        "type": "object",
        "description": "PostClientsClientIdChargesChargeIdResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 189 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 157 },
          "transactionId": { "type": "integer", "format": "int64", "example": 221 }
        }
      },
      "PostClientsClientIdChargesRequest": {
        "type": "object",
        "description": "PostClientsClientIdChargesRequest",
        "properties": {
          "amount": { "type": "number", "example": 100 },
          "chargeId": { "type": "integer", "format": "int64", "example": 226 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "dueDate": { "type": "string", "example": "01 September 2015" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostClientsClientIdChargesResponse": {
        "type": "object",
        "description": "PostClientsClientIdChargesResponse",
        "properties": {
          "chargeId": { "type": "integer", "format": "int64", "example": 189 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 164 }
        }
      },
      "PostClientsClientIdIdentifiersRequest": {
        "type": "object",
        "description": "PostClientsClientIdIdentifiersRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "description": { "type": "string", "example": "Document has been verified" },
          "documentKey": { "type": "string", "example": "KA-54677" },
          "documentTypeId": { "type": "integer", "format": "int64", "example": 1 },
          "expiryDate": { "type": "string", "example": "01 January 2034" },
          "issuanceDate": { "type": "string", "example": "01 January 2024" },
          "locale": { "type": "string", "example": "en" },
          "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 }
        }
      },
      "PostClientsClientIdRequest": {
        "type": "object",
        "description": "PostClientsClientIdRequest",
        "properties": {
          "activationDate": { "type": "string", "example": "03 August 2021" },
          "closureDate": { "type": "string", "example": "03 August 2021" },
          "closureReasonId": { "type": "integer", "format": "int64", "example": 1 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "reactivationDate": { "type": "string", "example": "03 August 2021" },
          "rejectionDate": { "type": "string", "example": "03 August 2021" },
          "rejectionReasonId": { "type": "integer", "format": "int64", "example": 1 },
          "reopenedDate": { "type": "string", "example": "03 August 2021" },
          "staffId": { "type": "integer", "format": "int64", "example": 1 },
          "withdrawalDate": { "type": "string", "example": "03 August 2021" },
          "withdrawalReasonId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostClientsClientIdResponse": {
        "type": "object",
        "description": "PostClientsClientIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PostClientsClientIdChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 2 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceExternalId": { "type": "string", "example": "123-456" },
          "resourceId": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "PostClientsClientIdTransactionsTransactionIdResponse": {
        "type": "object",
        "description": "PostClientsClientIdTransactionsTransactionIdResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 189 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 222 }
        }
      },
      "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 }
        }
      },
      "PostCodeValueDataResponse": {
        "type": "object",
        "description": "PostCodeValueDataResponse",
        "properties": {
          "resourceId": { "type": "integer", "format": "int64", "example": 4 },
          "subResourceId": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "PostCodeValuesDataRequest": {
        "type": "object",
        "description": "PostCodeValuesDataRequest",
        "properties": {
          "description": { "type": "string", "example": "Passport information" },
          "isActive": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Passport" },
          "position": { "type": "integer", "format": "int32", "example": 0 }
        }
      },
      "PostCodesRequest": {
        "type": "object",
        "description": "PostCodesRequest",
        "properties": { "name": { "type": "string", "example": "MyNewCode" } }
      },
      "PostCodesResponse": {
        "type": "object",
        "description": "PostCodesResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 4 } }
      },
      "PostCollectionSheetChanges": {
        "type": "object",
        "properties": {
          "SavingsTransactions": {
            "type": "array",
            "example": [],
            "items": { "type": "integer", "format": "int32" }
          },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "loanTransactions": {
            "type": "array",
            "example": [15],
            "items": { "type": "integer", "format": "int32" }
          },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostCollectionSheetResponse": {
        "type": "object",
        "description": "PostCollectionSheetResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PostCollectionSheetChanges" },
          "groupId": { "type": "integer", "format": "int64", "example": 10 },
          "resourceId": { "type": "integer", "format": "int64", "example": 10 }
        }
      },
      "PostColumnHeaderData": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Used in Code Value fields. Column name becomes: code_cd_name. Mandatory if using type Dropdown, otherwise an error is returned.",
            "example": "Gender"
          },
          "indexed": { "type": "boolean", "description": "Defaults to false", "example": true },
          "length": {
            "type": "integer",
            "format": "int64",
            "description": "Length of the text field. Mandatory if type String is used, otherwise an error is returned.",
            "example": 1653
          },
          "mandatory": { "type": "boolean", "description": "Defaults to false", "example": true },
          "name": { "type": "string", "example": "DOB" },
          "type": {
            "type": "string",
            "description": "Any of them: Boolean | Date | DateTime | Decimal | Dropdown | Number | String | Text",
            "example": "String"
          },
          "unique": { "type": "boolean", "description": "Defaults to false", "example": true }
        },
        "required": ["name", "type"]
      },
      "PostCreateRescheduleLoansRequest": {
        "type": "object",
        "description": "PostCreateRescheduleLoansRequest",
        "properties": {
          "adjustedDueDate": { "type": "string", "example": "20 September 2011" },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "emi": { "type": "number", "example": 100 },
          "endDate": { "type": "string", "example": "20 September 2011" },
          "extraTerms": { "type": "integer", "format": "int32", "example": 1 },
          "graceOnInterest": { "type": "integer", "format": "int32", "example": 1 },
          "graceOnPrincipal": { "type": "integer", "format": "int32", "example": 1 },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "locale": { "type": "string", "example": "en" },
          "newInterestRate": { "type": "number", "example": 1.1 },
          "recalculateInterest": { "type": "boolean", "example": true },
          "rescheduleFromDate": { "type": "string", "example": "20 September 2011" },
          "rescheduleReasonComment": { "type": "string", "example": "comment" },
          "rescheduleReasonId": { "type": "integer", "format": "int64", "example": 1 },
          "submittedOnDate": { "type": "string", "example": "20 September 2011" }
        }
      },
      "PostCreateRescheduleLoansResponse": {
        "type": "object",
        "description": "PostCreateRescheduleLoansResponse ",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 12 },
          "loanId": { "type": "integer", "format": "int64", "example": 18 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 12 }
        }
      },
      "PostDataTablesAppTableIdResponse": {
        "type": "object",
        "description": "PostDataTablesAppTableIdResponse ",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostDataTablesRegisterDatatableAppTable": {
        "type": "object",
        "description": "PostDataTablesRegisterDatatableAppTable"
      },
      "PostDataTablesRequest": {
        "type": "object",
        "description": "PostDataTablesRequest",
        "properties": {
          "apptableName": { "type": "string", "example": "m_client" },
          "columns": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostColumnHeaderData" }
          },
          "datatableName": { "type": "string", "example": "extra_client_details" },
          "entitySubType": { "type": "string", "example": "abc" },
          "multiRow": {
            "type": "boolean",
            "description": "Allows to create multiple entries in the Data Table. Optional, defaults to false. If this property is not provided Data Table will allow only one entry.",
            "example": true
          }
        },
        "required": ["apptableName", "columns", "datatableName"]
      },
      "PostDataTablesResponse": {
        "type": "object",
        "description": "PostDataTablesResponse",
        "properties": {
          "resourceIdentifier": { "type": "string", "example": "extra_client_details" }
        }
      },
      "PostDelinquencyBucketResponse": {
        "type": "object",
        "description": "PostDelinquencyBucketResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostDelinquencyRangeResponse": {
        "type": "object",
        "description": "PostDelinquencyRangeResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostEntityDatatableChecksTemplateRequest": {
        "type": "object",
        "description": "PostEntityDatatableChecksTemplateRequest",
        "properties": {
          "datatableName": { "type": "string", "example": "Additional Details" },
          "entity": { "type": "string", "example": "m_loan" },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "status": { "type": "integer", "format": "int64", "example": 100 }
        }
      },
      "PostEntityDatatableChecksTemplateResponse": {
        "type": "object",
        "description": "PostEntityDatatableChecksTemplateResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostExternalAssetOwnerLoanProductAttributeRequest": {
        "type": "object",
        "description": "PostExternalAssetOwnerLoanProductAttributeRequest",
        "properties": {
          "attributeKey": {
            "type": "string",
            "description": "Attribute key, one of the keys returned by the loan product attributes template endpoint, e.g. SETTLEMENT_MODEL or EXCLUDED_TRANSACTION_TYPES.",
            "example": "SETTLEMENT_MODEL"
          },
          "attributeValue": {
            "type": "string",
            "description": "Attribute value. For multi value attributes such as EXCLUDED_TRANSACTION_TYPES this is a comma separated list, e.g. BUY_DOWN_FEE,BUY_DOWN_FEE_ADJUSTMENT.",
            "example": "DELAYED_SETTLEMENT"
          }
        }
      },
      "PostExternalAssetOwnerRequest": {
        "type": "object",
        "description": "PostExternalAssetOwnerRequest",
        "properties": {
          "ownerExternalId": {
            "type": "string",
            "description": "External Asset Owner External Id",
            "example": "36efeb06-d835-48a1-99eb-09bd1d348c1e"
          }
        }
      },
      "PostExternalAssetOwnerResponse": {
        "type": "object",
        "description": "PostExternalAssetOwnerResponse",
        "properties": {
          "resourceId": {
            "type": "integer",
            "format": "int64",
            "description": "External Asset Owner Id",
            "example": 1
          }
        }
      },
      "PostFinancialActivityAccountsRequest": {
        "type": "object",
        "description": "PostFinancialActivityAccountsRequest",
        "properties": {
          "financialActivityId": { "type": "integer", "format": "int64", "example": 200 },
          "glAccountId": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "PostFinancialActivityAccountsResponse": {
        "type": "object",
        "description": "PostFinancialActivityAccountsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostFixedDepositAccountsAccountIdRequest": {
        "type": "object",
        "description": "PostFixedDepositAccountsAccountIdRequest"
      },
      "PostFixedDepositAccountsAccountIdResponse": {
        "type": "object",
        "description": "PostFixedDepositAccountsAccountIdResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostFixedDepositAccountsFixedDepositAccountIdTransactionsRequest": {
        "type": "object",
        "description": "PostFixedDepositAccountsFixedDepositAccountIdTransactionsRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "note": { "type": "string", "example": "payment type note" },
          "transactionAmount": { "type": "number", "format": "double", "example": 100 },
          "transactionDate": { "type": "string", "example": "01 January 2014" }
        }
      },
      "PostFixedDepositAccountsFixedDepositAccountIdTransactionsTransactionIdChanges": {
        "type": "object",
        "description": "PostFixedDepositAccountsFixedDepositAccountIdTransactionsTransactionIdChanges",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "transactionAmount": { "type": "number", "format": "double", "example": 100 },
          "transactionDate": { "type": "string", "example": "01 January 2014" }
        }
      },
      "PostFixedDepositAccountsFixedDepositAccountIdTransactionsTransactionIdResponse": {
        "type": "object",
        "description": "PostFixedDepositAccountsFixedDepositAccountIdTransactionsTransactionIdResponse",
        "properties": {
          "changes": {
            "$ref": "#/components/schemas/PostFixedDepositAccountsFixedDepositAccountIdTransactionsTransactionIdChanges"
          },
          "clientId": { "type": "integer", "format": "int64", "example": 2 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 48 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostFixedDepositAccountsRequest": {
        "type": "object",
        "description": "PostFixedDepositAccountsRequest",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "depositAmount": { "type": "number", "format": "float", "example": 5000 },
          "depositPeriod": { "type": "integer", "format": "int32", "example": 6 },
          "depositPeriodFrequencyId": { "type": "integer", "format": "int64", "example": 2 },
          "locale": { "type": "string", "example": "en" },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "submittedOnDate": { "type": "string", "example": "01 March 2014" }
        }
      },
      "PostFixedDepositAccountsResponse": {
        "type": "object",
        "description": "PostFixedDepositAccountsResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostFixedDepositProductsChartSlabs": {
        "type": "object",
        "properties": {
          "annualInterestRate": { "type": "number", "format": "double", "example": 4.5 },
          "description": { "type": "string", "example": "from 0 to 90 days" },
          "fromPeriod": { "type": "integer", "format": "int32", "example": 0 },
          "periodType": { "type": "integer", "format": "int32", "example": 1 },
          "toPeriod": { "type": "integer", "format": "int32", "example": 90 }
        }
      },
      "PostFixedDepositProductsCharts": {
        "type": "object",
        "properties": {
          "chartSlabs": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostFixedDepositProductsChartSlabs" },
            "uniqueItems": true
          },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "fromDate": { "type": "string", "example": "01 Jan 2014" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostFixedDepositProductsRequest": {
        "type": "object",
        "description": "PostFixedDepositProductsRequest",
        "properties": {
          "accountingRule": { "type": "integer", "format": "int32", "example": 1 },
          "charts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostFixedDepositProductsCharts" },
            "uniqueItems": true
          },
          "currencyCode": { "type": "string", "example": "USD" },
          "description": {
            "type": "string",
            "example": "Daily compounding using Daily Balance, 5% per year, 365 days in year"
          },
          "digitsAfterDecimal": { "type": "integer", "format": "int32", "example": 2 },
          "inMultiplesOf": { "type": "integer", "format": "int32", "example": 0 },
          "interestCalculationDaysInYearType": {
            "type": "integer",
            "format": "int32",
            "example": 365
          },
          "interestCalculationType": { "type": "integer", "format": "int32", "example": 1 },
          "interestCompoundingPeriodType": { "type": "integer", "format": "int32", "example": 1 },
          "interestPostingPeriodType": { "type": "integer", "format": "int32", "example": 4 },
          "locale": { "type": "string", "example": "en" },
          "maxDepositTerm": { "type": "integer", "format": "int32", "example": 5 },
          "maxDepositTermTypeId": { "type": "integer", "format": "int32", "example": 3 },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 1 },
          "minDepositTermTypeId": { "type": "integer", "format": "int32", "example": 1 },
          "name": { "type": "string", "example": "Fixed deposit product" },
          "preClosurePenalApplicable": { "type": "boolean", "example": true },
          "preClosurePenalInterest": { "type": "number", "format": "double", "example": 1.75 },
          "preClosurePenalInterestOnTypeId": { "type": "integer", "format": "int32", "example": 1 },
          "shortName": { "type": "string", "example": "FD01" }
        }
      },
      "PostFixedDepositProductsResponse": {
        "type": "object",
        "description": "PostFixedDepositProductsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostFundsResponse": {
        "type": "object",
        "description": "PostFundsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostGLAccountsRequest": {
        "type": "object",
        "description": "PostGLAccountsRequest",
        "properties": {
          "description": { "type": "string", "example": "Desc" },
          "glCode": { "type": "string", "example": "100001" },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Cash at Bangalore" },
          "parentId": { "type": "integer", "format": "int64", "example": 1 },
          "tagId": { "type": "integer", "format": "int64", "example": 10 },
          "type": { "type": "integer", "format": "int32", "example": 1 },
          "usage": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "PostGLAccountsResponse": {
        "type": "object",
        "description": "PostGLAccountsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 22 } }
      },
      "PostGlClosuresRequest": {
        "type": "object",
        "description": "PostGLClosuresRequest",
        "properties": {
          "closingDate": { "type": "string", "format": "date" },
          "comments": {
            "type": "string",
            "example": "The accountants are heading for a Caribbean vacation"
          },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostGlClosuresResponse": {
        "type": "object",
        "description": "PostGlClosuresResponse",
        "properties": {
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 9 }
        }
      },
      "PostGroupsGroupIdChanges": {
        "type": "object",
        "properties": {
          "clientMembers": {
            "type": "array",
            "description": "Ids of the clients associated or disassociated by the command",
            "items": {
              "type": "string",
              "description": "Ids of the clients associated or disassociated by the command"
            }
          },
          "staffId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostGroupsGroupIdClients": {
        "type": "object",
        "properties": { "id": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostGroupsGroupIdCommandUnassignStaffChanges": { "type": "object" },
      "PostGroupsGroupIdCommandUnassignStaffRequest": {
        "type": "object",
        "description": "PostGroupsGroupIdCommandUnassignStaffRequest",
        "properties": { "staffId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostGroupsGroupIdCommandUnassignStaffResponse": {
        "type": "object",
        "description": "PostGroupsGroupIdCommandUnassignStaffResponse",
        "properties": {
          "changes": {
            "$ref": "#/components/schemas/PostGroupsGroupIdCommandUnassignStaffChanges"
          },
          "groupId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostGroupsGroupIdRequest": {
        "type": "object",
        "description": "PostGroupsGroupIdRequest",
        "properties": {
          "activationDate": { "type": "string", "example": "04 March 2011" },
          "clientMembers": {
            "type": "array",
            "description": "List of client ids to associate with or disassociate from the group",
            "items": {
              "type": "integer",
              "format": "int64",
              "description": "List of client ids to associate with or disassociate from the group"
            }
          },
          "clients": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostGroupsGroupIdClients" },
            "uniqueItems": true
          },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "destinationGroupId": { "type": "integer", "format": "int64", "example": 2 },
          "inheritStaffForClientAccounts": { "type": "boolean", "example": false },
          "locale": { "type": "string", "example": "en" },
          "staffId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostGroupsGroupIdResponse": {
        "type": "object",
        "description": "PostGroupsGroupIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PostGroupsGroupIdChanges" },
          "groupId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostGroupsRequest": {
        "type": "object",
        "description": "PostGroupsRequest",
        "properties": {
          "activationDate": { "type": "string", "example": "04 March 2011" },
          "active": { "type": "boolean", "example": false },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "externalId": { "type": "string", "example": "externalId1" },
          "locale": { "type": "string", "example": "en" },
          "name": { "type": "string", "example": "Pending Group" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "submittedOnDate": { "type": "string", "example": "04 March 2011" }
        }
      },
      "PostGroupsResponse": {
        "type": "object",
        "description": "PostGroupsResponse",
        "properties": {
          "groupId": { "type": "integer", "format": "int64", "example": 2 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "PostHolidaysHolidayIdRequest": {
        "type": "object",
        "description": "PostHolidaysHolidayIdRequest"
      },
      "PostHolidaysHolidayIdResponse": {
        "type": "object",
        "description": "PostHolidaysHolidayIdResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostHolidaysRequest": {
        "type": "object",
        "description": "PostHolidaysRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "description": { "type": "string", "example": "Good Friday" },
          "fromDate": { "type": "string", "format": "date" },
          "locale": { "type": "string", "example": "en" },
          "name": { "type": "string", "example": "Good Friday" },
          "offices": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostHolidaysRequestOffices" }
          },
          "repaymentsRescheduledTo": { "type": "string", "format": "date" },
          "reschedulingType": { "type": "integer", "format": "int32", "example": 2 },
          "toDate": { "type": "string", "format": "date" }
        }
      },
      "PostHolidaysRequestOffices": {
        "type": "object",
        "properties": { "officeId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostHolidaysResponse": {
        "type": "object",
        "description": "PostHolidaysResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostInitiateTransferResponse": {
        "type": "object",
        "description": "PostInitiateTransferResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/ExternalAssetOwnerTransferChangesData" },
          "dateFormat": { "type": "string", "example": "yyyy-MM-dd" },
          "locale": { "type": "string", "example": "en" },
          "resourceExternalId": {
            "type": "string",
            "description": "transfer external ID",
            "example": "36efeb06-d835-48a1-99eb-09bd1d348c1e"
          },
          "resourceId": {
            "type": "integer",
            "format": "int64",
            "description": "transfer ID",
            "example": 1
          },
          "subResourceExternalId": {
            "type": "string",
            "description": "loan external ID",
            "example": "36efeb06-d835-48a1-99eb-09bd1d348c2e"
          },
          "subResourceId": {
            "type": "integer",
            "format": "int64",
            "description": "loan ID",
            "example": 2
          }
        }
      },
      "PostJournalEntriesResponse": {
        "type": "object",
        "description": "PostJournalEntriesResponse",
        "properties": {
          "officeId": { "type": "integer", "format": "int64", "description": "1" },
          "transactionId": { "type": "string", "description": "RS9MCISID4WK1ZM" }
        }
      },
      "PostJournalEntriesTransactionIdRequest": {
        "type": "object",
        "description": "PostJournalEntriesTransactionIdRequest",
        "properties": { "officeId": { "type": "integer", "format": "int64", "description": "1" } }
      },
      "PostJournalEntriesTransactionIdResponse": {
        "type": "object",
        "description": "PostJournalEntriesTransactionIdResponse",
        "properties": { "officeId": { "type": "integer", "format": "int64", "description": "1" } }
      },
      "PostLoanChanges": {
        "type": "object",
        "properties": {
          "removedEntityIds": {
            "type": "array",
            "example": [21, 22],
            "items": { "type": "integer", "format": "int64" }
          }
        }
      },
      "PostLoanOriginatorsRequest": {
        "type": "object",
        "description": "PostLoanOriginatorsRequest",
        "properties": {
          "channelTypeId": { "type": "integer", "format": "int64", "example": 1 },
          "externalId": { "type": "string", "example": "EXT-001" },
          "name": { "type": "string", "example": "Main Branch Originator" },
          "originatorTypeId": { "type": "integer", "format": "int64", "example": 1 },
          "status": { "type": "string", "example": "ACTIVE" }
        },
        "required": ["name"]
      },
      "PostLoanOriginatorsResponse": {
        "type": "object",
        "description": "PostLoanOriginatorsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "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 },
          "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" },
          "mandatoryGuarantee": {
            "type": "number",
            "description": "Percentage of the loan that guarantors must cover",
            "example": 50
          },
          "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 },
          "maximumGap": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum days between two installments of a variable installment loan",
            "example": 90
          },
          "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
          },
          "minimumGap": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum days between two installments of a variable installment loan",
            "example": 0
          },
          "minimumGuaranteeFromGuarantor": {
            "type": "number",
            "description": "Minimum percentage of the guarantee an external guarantor must provide",
            "example": 20
          },
          "minimumGuaranteeFromOwnFunds": {
            "type": "number",
            "description": "Minimum percentage of the guarantee the borrower must provide from own funds",
            "example": 20
          },
          "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" } },
          "recalculationCompoundingFrequencyDayOfWeekType": {
            "type": "integer",
            "format": "int32",
            "example": 1
          },
          "recalculationCompoundingFrequencyInterval": {
            "type": "integer",
            "format": "int32",
            "example": 1
          },
          "recalculationCompoundingFrequencyOnDayType": {
            "type": "integer",
            "format": "int32",
            "example": 1
          },
          "recalculationCompoundingFrequencyType": {
            "type": "integer",
            "format": "int32",
            "example": 1
          },
          "recalculationRestFrequencyDayOfWeekType": {
            "type": "integer",
            "format": "int32",
            "example": 1
          },
          "recalculationRestFrequencyInterval": {
            "type": "integer",
            "format": "int32",
            "example": 1
          },
          "recalculationRestFrequencyOnDayType": {
            "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" } },
          "syncExpectedWithDisbursementDate": {
            "type": "boolean",
            "description": "Force the actual disbursement date to match the expected disbursement date",
            "example": false
          },
          "transactionProcessingStrategyCode": {
            "type": "string",
            "example": "mifos-standard-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 } }
      },
      "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" }
        }
      },
      "PostLoansDelinquencyActionRequest": {
        "type": "object",
        "description": "PostLoansDelinquencyActionRequest",
        "properties": {
          "action": { "type": "string", "example": "pause" },
          "dateFormat": { "type": "string", "example": "yyyy-MM-dd" },
          "endDate": { "type": "string", "example": "2013-02-20" },
          "locale": { "type": "string", "example": "en" },
          "startDate": { "type": "string", "example": "2013-01-02" }
        }
      },
      "PostLoansDelinquencyActionResponse": {
        "type": "object",
        "description": "PostLoansDelinquencyActionResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "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" },
          "disbursedAmount": {
            "type": "number",
            "description": "Undo last disbursal only: the tranche amount that was rolled back",
            "example": 1000
          },
          "locale": { "type": "string", "example": "en" },
          "note": { "type": "string", "example": "Loan approval note" },
          "status": { "$ref": "#/components/schemas/PostLoansLoanIdStatus" }
        }
      },
      "PostLoansLoanIdChargesChargeIdChanges": {
        "type": "object",
        "properties": {
          "amount": { "type": "number", "format": "double", "example": 100 },
          "chargeId": { "type": "integer", "format": "int64", "example": 1 },
          "date": { "type": "number", "format": "double" },
          "dueDate": { "type": "string", "format": "date" },
          "externalId": { "type": "string", "example": "786444UUUYYH7" },
          "feeChargesPortion": { "type": "number", "format": "double", "example": 100 },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "installmentNumber": { "type": "integer", "format": "int64", "example": 1 },
          "interestPortion": { "type": "number", "format": "double", "example": 100 },
          "locale": { "type": "string", "example": "en" },
          "outstandingLoanBalance": { "type": "number", "format": "double", "example": 100 },
          "penaltyChargesPortion": { "type": "number", "format": "double", "example": 100 },
          "principalPortion": { "type": "number", "format": "double", "example": 100 },
          "transactionDate": { "type": "string", "format": "date" }
        }
      },
      "PostLoansLoanIdChargesChargeIdRequest": {
        "type": "object",
        "description": "PostLoansLoanIdChargesChargeIdRequest",
        "properties": {
          "accountNumber": { "type": "string", "example": "acc123" },
          "amount": { "type": "number", "format": "double", "example": 100 },
          "bankNumber": { "type": "string", "example": "ban123" },
          "chargeId": { "type": "integer", "format": "int64", "example": 1 },
          "checkNumber": { "type": "string", "example": "che123" },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "dueDate": { "type": "string", "example": "19 September 2013" },
          "externalId": { "type": "string", "example": "786444UUUYYH7" },
          "installmentNumber": { "type": "integer", "format": "int64", "example": 1 },
          "locale": { "type": "string", "example": "en" },
          "note": { "type": "string", "example": "An optional note" },
          "paymentTypeId": { "type": "integer", "format": "int64", "example": 3 },
          "receiptNumber": { "type": "string", "example": "rec123" },
          "routingCode": { "type": "string", "example": "rou123" },
          "transactionDate": { "type": "string", "example": "19 September 2013" }
        }
      },
      "PostLoansLoanIdChargesChargeIdResponse": {
        "type": "object",
        "description": "PostLoansLoanIdChargesChargeIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PostLoansLoanIdChargesChargeIdChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "loanId": { "type": "integer", "format": "int64", "example": 6 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceExternalId": { "type": "string", "example": "786444UUUYYH7" },
          "resourceId": { "type": "integer", "format": "int64", "example": 12 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 },
          "subResourceExternalId": { "type": "string", "example": "786444UUUYYH7" },
          "subResourceId": { "type": "integer", "format": "int64", "example": 12 }
        }
      },
      "PostLoansLoanIdChargesRequest": {
        "type": "object",
        "description": " PostLoansLoanIdChargesRequest",
        "properties": {
          "amount": { "type": "number", "format": "double", "example": 100 },
          "chargeId": { "type": "integer", "format": "int64", "example": 2 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "dueDate": { "type": "string", "example": "29 April 2013" },
          "externalId": { "type": "string", "example": "786444UUUYYH7" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostLoansLoanIdChargesResponse": {
        "type": "object",
        "description": " PostLoansLoanIdChargesResponse",
        "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": 31 }
        }
      },
      "PostLoansLoanIdCollateralsResponse": {
        "type": "object",
        "description": "PostLoansLoanIdCollateralsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 12 } }
      },
      "PostLoansLoanIdDisbursementData": {
        "type": "object",
        "description": "List of PostLoansLoanIdDisbursementData",
        "properties": {
          "expectedDisbursementDate": { "type": "string", "example": "1 November 2023" },
          "principal": { "type": "number", "example": 22000 }
        }
      },
      "PostLoansLoanIdGlimApprovalData": {
        "type": "object",
        "description": "Approve GLIM Application only: the per-child-loan approval details",
        "properties": {
          "approvedOnDate": { "type": "string", "example": "28 June 2022" },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostLoansLoanIdOriginatorData": {
        "type": "object",
        "description": "Originator data for loan disbursement 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 a new originator during disbursement)",
            "example": "PP Merchant"
          },
          "typeId": {
            "type": "integer",
            "format": "int64",
            "description": "Code value ID for originator type (from LoanOriginatorType code)",
            "example": 1
          }
        }
      },
      "PostLoansLoanIdPostDatedCheckData": {
        "type": "object",
        "description": "Post dated check backing one repayment installment",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 900400500621 },
          "amount": { "type": "number", "example": 1600 },
          "checkNo": { "type": "integer", "format": "int64", "example": 123456789 },
          "installmentId": { "type": "integer", "format": "int32", "example": 1 },
          "name": { "type": "string", "example": "AMANA BANK" }
        }
      },
      "PostLoansLoanIdRequest": {
        "type": "object",
        "description": "PostLoansLoanIdRequest",
        "properties": {
          "actualDisbursementDate": { "type": "string", "example": "28 June 2022" },
          "adjustRepaymentDate": { "type": "string", "example": "28 July 2022" },
          "approvalFormData": {
            "type": "array",
            "description": "Approve GLIM Application only: the per-child-loan approval details",
            "items": { "$ref": "#/components/schemas/PostLoansLoanIdGlimApprovalData" }
          },
          "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" },
          "glimPrincipal": {
            "type": "number",
            "description": "Approve GLIM Application only: the approved principal of the parent GLIM account",
            "example": 1000
          },
          "locale": { "type": "string", "example": "en" },
          "netDisbursalAmount": { "type": "number", "example": 5000.33 },
          "note": { "type": "string", "example": "Description of disbursement details." },
          "originators": {
            "type": "array",
            "description": "Optional array of originators to reconcile during loan disbursement. Omit the field to leave existing mappings unchanged. Send an empty array to detach all originators. Each entry can reference an existing originator by 'id' or 'externalId'. Missing externalIds are created during disbursement.",
            "items": { "$ref": "#/components/schemas/PostLoansLoanIdOriginatorData" }
          },
          "paymentTypeId": { "type": "integer", "format": "int32", "example": 3 },
          "postDatedChecks": {
            "type": "array",
            "description": "Disburse only: the post dated checks backing the repayment schedule",
            "items": { "$ref": "#/components/schemas/PostLoansLoanIdPostDatedCheckData" }
          },
          "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 }
        }
      },
      "PostLoansLoanIdScheduleDeletedInstallment": {
        "type": "object",
        "description": "Installments removed from the schedule",
        "properties": { "dueDate": { "type": "string", "example": "20 December 2011" } }
      },
      "PostLoansLoanIdScheduleExceptions": {
        "type": "object",
        "description": "The installment changes to apply to the repayment schedule",
        "properties": {
          "deletedinstallments": {
            "type": "array",
            "description": "Installments removed from the schedule",
            "items": { "$ref": "#/components/schemas/PostLoansLoanIdScheduleDeletedInstallment" }
          },
          "modifiedinstallments": {
            "type": "array",
            "description": "Installments whose due date, principal or instalment amount changes",
            "items": { "$ref": "#/components/schemas/PostLoansLoanIdScheduleModifiedInstallment" }
          },
          "newinstallments": {
            "type": "array",
            "description": "Installments added to the schedule",
            "items": { "$ref": "#/components/schemas/PostLoansLoanIdScheduleNewInstallment" }
          }
        }
      },
      "PostLoansLoanIdScheduleModifiedInstallment": {
        "type": "object",
        "description": "Installments whose due date, principal or instalment amount changes",
        "properties": {
          "dueDate": { "type": "string", "example": "20 November 2011" },
          "installmentAmount": { "type": "number", "example": 30000 },
          "modifiedDueDate": { "type": "string", "example": "25 November 2011" },
          "principal": { "type": "number", "example": 5000 }
        }
      },
      "PostLoansLoanIdScheduleNewInstallment": {
        "type": "object",
        "description": "Installments added to the schedule",
        "properties": {
          "dueDate": { "type": "string", "example": "31 October 2011" },
          "installmentAmount": { "type": "number", "example": 5000 },
          "principal": { "type": "number", "example": 5000 }
        }
      },
      "PostLoansLoanIdSchedulePeriod": {
        "type": "object",
        "description": "A period of the schedule the calculateLoanSchedule command returns",
        "properties": {
          "dueDate": { "type": "string", "format": "date" },
          "fromDate": { "type": "string", "format": "date" },
          "interestOriginalDue": { "type": "number", "example": 1972.6 },
          "period": { "type": "integer", "format": "int32", "example": 1 },
          "principalDue": { "type": "number", "example": 34675.47 },
          "principalOriginalDue": { "type": "number", "example": 34675.47 },
          "totalDueForPeriod": { "type": "number", "example": 36648.07 },
          "totalOriginalDueForPeriod": { "type": "number", "example": 36648.07 },
          "totalOutstandingForPeriod": { "type": "number", "example": 36648.07 }
        }
      },
      "PostLoansLoanIdScheduleRequest": {
        "type": "object",
        "description": "PostLoansLoanIdScheduleRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "exceptions": { "$ref": "#/components/schemas/PostLoansLoanIdScheduleExceptions" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostLoansLoanIdScheduleResponse": {
        "type": "object",
        "description": "PostLoansLoanIdScheduleResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PostLoanChanges" },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "periods": {
            "type": "array",
            "description": "Returned by the calculateLoanSchedule command: the schedule the variations produce",
            "items": { "$ref": "#/components/schemas/PostLoansLoanIdSchedulePeriod" }
          }
        }
      },
      "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"
          },
          "calendarId": {
            "type": "integer",
            "format": "int64",
            "description": "Meeting calendar to attach the loan to; required for jlg loans",
            "example": 1
          },
          "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 },
          "collateral": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostLoansRequestCollateralData" }
          },
          "createStandingInstructionAtDisbursement": {
            "type": "boolean",
            "description": "Requires linkAccountId when true",
            "example": true
          },
          "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 },
          "groupId": {
            "type": "integer",
            "format": "int64",
            "description": "Mandatory for group and GLIM loans",
            "example": 1
          },
          "inArrearsTolerance": { "type": "number", "example": 10 },
          "interestCalculationPeriodType": { "type": "integer", "format": "int32", "example": 1 },
          "interestChargedFromDate": { "type": "string", "example": "20 September 2011" },
          "interestRateDifferential": {
            "type": "number",
            "description": "Added to the floating rate when isFloatingInterestRate is true",
            "example": 0
          },
          "interestRateFrequencyType": { "type": "integer", "format": "int32", "example": 3 },
          "interestRatePerPeriod": { "type": "number", "example": 2 },
          "interestRecognitionOnDisbursementDate": { "type": "boolean", "example": false },
          "interestType": { "type": "integer", "format": "int32", "example": 0 },
          "isFloatingInterestRate": {
            "type": "boolean",
            "description": "Take the rate from the product's floating rate instead of interestRatePerPeriod",
            "example": false
          },
          "isParentAccount": {
            "type": "boolean",
            "description": "GLIM loans only: marks this application as the GLIM parent account",
            "example": true
          },
          "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", "example": "20 September 2011" },
          "submittedOnDate": { "type": "string", "example": "20 September 2011" },
          "syncDisbursementWithMeeting": {
            "type": "boolean",
            "description": "Sync the disbursement date with the attached meeting",
            "example": true
          },
          "totalLoan": {
            "type": "number",
            "description": "GLIM loans only: the total principal of the parent GLIM account",
            "example": 10000
          },
          "transactionProcessingStrategyCode": {
            "type": "string",
            "example": "mifos-standard-strategy"
          }
        }
      },
      "PostLoansRequestChargeData": {
        "type": "object",
        "properties": {
          "amount": { "type": "number", "example": 1 },
          "chargeId": { "type": "integer", "format": "int64", "example": 1 },
          "dueDate": { "type": "string", "example": "29 September 2011" }
        }
      },
      "PostLoansRequestCollateralData": {
        "type": "object",
        "properties": {
          "clientCollateralId": { "type": "integer", "format": "int64", "example": 1 },
          "quantity": { "type": "number", "example": 1 }
        }
      },
      "PostLoansResponse": {
        "type": "object",
        "description": "PostLoansResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "currency": { "$ref": "#/components/schemas/GetLoansLoanIdCurrency" },
          "glimId": {
            "type": "integer",
            "format": "int64",
            "description": "Returned for GLIM loans: the id of the parent GLIM account",
            "example": 1
          },
          "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 }
        }
      },
      "PostMakerCheckersResponse": {
        "type": "object",
        "description": "PostMakerCheckersResponse",
        "properties": { "auditId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostOfficesRequest": {
        "type": "object",
        "description": "PostOfficesRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "externalId": { "type": "string", "example": "SYS54-88" },
          "locale": { "type": "string", "example": "en" },
          "name": { "type": "string", "example": "Good Friday" },
          "openingDate": { "type": "string", "format": "date" },
          "parentId": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "PostOfficesResponse": {
        "type": "object",
        "description": "PostOfficesResponse",
        "properties": {
          "officeId": { "type": "integer", "format": "int64", "example": 3 },
          "resourceId": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "PostPaymentAllocation": {
        "type": "object",
        "description": "PostPaymentAllocation",
        "properties": {
          "paymentAllocationOrder": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PaymentAllocationOrder" }
          },
          "transactionType": {
            "type": "string",
            "enum": [
              "DEFAULT",
              "REPAYMENT",
              "DOWN_PAYMENT",
              "MERCHANT_ISSUED_REFUND",
              "PAYOUT_REFUND",
              "GOODWILL_CREDIT",
              "CHARGE_REFUND",
              "CHARGE_ADJUSTMENT",
              "WAIVE_INTEREST",
              "CHARGE_PAYMENT",
              "REFUND_FOR_ACTIVE_LOAN",
              "INTEREST_PAYMENT_WAIVER",
              "INTEREST_REFUND",
              "CAPITALIZED_INCOME_ADJUSTMENT"
            ],
            "example": "DEFAULT"
          }
        }
      },
      "PostPaymentAllocationOrder": {
        "type": "object",
        "description": "PostPaymentAllocationOrder",
        "properties": {
          "order": { "type": "integer", "format": "int32", "example": 1 },
          "paymentAllocationRule": { "type": "string", "example": "PENALTY" }
        }
      },
      "PostPaymentAllocationRule": {
        "type": "object",
        "description": "PostPaymentAllocationRule",
        "properties": {
          "paymentAllocationOrder": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostPaymentAllocationOrder" }
          },
          "transactionType": { "type": "string", "example": "DEFAULT" }
        }
      },
      "PostProductsChargesSelected": {
        "type": "object",
        "properties": { "id": { "type": "integer", "format": "int64", "example": 20 } }
      },
      "PostProductsMarketPricePeriods": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "fromDate": { "type": "string", "example": "04 May 2016" },
          "locale": { "type": "string", "example": "en" },
          "shareValue": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "PostProductsTypeRequest": {
        "type": "object",
        "description": "PostProductsTypeRequest",
        "properties": {
          "accountingRule": { "type": "integer", "format": "int32", "example": 1 },
          "allowDividendCalculationForInactiveClients": { "type": "boolean", "example": true },
          "chargesSelected": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostProductsChargesSelected" },
            "uniqueItems": true
          },
          "currencyCode": { "type": "string", "example": "USD" },
          "description": { "type": "string", "example": "Description" },
          "digitsAfterDecimal": { "type": "integer", "format": "int32", "example": 2 },
          "inMultiplesOf": { "type": "integer", "format": "int32", "example": 1 },
          "locale": { "type": "string", "example": "en" },
          "lockinPeriodFrequency": { "type": "integer", "format": "int32", "example": 1 },
          "lockinPeriodFrequencyType": { "type": "integer", "format": "int32", "example": 1 },
          "marketPricePeriods": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostProductsMarketPricePeriods" },
            "uniqueItems": true
          },
          "maximumShares": { "type": "integer", "format": "int32", "example": 30 },
          "minimumActivePeriodForDividends": { "type": "integer", "format": "int32", "example": 1 },
          "minimumShares": { "type": "integer", "format": "int32", "example": 10 },
          "minimumactiveperiodFrequencyType": {
            "type": "integer",
            "format": "int32",
            "example": 0
          },
          "name": { "type": "string", "example": "Share Product" },
          "nominalShares": { "type": "integer", "format": "int32", "example": 20 },
          "sharesIssued": { "type": "integer", "format": "int32", "example": 1000 },
          "shortName": { "type": "string", "example": "SP" },
          "totalShares": { "type": "integer", "format": "int32", "example": 1000 },
          "unitPrice": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "PostProductsTypeResponse": {
        "type": "object",
        "description": "PostProductsTypeResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostProvisioningCriteriaRequest": {
        "type": "object",
        "description": "PostProvisioningCriteriaRequest",
        "properties": {
          "criteriaName": { "type": "string", "example": "High Risk Products Criteria" },
          "definitions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ProvisioningCriteriaDefinitionData" }
          },
          "loanProducts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductData" }
          }
        }
      },
      "PostProvisioningCriteriaResponse": {
        "type": "object",
        "description": "PostProvisioningCriteriaResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostProvisioningEntriesResponse": {
        "type": "object",
        "description": "PostProvisioningEntriesResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostRecurringChanges": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string", "example": "acc123" },
          "bankNumber": { "type": "string", "example": "ban123" },
          "checkNumber": { "type": "string", "example": "che123" },
          "receiptNumber": { "type": "string", "example": "rec123" },
          "routingCode": { "type": "string", "example": "rou123" }
        }
      },
      "PostRecurringDepositAccountsAccountIdRequest": {
        "type": "object",
        "description": "PostRecurringDepositAccountsAccountIdRequest"
      },
      "PostRecurringDepositAccountsAccountIdResponse": {
        "type": "object",
        "description": "PostRecurringDepositAccountsAccountIdResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostRecurringDepositAccountsRecurringDepositAccountIdTransactionsRequest": {
        "type": "object",
        "description": "PostRecurringDepositAccountsRecurringDepositAccountIdTransactionsRequest",
        "properties": {
          "accountNumber": { "type": "string", "example": "acc123" },
          "bankNumber": { "type": "string", "example": "ban123" },
          "checkNumber": { "type": "string", "example": "che123" },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "paymentTypeId": { "type": "integer", "format": "int32", "example": 14 },
          "receiptNumber": { "type": "string", "example": "rec123" },
          "routingCode": { "type": "string", "example": "rou123" },
          "transactionAmount": { "type": "number", "format": "double", "example": 500 },
          "transactionDate": { "type": "string", "example": "27 May 2013" }
        }
      },
      "PostRecurringDepositAccountsRecurringDepositAccountIdTransactionsResponse": {
        "type": "object",
        "description": "PostRecurringDepositAccountsRecurringDepositAccountIdTransactionsResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PostRecurringChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 2 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 47 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostRecurringDepositAccountsRecurringDepositAccountIdTransactionsTransactionIdResponse": {
        "type": "object",
        "description": "PostRecurringDepositAccountsRecurringDepositAccountIdTransactionsTransactionIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PostRecurringChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 2 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 48 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostRecurringDepositAccountsRequest": {
        "type": "object",
        "description": "PostRecurringDepositAccountsRequest",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "depositAmount": { "type": "number", "format": "float", "example": 10000 },
          "depositPeriod": { "type": "integer", "format": "int32", "example": 20 },
          "depositPeriodFrequencyId": { "type": "integer", "format": "int32", "example": 1 },
          "isCalendarInherited": { "type": "boolean", "example": false },
          "locale": { "type": "string", "example": "en" },
          "mandatoryRecommendedDepositAmount": {
            "type": "integer",
            "format": "int64",
            "example": 2000
          },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "recurringFrequency": { "type": "integer", "format": "int32", "example": 2 },
          "recurringFrequencyType": { "type": "integer", "format": "int32", "example": 1 },
          "submittedOnDate": { "type": "string", "example": "02 June 2014" }
        }
      },
      "PostRecurringDepositAccountsResponse": {
        "type": "object",
        "description": "PostRecurringDepositAccountsResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostRecurringDepositProductsChartSlabs": {
        "type": "object",
        "properties": {
          "annualInterestRate": { "type": "number", "format": "double", "example": 4.5 },
          "description": { "type": "string", "example": "from 0 to 90 days" },
          "fromPeriod": { "type": "integer", "format": "int32", "example": 0 },
          "periodType": { "type": "integer", "format": "int32", "example": 1 },
          "toPeriod": { "type": "integer", "format": "int32", "example": 90 }
        }
      },
      "PostRecurringDepositProductsCharts": {
        "type": "object",
        "properties": {
          "chartSlabs": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostRecurringDepositProductsChartSlabs" },
            "uniqueItems": true
          },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "fromDate": { "type": "string", "example": "01 Jan 2014" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostRecurringDepositProductsRequest": {
        "type": "object",
        "description": "PostRecurringDepositProductsRequest",
        "properties": {
          "accountingRule": { "type": "integer", "format": "int32", "example": 1 },
          "charts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostRecurringDepositProductsCharts" },
            "uniqueItems": true
          },
          "currencyCode": { "type": "string", "example": "USD" },
          "depositAmount": { "type": "integer", "format": "int64", "example": 10000 },
          "description": {
            "type": "string",
            "example": "Daily compounding using Daily Balance, 5% per year, 365 days in year"
          },
          "digitsAfterDecimal": { "type": "integer", "format": "int32", "example": 2 },
          "inMultiplesOf": { "type": "integer", "format": "int32", "example": 0 },
          "interestCalculationDaysInYearType": {
            "type": "integer",
            "format": "int32",
            "example": 365
          },
          "interestCalculationType": { "type": "integer", "format": "int32", "example": 1 },
          "interestCompoundingPeriodType": { "type": "integer", "format": "int32", "example": 1 },
          "interestPostingPeriodType": { "type": "integer", "format": "int32", "example": 4 },
          "locale": { "type": "string", "example": "en" },
          "maxDepositAmount": { "type": "integer", "format": "int64", "example": 1000000 },
          "maxDepositTerm": { "type": "integer", "format": "int32", "example": 5 },
          "maxDepositTermTypeId": { "type": "integer", "format": "int32", "example": 3 },
          "minDepositAmount": { "type": "integer", "format": "int64", "example": 100 },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 1 },
          "minDepositTermTypeId": { "type": "integer", "format": "int32", "example": 1 },
          "name": { "type": "string", "example": "Recurring deposit product" },
          "preClosurePenalApplicable": { "type": "boolean", "example": true },
          "preClosurePenalInterest": { "type": "number", "format": "double", "example": 1.75 },
          "preClosurePenalInterestOnTypeId": { "type": "integer", "format": "int32", "example": 1 },
          "shortName": { "type": "string", "example": "RD01" }
        }
      },
      "PostRecurringDepositProductsResponse": {
        "type": "object",
        "description": "PostRecurringDepositProductsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostReportMailingJobsRequest": {
        "type": "object",
        "description": "PostReportMailingJobsRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd-MM-yyyy HH:mm:ss" },
          "description": { "type": "string", "example": "Client Numbers Report" },
          "emailMessage": { "type": "string", "example": "Client Numbers Report" },
          "emailRecipients": { "type": "string", "example": "info@musonisystem.com" },
          "emailSubject": { "type": "string", "example": "Client Numbers Report" },
          "isActive": { "type": "boolean", "example": true },
          "locale": { "type": "string", "example": "en_GB" },
          "name": { "type": "string", "example": "Client Numbers Report" },
          "recurrence": { "type": "string", "example": "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,WE,FR" },
          "startDateTime": { "type": "string", "format": "date-time" },
          "stretchyReportId": { "type": "integer", "format": "int64", "example": 120 },
          "stretchyReportParamMap": {
            "type": "string",
            "example": "{\"startDate\":\"2016-07-01\",\"endDate\":\"2016-08-02\",\"selectOffice\":\"1\",\"environementUrl\":\"environementUrl\"}"
          }
        }
      },
      "PostReportMailingJobsResponse": {
        "type": "object",
        "description": "PostReportMailingJobsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "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" },
          "useReport": { "type": "boolean", "example": true }
        }
      },
      "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 } }
      },
      "PostRolesRoleIdResponse": {
        "type": "object",
        "description": "PostRolesRoleIdResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostRunaccrualsRequest": {
        "type": "object",
        "description": "runaccrualsRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "tillDate": {
            "type": "string",
            "description": "which specifies periodic accruals should happen till the given Date",
            "example": "04 June 2014"
          }
        }
      },
      "PostSavingsAccountBulkReversalTransactionsRequest": {
        "type": "object",
        "description": "PostSavingsAccountBulkReversalTransactionsRequest",
        "properties": {
          "externalId": { "type": "string", "example": "5dd80a7c-ccba-4446-b378-01eb6f53e871" },
          "isBulk": { "type": "string", "example": "true" }
        }
      },
      "PostSavingsAccountTransactionsRequest": {
        "type": "object",
        "description": "PostSavingsAccountTransactionsRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "externalId": { "type": "string", "example": "5dd80a7c-ccba-4446-b378-01eb6f53e871" },
          "isPostInterestAsOn": { "type": "boolean", "example": true },
          "lienAllowed": { "type": "string", "example": "true" },
          "locale": { "type": "string", "example": "en" },
          "note": { "type": "string", "example": "A note about this transaction" },
          "paymentTypeId": { "type": "integer", "format": "int32", "example": 1 },
          "postInterestManualOrAutomatic": { "type": "boolean", "example": true },
          "reasonForBlock": { "type": "string", "example": "String" },
          "transactionAmount": { "type": "number", "example": 1000 },
          "transactionDate": { "type": "string", "example": "27 March 2022" }
        }
      },
      "PostSavingsAccountTransactionsResponse": {
        "type": "object",
        "description": "PostSavingsAccountTransactionsResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostSavingsAccountsAccountIdChanges": { "type": "object" },
      "PostSavingsAccountsAccountIdRequest": {
        "type": "object",
        "description": "PostSavingsAccountsAccountIdRequest",
        "properties": {
          "activatedOnDate": { "type": "string", "example": "05 September 2014" },
          "approvedOnDate": { "type": "string", "example": "05 September 2014" },
          "closedOnDate": { "type": "string", "example": "05 September 2014" },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "rejectedOnDate": { "type": "string", "example": "05 September 2014" },
          "withdrawBalance": { "type": "boolean", "example": false },
          "withdrawnOnDate": { "type": "string", "example": "05 September 2014" }
        }
      },
      "PostSavingsAccountsAccountIdResponse": {
        "type": "object",
        "description": "PostSavingsAccountsAccountIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PostSavingsAccountsAccountIdChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 8 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceId": { "type": "integer", "format": "int64", "example": 8 }
        }
      },
      "PostSavingsAccountsRequest": {
        "type": "object",
        "description": "PostSavingsAccountsRequest",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "externalId": { "type": "string", "example": "123" },
          "groupId": {
            "type": "integer",
            "format": "int64",
            "description": "Mandatory for a group savings account, in place of clientId",
            "example": 1
          },
          "locale": { "type": "string", "example": "en" },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "submittedOnDate": { "type": "string", "example": "01 March 2011" }
        }
      },
      "PostSavingsAccountsResponse": {
        "type": "object",
        "description": "PostSavingsAccountsResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostSavingsAccountsSavingsAccountIdChargesRequest": {
        "type": "object",
        "description": "PostSavingsAccountsSavingsAccountIdChargesRequest",
        "properties": {
          "amount": { "type": "number", "format": "float", "example": 100 },
          "chargeId": { "type": "integer", "format": "int64", "example": 2 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "dueDate": { "type": "string", "example": "29 April 2013" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostSavingsAccountsSavingsAccountIdChargesResponse": {
        "type": "object",
        "description": "PostSavingsAccountsSavingsAccountIdChargesResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 6 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdRequest": {
        "type": "object",
        "description": "PostSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdRequest",
        "properties": {
          "amount": { "type": "number", "format": "float", "example": 60 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "dueDate": { "type": "string", "example": "12 September 2013" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse": {
        "type": "object",
        "description": "PostSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 2 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostSavingsCharges": {
        "type": "object",
        "properties": { "id": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostSavingsProductsRequest": {
        "type": "object",
        "description": "PostSavingsProductsRequest",
        "properties": {
          "accountMappingForPayment": { "type": "string", "example": "accountMappingForPayment" },
          "accountingRule": { "type": "integer", "format": "int32", "example": 1 },
          "allowOverdraft": { "type": "boolean", "example": false },
          "charges": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostSavingsCharges" }
          },
          "currencyCode": { "type": "string", "example": "USD" },
          "description": {
            "type": "string",
            "example": "Daily compounding using Daily Balance, 5% per year, 365 days in year"
          },
          "digitsAfterDecimal": { "type": "integer", "format": "int32", "example": 2 },
          "enforceMinRequiredBalance": { "type": "boolean", "example": false },
          "feesReceivableAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "inMultiplesOf": { "type": "integer", "format": "int32", "example": 0 },
          "incomeFromFeeAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "incomeFromInterestId": { "type": "integer", "format": "int64", "example": 1 },
          "incomeFromPenaltyAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "interestCalculationDaysInYearType": {
            "type": "integer",
            "format": "int32",
            "example": 365
          },
          "interestCalculationType": { "type": "integer", "format": "int32", "example": 1 },
          "interestCompoundingPeriodType": { "type": "integer", "format": "int32", "example": 1 },
          "interestOnSavingsAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "interestPayableAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "interestPostingPeriodType": { "type": "integer", "format": "int32", "example": 4 },
          "interestReceivableAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "isDormancyTrackingActive": { "type": "boolean", "example": false },
          "locale": { "type": "string", "example": "en" },
          "minRequiredOpeningBalance": { "type": "number", "example": 10000 },
          "name": { "type": "string", "example": "Passbook Savings" },
          "nominalAnnualInterestRate": { "type": "number", "format": "double", "example": 5 },
          "nominalAnnualInterestRateOverdraft": { "type": "number", "example": 21 },
          "overdraftLimit": { "type": "number", "example": 10000 },
          "overdraftPortfolioControlId": { "type": "integer", "format": "int64", "example": 1 },
          "penaltiesReceivableAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsControlAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsReferenceAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "shortName": { "type": "string", "example": "PBSV" },
          "transfersInSuspenseAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "withHoldTax": { "type": "boolean", "example": false },
          "withdrawalFeeForTransfers": { "type": "boolean", "example": false },
          "writeOffAccountId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostSavingsProductsResponse": {
        "type": "object",
        "description": "PostSavingsProductsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostStandingInstructionsResponse": {
        "type": "object",
        "description": "PostStandingInstructionsResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int32", "example": 65 }
        }
      },
      "PostSurveySurveyNameApptableIdRequest": {
        "type": "object",
        "description": "PostSurveySurveyNameApptableIdRequest",
        "properties": {
          "date": { "type": "string", "format": "date-time" },
          "dateFormat": { "type": "string", "format": "date-time" },
          "locale": { "type": "string", "example": "en_GB" },
          "ppi_businessoccupation_cd_q3_businessoccupation": {
            "type": "integer",
            "format": "int64",
            "example": 180
          },
          "ppi_floortype_cd_q5_floortype": { "type": "integer", "format": "int64", "example": 188 },
          "ppi_fryingpans_cd_q10_fryingpans": {
            "type": "integer",
            "format": "int64",
            "example": 201
          },
          "ppi_habitablerooms_cd_q4_habitablerooms": {
            "type": "integer",
            "format": "int64",
            "example": 184
          },
          "ppi_highestschool_cd_q2_highestschool": {
            "type": "integer",
            "format": "int64",
            "example": 174
          },
          "ppi_household_members_cd_q1_householdmembers": {
            "type": "integer",
            "format": "int64",
            "example": 167
          },
          "ppi_irons_cd_q7_irons": { "type": "integer", "format": "int64", "example": 193 },
          "ppi_lightingsource_cd_q6_lightingsource": {
            "type": "integer",
            "format": "int64",
            "example": 190
          },
          "ppi_mosquitonets_cd_q8_mosquitonets": {
            "type": "integer",
            "format": "int64",
            "example": 195
          },
          "ppi_towels_cd_q9_towels": { "type": "integer", "format": "int64", "example": 198 }
        }
      },
      "PostSurveySurveyNameApptableIdResponse": {
        "type": "object",
        "description": "PostSurveySurveyNameApptableIdResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 87 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceId": { "type": "integer", "format": "int64", "example": 87 }
        }
      },
      "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 }
        }
      },
      "PostTellersRequest": {
        "type": "object",
        "description": "PostTellersRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd-MM-yyyy" },
          "description": { "type": "string", "example": "cash handling" },
          "locale": { "type": "string", "example": "en" },
          "name": { "type": "string", "example": "Teller3" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "startDate": { "type": "string", "format": "date" },
          "status": {
            "type": "string",
            "enum": ["INVALID", "PENDING", "ACTIVE", "INACTIVE", "CLOSED"],
            "example": "ACTIVE"
          }
        }
      },
      "PostTellersResponse": {
        "type": "object",
        "description": "PostTellersResponse",
        "properties": {
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 5 }
        }
      },
      "PostTellersTellerIdCashiersCashierIdAllocateRequest": {
        "type": "object",
        "description": "PostTellersTellerIdCashiersCashierIdAllocateRequest",
        "properties": {
          "currencyCode": { "type": "string", "example": "USD" },
          "dateFormat": { "type": "string", "example": "dd-MM-yyyy" },
          "locale": { "type": "string", "example": "en" },
          "txnAmount": { "type": "number", "example": 5000 },
          "txnDate": { "type": "string", "format": "date" },
          "txnNote": { "type": "string", "example": "allocating cash" }
        }
      },
      "PostTellersTellerIdCashiersCashierIdAllocateResponse": {
        "type": "object",
        "description": "PostTellersTellerIdCashiersCashierIdAllocateResponse",
        "properties": {
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "subResourceId": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "PostTellersTellerIdCashiersCashierIdSettleRequest": {
        "type": "object",
        "description": "PostTellersTellerIdCashiersCashierIdSettleRequest",
        "properties": {
          "currencyCode": { "type": "string", "example": "USD" },
          "dateFormat": { "type": "string", "example": "dd-MM-yyyy" },
          "locale": { "type": "string", "example": "en" },
          "txnAmount": { "type": "number", "example": 2000 },
          "txnDate": { "type": "string", "format": "date" },
          "txnNote": { "type": "string", "example": "cash settlement" }
        }
      },
      "PostTellersTellerIdCashiersCashierIdSettleResponse": {
        "type": "object",
        "description": "PostTellersTellerIdCashiersCashierIdSettleResponse",
        "properties": {
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "subResourceId": { "type": "integer", "format": "int64", "example": 5 }
        }
      },
      "PostTellersTellerIdCashiersRequest": {
        "type": "object",
        "description": "PostTellersTellerIdCashiersRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd-MM-yyyy" },
          "description": { "type": "string", "example": "teller cash handling" },
          "endDate": { "type": "string", "format": "date" },
          "isFullDay": { "type": "boolean", "example": true },
          "locale": { "type": "string", "example": "en" },
          "staffId": { "type": "integer", "format": "int64", "example": 3 },
          "startDate": { "type": "string", "format": "date" }
        }
      },
      "PostTellersTellerIdCashiersResponse": {
        "type": "object",
        "description": "PostTellersTellerIdCashiersResponse",
        "properties": {
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "subResourceId": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "PostUpdateRescheduleLoanChanges": {
        "type": "object",
        "properties": {
          "approvedByUserId": { "type": "integer", "format": "int64", "example": 1 },
          "approvedOnDate": { "type": "string", "example": "05/02/2022" },
          "dateFormat": { "type": "string", "example": "en" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PostUpdateRescheduleLoansRequest": {
        "type": "object",
        "description": "PostUpdateRescheduleLoansRequest",
        "properties": {
          "approvedOnDate": { "type": "string", "example": "20 September 2011" },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "rejectedOnDate": { "type": "string", "example": "20 September 2011" }
        }
      },
      "PostUpdateRescheduleLoansResponse": {
        "type": "object",
        "description": "PostUpdateRescheduleLoansResponse ",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PostUpdateRescheduleLoanChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 12 },
          "loanId": { "type": "integer", "format": "int64", "example": 18 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 12 }
        }
      },
      "PostUsersRequest": {
        "type": "object",
        "description": "PostUsersRequest",
        "properties": {
          "clients": {
            "type": "array",
            "example": [2, 3],
            "items": { "type": "integer", "format": "int64" }
          },
          "email": { "type": "string", "example": "whatever@mifos.org" },
          "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 }
        }
      },
      "PostWorkingCapitalLoanProductsRequest": {
        "type": "object",
        "description": "PostWorkingCapitalLoanProductsRequest",
        "properties": {
          "accountingRule": {
            "type": "string",
            "description": "NONE or ACC_DEF_REV_AM",
            "enum": ["NONE", "ACC_DEF_REV_AM"],
            "example": "ACC_DEF_REV_AM"
          },
          "allowAttributeOverrides": { "$ref": "#/components/schemas/PostAllowAttributeOverrides" },
          "amortizationType": { "type": "string", "enum": ["EIR", "FLAT"], "example": "EIR" },
          "annualEir": {
            "type": "number",
            "description": "Annual EIR percentage (6 decimal places max). Required when strategy is ANNUAL_EIR.",
            "example": 43.7562
          },
          "breachGraceDays": {
            "type": "integer",
            "format": "int32",
            "description": "Number of days to shift the start of the first breach schedule period after disbursement",
            "example": 0
          },
          "breachId": { "type": "integer", "format": "int64", "example": 1 },
          "breachStartType": {
            "type": "string",
            "description": "Breach start type: LOAN_CREATION or DISBURSEMENT",
            "example": "DISBURSEMENT"
          },
          "chargeOffExpenseAccountId": { "type": "integer", "format": "int64", "example": 17 },
          "chargeOffFraudExpenseAccountId": { "type": "integer", "format": "int64", "example": 18 },
          "chargeOffReasonToExpenseAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalPostChargeOffReasonToExpenseAccountMappings"
            }
          },
          "closeDate": { "type": "string", "example": "10 July 2025" },
          "currencyCode": { "type": "string", "example": "USD" },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "deferredIncomeLiabilityAccountId": {
            "type": "integer",
            "format": "int64",
            "example": 4
          },
          "delinquencyBucketId": { "type": "integer", "format": "int64", "example": 1 },
          "delinquencyGraceDays": { "type": "integer", "format": "int32", "example": 1 },
          "delinquencyStartType": {
            "type": "string",
            "description": "Delinquency start type: LOAN_CREATION or DISBURSEMENT",
            "example": "LOAN_CREATION"
          },
          "description": {
            "type": "string",
            "example": "Working Capital Loan Product for merchants"
          },
          "digitsAfterDecimal": { "type": "integer", "format": "int32", "example": 2 },
          "discount": { "type": "number", "example": 0 },
          "externalId": { "type": "string", "example": "2075e308-d4a8-44d9-8203-f5a947b8c2f4" },
          "feeToIncomeAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalLoanProductChargeToGLAccountMapper"
            }
          },
          "fundId": { "type": "integer", "format": "int64", "example": 3 },
          "fundSourceAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "goodwillCreditAccountId": { "type": "integer", "format": "int64", "example": 16 },
          "inMultiplesOf": { "type": "integer", "format": "int32", "example": 1 },
          "incomeFromChargeOffFeesAccountId": {
            "type": "integer",
            "format": "int64",
            "example": 10
          },
          "incomeFromChargeOffPenaltyAccountId": {
            "type": "integer",
            "format": "int64",
            "example": 11
          },
          "incomeFromDiscountFeeAccountId": { "type": "integer", "format": "int64", "example": 5 },
          "incomeFromFeeAccountId": { "type": "integer", "format": "int64", "example": 6 },
          "incomeFromGoodwillCreditFeesAccountId": {
            "type": "integer",
            "format": "int64",
            "example": 12
          },
          "incomeFromGoodwillCreditPenaltyAccountId": {
            "type": "integer",
            "format": "int64",
            "example": 13
          },
          "incomeFromPenaltyAccountId": { "type": "integer", "format": "int64", "example": 6 },
          "incomeFromRecoveryAccountId": { "type": "integer", "format": "int64", "example": 7 },
          "loanPortfolioAccountId": { "type": "integer", "format": "int64", "example": 2 },
          "locale": { "type": "string", "example": "en_GB" },
          "maxAnnualEir": {
            "type": "number",
            "description": "Maximum annual EIR percentage. Optional; only for ANNUAL_EIR strategy.",
            "example": 50
          },
          "maxPeriodPaymentRate": { "type": "number", "example": 2 },
          "maxPrincipal": { "type": "number", "example": 50000 },
          "minAnnualEir": {
            "type": "number",
            "description": "Minimum annual EIR percentage. Optional; only for ANNUAL_EIR strategy.",
            "example": 20
          },
          "minPeriodPaymentRate": { "type": "number", "example": 0.5 },
          "minPrincipal": { "type": "number", "example": 1000 },
          "name": { "type": "string", "example": "Working Capital Product 1" },
          "nearBreachId": { "type": "integer", "format": "int64", "example": 1 },
          "npvDayCount": { "type": "integer", "format": "int32", "example": 365 },
          "overpaymentLiabilityAccountId": { "type": "integer", "format": "int64", "example": 9 },
          "paymentAllocation": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostPaymentAllocation" }
          },
          "paymentAmountCalculationStrategy": {
            "type": "string",
            "description": "Payment amount calculation strategy: TPV (default) or ANNUAL_EIR",
            "enum": ["TPV", "ANNUAL_EIR"],
            "example": "TPV"
          },
          "paymentChannelToFundSourceMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalLoanPaymentChannelToFundSourceMappings"
            }
          },
          "penaltyToIncomeAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalLoanProductChargeToGLAccountMapper"
            }
          },
          "periodPaymentRate": { "type": "number", "example": 1 },
          "principal": { "type": "number", "example": 10000 },
          "receivableFeeAccountId": { "type": "integer", "format": "int64", "example": 19 },
          "receivablePenaltyAccountId": { "type": "integer", "format": "int64", "example": 20 },
          "repaymentEvery": { "type": "integer", "format": "int32", "example": 30 },
          "repaymentFrequencyType": {
            "type": "string",
            "enum": ["DAYS", "MONTHS", "YEARS"],
            "example": "DAYS"
          },
          "shortName": { "type": "string", "example": "WCP1" },
          "startDate": { "type": "string", "example": "10 July 2022" },
          "transfersInSuspenseAccountId": { "type": "integer", "format": "int64", "example": 3 },
          "writeOffAccountId": { "type": "integer", "format": "int64", "example": 8 },
          "writeOffReasonsToExpenseMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalPostWriteOffReasonToExpenseAccountMappings"
            }
          }
        }
      },
      "PostWorkingCapitalLoanProductsResponse": {
        "type": "object",
        "description": "PostWorkingCapitalLoanProductsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PostWorkingCapitalLoanTransactionsPaymentDetailRequest": {
        "type": "object",
        "description": "Payment details for transaction request payload",
        "properties": {
          "accountNumber": { "type": "string", "example": "acc123" },
          "bankNumber": { "type": "string", "example": "ban123" },
          "checkNumber": { "type": "string", "example": "che123" },
          "paymentTypeId": {
            "type": "integer",
            "format": "int64",
            "description": "Payment type identifier (e.g. AUTOPAYMENT)",
            "example": 4
          },
          "receiptNumber": { "type": "string", "example": "rec123" },
          "routingCode": { "type": "string", "example": "rou123" }
        }
      },
      "PostWorkingCapitalLoanTransactionsRequest": {
        "type": "object",
        "description": "Request for transaction command: repayment, creditBalanceRefund, discountFee, discountFeeAdjustment, chargeOff, undoChargeOff, writeOff or undoWriteOff",
        "properties": {
          "chargeOffReasonId": {
            "type": "integer",
            "format": "int64",
            "description": "Optional charge-off reason code value id (command=chargeOff)",
            "example": 7
          },
          "classificationId": {
            "type": "integer",
            "format": "int64",
            "description": "Optional code value id for transaction classification",
            "example": 12
          },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "externalId": { "type": "string", "example": "repayment-ext-001" },
          "locale": { "type": "string", "example": "en_GB" },
          "note": { "type": "string", "example": "Repayment note" },
          "paymentDetails": {
            "$ref": "#/components/schemas/PostWorkingCapitalLoanTransactionsPaymentDetailRequest"
          },
          "relatedResourceId": {
            "type": "integer",
            "format": "int64",
            "description": "Disbursement transaction id for discountFee; discount fee transaction id for discountFeeAdjustment",
            "example": 42
          },
          "reversalExternalId": {
            "type": "string",
            "description": "Optional external id for the reversal (command=undoChargeOff, undoWriteOff)",
            "example": "undo-write-off-ext-001"
          },
          "transactionAmount": {
            "type": "number",
            "description": "Transaction amount. For command=recoveryPayment it may not exceed the loan's writtenOffOutstanding",
            "example": 100
          },
          "transactionDate": {
            "type": "string",
            "description": "Transaction date",
            "example": "28 June 2024"
          },
          "writeoffReasonId": {
            "type": "integer",
            "format": "int64",
            "description": "Optional write-off reason code value id (command=writeOff)",
            "example": 3
          }
        }
      },
      "PostWorkingCapitalLoanTransactionsResponse": {
        "type": "object",
        "description": "Response for repayment, creditBalanceRefund, discountFee, or discountFeeAdjustment transaction command",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 2 },
          "loanId": { "type": "integer", "format": "int64", "example": 3 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceExternalId": { "type": "string", "example": "repayment-ext-001" },
          "resourceId": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "PostWorkingCapitalLoansBreachActionRequest": {
        "type": "object",
        "description": "PostWorkingCapitalLoansBreachActionRequest",
        "properties": {
          "action": {
            "type": "string",
            "description": "Breach action type: pause, reschedule, resume, reset, undo reset, disable, enable",
            "example": "pause"
          },
          "dateFormat": { "type": "string", "example": "yyyy-MM-dd" },
          "endDate": {
            "type": "string",
            "description": "End date of the pause period. Must be omitted for resume, reschedule, disable and enable actions",
            "example": "2026-03-12"
          },
          "frequency": {
            "type": "integer",
            "format": "int32",
            "description": "Frequency value (required together with frequencyType)",
            "example": 30
          },
          "frequencyType": {
            "type": "string",
            "description": "Frequency type: DAYS, WEEKS, MONTHS, YEARS (required together with frequency)",
            "example": "DAYS"
          },
          "locale": { "type": "string", "example": "en" },
          "minimumPayment": {
            "type": "number",
            "description": "Minimum payment value (required together with minimumPaymentType)",
            "example": 33.33
          },
          "minimumPaymentType": {
            "type": "string",
            "description": "Minimum payment type: PERCENTAGE, FLAT (required together with minimumPayment)",
            "example": "PERCENTAGE"
          },
          "restartPeriodFromResetDate": {
            "type": "boolean",
            "description": "Optional reset flag. If true for action=reset, starts a new breach period from the reset date",
            "example": true
          },
          "startDate": {
            "type": "string",
            "description": "For pause: start date of the pause period. For resume/disable/enable: the action date, which must be the current business date",
            "example": "2026-03-05"
          }
        }
      },
      "PostWorkingCapitalLoansBreachActionResponse": {
        "type": "object",
        "description": "PostWorkingCapitalLoansBreachActionResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostWorkingCapitalLoansDataTable": {
        "type": "object",
        "description": "PostWorkingCapitalLoansDataTable",
        "example": "List of PostWorkingCapitalLoansDataTable",
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": { "type": "object", "example": "Datatable data" },
            "example": "Datatable data"
          },
          "registeredTableName": { "type": "string", "example": "dt_wc_loan_extra" }
        }
      },
      "PostWorkingCapitalLoansDelinquencyActionRequest": {
        "type": "object",
        "description": "PostWorkingCapitalLoansDelinquencyActionRequest",
        "properties": {
          "action": {
            "type": "string",
            "description": "Delinquency action type: pause, resume or reschedule",
            "example": "pause"
          },
          "dateFormat": { "type": "string", "example": "yyyy-MM-dd" },
          "endDate": {
            "type": "string",
            "description": "End date of the pause period (required for pause, must not be provided for resume)",
            "example": "2026-03-12"
          },
          "frequency": {
            "type": "integer",
            "format": "int32",
            "description": "Frequency value (required together with frequencyType)",
            "example": 30
          },
          "frequencyType": {
            "type": "string",
            "description": "Frequency type: DAYS, WEEKS, MONTHS, YEARS (required together with frequency)",
            "example": "DAYS"
          },
          "locale": { "type": "string", "example": "en" },
          "minimumPayment": {
            "type": "number",
            "description": "Minimum payment value (required together with minimumPaymentType)",
            "example": 2
          },
          "minimumPaymentType": {
            "type": "string",
            "description": "Minimum payment type: PERCENTAGE, FLAT (required together with minimumPayment)",
            "example": "PERCENTAGE"
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the pause period (required for pause) or resume date (required for resume, must be current business date)",
            "example": "2026-03-05"
          },
          "startNewPeriod": { "type": "boolean", "example": false }
        }
      },
      "PostWorkingCapitalLoansDelinquencyActionResponse": {
        "type": "object",
        "description": "PostWorkingCapitalLoansDelinquencyActionResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostWorkingCapitalLoansLoanIdChargesChargeIdRequest": {
        "type": "object",
        "description": "PostWorkingCapitalLoansLoanIdChargesChargeIdRequest",
        "properties": {
          "amount": { "type": "number", "example": 100 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "externalId": { "type": "string", "example": "786444UUUYYH7" },
          "locale": { "type": "string", "example": "en" },
          "note": { "type": "string", "example": "some note" }
        }
      },
      "PostWorkingCapitalLoansLoanIdChargesChargeIdResponse": {
        "type": "object",
        "description": "PostWorkingCapitalLoansLoanIdChargesChargeIdResponse",
        "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": 31 },
          "subResourceExternalId": {
            "type": "string",
            "example": "a1b2c3d4-0000-0000-0000-000000000000"
          },
          "subResourceId": { "type": "integer", "format": "int64", "example": 12 }
        }
      },
      "PostWorkingCapitalLoansLoanIdDisbursementPaymentDetails": {
        "type": "object",
        "description": "Payment details for disbursement (Account No, Cheque No, Routing Code, Receipt No, Bank code)",
        "properties": {
          "accountNumber": { "type": "string", "description": "Account No", "example": "acc123" },
          "bankNumber": { "type": "string", "description": "Bank code", "example": "ban123" },
          "checkNumber": { "type": "string", "description": "Cheque No", "example": "che123" },
          "paymentTypeId": {
            "type": "integer",
            "format": "int32",
            "description": "Payment type id",
            "example": 1
          },
          "receiptNumber": { "type": "string", "description": "Receipt No", "example": "rec123" },
          "routingCode": { "type": "string", "description": "Routing Code", "example": "rou123" }
        }
      },
      "PostWorkingCapitalLoansLoanIdNearBreachActionsRequest": {
        "type": "object",
        "description": "Request body for creating a near breach action on an active Working Capital Loan",
        "properties": {
          "action": {
            "type": "string",
            "description": "The near breach action type",
            "enum": ["RESCHEDULE"],
            "example": "RESCHEDULE"
          },
          "locale": { "type": "string", "example": "en_GB" },
          "nearBreachFrequency": {
            "type": "integer",
            "format": "int32",
            "description": "Near breach evaluation frequency (must be > 0)",
            "example": 7
          },
          "nearBreachFrequencyType": {
            "type": "string",
            "description": "Near breach frequency type",
            "enum": ["DAYS", "WEEKS", "MONTHS"],
            "example": "DAYS"
          },
          "nearBreachThreshold": {
            "type": "number",
            "description": "Near breach threshold percentage (must be > 0 and <= 100)",
            "example": 40
          }
        },
        "required": [
          "action",
          "nearBreachFrequency",
          "nearBreachFrequencyType",
          "nearBreachThreshold"
        ]
      },
      "PostWorkingCapitalLoansLoanIdRequest": {
        "type": "object",
        "description": "Request for state transition: approve, reject, undoapproval, disburse, undodisbursal",
        "properties": {
          "actualDisbursementDate": {
            "type": "string",
            "description": "Required for disburse - Actual Disbursement date",
            "example": "28 June 2024"
          },
          "approvedLoanAmount": {
            "type": "number",
            "description": "Approved principal amount (optional, defaults to proposed principal)",
            "example": 10000
          },
          "approvedOnDate": {
            "type": "string",
            "description": "Date of approval",
            "example": "15 January 2024"
          },
          "classificationId": {
            "type": "integer",
            "format": "int64",
            "description": "Optional disbursement transaction classification: id of a code value under system code working_capital_loan_disbursement_classification",
            "example": 1
          },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "discountAmount": {
            "type": "number",
            "description": "Discount amount (cannot exceed creation-time discount)",
            "example": 0
          },
          "discountExternalId": {
            "type": "string",
            "description": "External ID for the discount fee transaction created during disburse; optional. Only accepted when discountAmount is greater than 0. When omitted and auto-generation is enabled, a UUID is generated.",
            "example": "ext-discount-001"
          },
          "expectedDisbursementDate": {
            "type": "string",
            "description": "Expected disbursement date",
            "example": "1 February 2024"
          },
          "externalId": {
            "type": "string",
            "description": "External ID; optional for disburse",
            "example": "ext-disburse-001"
          },
          "locale": { "type": "string", "example": "en_GB" },
          "note": { "type": "string", "example": "Approval/Rejection/Disbursal Note" },
          "paymentDetails": {
            "$ref": "#/components/schemas/PostWorkingCapitalLoansLoanIdDisbursementPaymentDetails"
          },
          "rejectedOnDate": {
            "type": "string",
            "description": "Date of rejection",
            "example": "15 January 2024"
          },
          "transactionAmount": {
            "type": "number",
            "description": "Disbursement amount; required for disburse. Cannot exceed approved principal.",
            "example": 1000
          }
        }
      },
      "PostWorkingCapitalLoansLoanIdResponse": {
        "type": "object",
        "description": "PostWorkingCapitalLoansLoanIdResponse",
        "properties": {
          "changes": { "type": "object" },
          "clientId": { "type": "integer", "format": "int64", "example": 6 },
          "loanExternalId": { "type": "string", "example": "95174ff9-1a75-4d72-a413-6f9b1cb988b7" },
          "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": "95174ff9-1a75-4d72-a413-6f9b1cb988b7"
          },
          "subResourceId": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "PostWorkingCapitalLoansOriginatorData": {
        "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
          }
        }
      },
      "PostWorkingCapitalLoansRequest": {
        "type": "object",
        "description": "PostWorkingCapitalLoansRequest",
        "properties": {
          "accountNo": { "type": "string", "example": "WCL-1" },
          "annualEir": {
            "type": "number",
            "description": "Annual EIR percentage (6 decimal places max). Required for ANNUAL_EIR strategy products.",
            "example": 43.7562
          },
          "breachGraceDays": {
            "type": "integer",
            "format": "int32",
            "description": "Number of days to shift the start of the first breach schedule period after disbursement",
            "example": 0
          },
          "breachId": { "type": "integer", "format": "int64", "example": 1 },
          "breachStartType": {
            "type": "string",
            "description": "Breach start type: LOAN_CREATION or DISBURSEMENT",
            "example": "DISBURSEMENT"
          },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "datatables": {
            "type": "array",
            "example": "List of PostWorkingCapitalLoansDataTable",
            "items": { "$ref": "#/components/schemas/PostWorkingCapitalLoansDataTable" }
          },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "delinquencyBucketId": { "type": "integer", "format": "int64", "example": 1 },
          "delinquencyGraceDays": { "type": "integer", "format": "int32", "example": 3 },
          "delinquencyStartType": {
            "type": "string",
            "description": "Delinquency start type: LOAN_CREATION or DISBURSEMENT",
            "example": "LOAN_CREATION"
          },
          "discount": { "type": "number", "example": 0 },
          "expectedDisbursementDate": { "type": "string", "example": "1 February 2024" },
          "externalId": { "type": "string", "example": "ext-id-001" },
          "fundId": { "type": "integer", "format": "int64", "example": 1 },
          "locale": { "type": "string", "example": "en_GB" },
          "nearBreachId": { "type": "integer", "format": "int64", "example": 1 },
          "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/PostWorkingCapitalLoansOriginatorData" }
          },
          "paymentAllocation": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostPaymentAllocationRule" }
          },
          "periodPaymentRate": { "type": "number", "example": 1 },
          "principalAmount": {
            "type": "number",
            "description": "Principal (disbursement) amount",
            "example": 10000
          },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "repaymentEvery": { "type": "integer", "format": "int32", "example": 30 },
          "repaymentFrequencyType": {
            "type": "string",
            "enum": ["DAYS", "MONTHS", "YEARS"],
            "example": "DAYS"
          },
          "submittedOnDate": { "type": "string", "example": "15 January 2024" },
          "submittedOnNote": { "type": "string", "example": "Note when submitting" },
          "totalPaymentVolume": { "type": "number", "example": 10500 }
        },
        "required": ["clientId", "principalAmount", "productId"]
      },
      "PostWorkingCapitalLoansResponse": {
        "type": "object",
        "description": "PostWorkingCapitalLoansResponse",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PostWriteOffReasonToExpenseAccountMappings": {
        "type": "object",
        "description": "PostWriteOffReasonToExpenseAccountMappings",
        "properties": {
          "expenseAccountId": { "type": "string", "example": "1" },
          "writeOffReasonCodeValueId": { "type": "string", "example": "1" }
        }
      },
      "PostalAddress": {
        "type": "object",
        "properties": {
          "addressLine1": { "type": "string" },
          "addressLine2": { "type": "string" },
          "city": { "type": "string" },
          "country": { "type": "string" },
          "postalCode": { "type": "string" },
          "stateProvince": { "type": "string" }
        }
      },
      "ProcessingResultLookup": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "processingResult": { "type": "string" }
        }
      },
      "ProductMixCreateRequest": {
        "type": "object",
        "properties": {
          "productId": { "type": "integer", "format": "int64" },
          "restrictedProducts": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64",
              "exclusiveMinimum": true,
              "minimum": 0
            },
            "minItems": 1
          }
        },
        "required": ["restrictedProducts"]
      },
      "ProductMixCreateResponse": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "productId": { "type": "integer", "format": "int64" }
        }
      },
      "ProductMixData": {
        "type": "object",
        "properties": {
          "allowedProducts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductData" }
          },
          "productId": { "type": "integer", "format": "int64" },
          "productName": { "type": "string" },
          "productOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductData" }
          },
          "restrictedProducts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductData" }
          }
        }
      },
      "ProductMixDeleteResponse": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "productId": { "type": "integer", "format": "int64" }
        }
      },
      "ProductMixUpdateRequest": {
        "type": "object",
        "properties": {
          "productId": { "type": "integer", "format": "int64" },
          "restrictedProducts": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64",
              "exclusiveMinimum": true,
              "minimum": 0
            }
          }
        },
        "required": ["restrictedProducts"]
      },
      "ProductMixUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "productId": { "type": "integer", "format": "int64" }
        }
      },
      "ProgressiveLoanInterestScheduleModel": {
        "type": "object",
        "properties": {
          "copy": { "type": "boolean" },
          "emirecalculationEnabled": { "type": "boolean" },
          "empty": { "type": "boolean" },
          "interestPauseForEmiCalculationEnabled": { "type": "boolean" },
          "lastRepaymentPeriod": { "$ref": "#/components/schemas/RepaymentPeriod" },
          "loanTermInDays": { "type": "integer", "format": "int32" },
          "maturityDate": { "type": "string", "format": "date" },
          "startDate": { "type": "string", "format": "date" },
          "totalCreditedPrincipal": { "$ref": "#/components/schemas/Money" },
          "totalDueInterest": { "$ref": "#/components/schemas/Money" },
          "totalDuePrincipal": { "$ref": "#/components/schemas/Money" },
          "totalOutstandingPrincipal": { "$ref": "#/components/schemas/Money" },
          "totalPaidInterest": { "$ref": "#/components/schemas/Money" },
          "totalPaidPrincipal": { "$ref": "#/components/schemas/Money" }
        },
        "required": ["lastRepaymentPeriod"]
      },
      "ProjectedAmortizationScheduleData": {
        "type": "object",
        "properties": {
          "discountFeeAmount": { "type": "number" },
          "effectiveInterestRate": { "type": "number" },
          "expectedDisbursementDate": { "type": "string", "format": "date" },
          "expectedPaymentAmount": { "type": "number" },
          "netDisbursementAmount": { "type": "number" },
          "npvDayCount": { "type": "integer", "format": "int32" },
          "originalPaymentNumber": { "type": "integer", "format": "int32" },
          "payments": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ProjectedAmortizationSchedulePaymentData" }
          },
          "periodPaymentRate": { "type": "number" },
          "totalPaymentVolume": { "type": "number" }
        }
      },
      "ProjectedAmortizationScheduleGenerateRequest": {
        "type": "object",
        "properties": {
          "discountFeeAmount": { "type": "number" },
          "expectedDisbursementDate": { "type": "string", "format": "date" },
          "netDisbursementAmount": { "type": "number" },
          "npvDayCount": { "type": "integer", "format": "int32" },
          "periodPaymentRate": { "type": "number" },
          "totalPaymentVolume": { "type": "number" }
        }
      },
      "ProjectedAmortizationSchedulePaymentData": {
        "type": "object",
        "properties": {
          "actualAmortizationAmount": { "type": "number" },
          "actualBalance": { "type": "number" },
          "actualDiscountFeeBalance": { "type": "number" },
          "actualPaymentAmount": { "type": "number" },
          "expectedAmortizationAmount": { "type": "number" },
          "expectedBalance": { "type": "number" },
          "expectedDiscountFeeBalance": { "type": "number" },
          "expectedPaymentAmount": { "type": "number" },
          "paymentDate": { "type": "string", "format": "date" },
          "paymentNo": { "type": "integer", "format": "int32" }
        }
      },
      "Providers": { "type": "object" },
      "ProvisionEntryRequest": {
        "type": "object",
        "properties": {
          "createjournalentries": { "type": "boolean" },
          "date": { "type": "string" },
          "dateFormat": { "type": "string" },
          "locale": { "type": "string" }
        }
      },
      "ProvisioningCategoryData": {
        "type": "object",
        "properties": {
          "categoryDescription": { "type": "string" },
          "categoryName": { "type": "string" },
          "id": { "type": "integer", "format": "int64" }
        }
      },
      "ProvisioningCriteriaData": {
        "type": "object",
        "properties": {
          "createdBy": { "type": "string" },
          "criteriaId": { "type": "integer", "format": "int64" },
          "criteriaName": { "type": "string" },
          "definitions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ProvisioningCriteriaDefinitionData" }
          },
          "glAccounts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GLAccountData" }
          },
          "loanProducts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductData" }
          },
          "selectedLoanProducts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductData" }
          }
        }
      },
      "ProvisioningCriteriaDefinitionData": {
        "type": "object",
        "properties": {
          "categoryId": { "type": "integer", "format": "int64" },
          "categoryName": { "type": "string" },
          "expenseAccount": { "type": "integer", "format": "int64" },
          "expenseCode": { "type": "string" },
          "expenseName": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "liabilityAccount": { "type": "integer", "format": "int64" },
          "liabilityCode": { "type": "string" },
          "liabilityName": { "type": "string" },
          "maxAge": { "type": "integer", "format": "int64" },
          "minAge": { "type": "integer", "format": "int64" },
          "provisioningPercentage": { "type": "number" }
        }
      },
      "ProvisioningEntryData": {
        "type": "object",
        "properties": {
          "createdById": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date" },
          "createdUser": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "journalEntry": { "type": "boolean" },
          "modifiedById": { "type": "integer", "format": "int64" },
          "modifiedUser": { "type": "string" },
          "provisioningEntries": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductProvisioningEntryData" }
          },
          "reservedAmount": { "type": "number" }
        }
      },
      "PutAccountNumberFormatsRequest": {
        "type": "object",
        "description": "PutAccountNumberFormatsRequest",
        "properties": { "prefixType": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PutAccountNumberFormatsResponse": {
        "type": "object",
        "description": "PutAccountNumberFormatsResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutAccountNumberFormatschangesSwagger" },
          "resourceId": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "PutAccountNumberFormatschangesSwagger": {
        "type": "object",
        "properties": { "prefixType": { "type": "integer", "format": "int64" } }
      },
      "PutAccountingRulesResponse": {
        "type": "object",
        "description": "PutAccountingRulesResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutAccountingRulesResponsechangesSwagger" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutAccountingRulesResponsechangesSwagger": {
        "type": "object",
        "properties": { "name": { "type": "string", "example": "Employee Salary posting rule" } }
      },
      "PutAccountsChanges": {
        "type": "object",
        "properties": {
          "applicationDate": { "type": "string", "example": "01 April 2016" },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "requestedShares": { "type": "integer", "format": "int32", "example": 20 }
        }
      },
      "PutAccountsTypeAccountIdRequest": {
        "type": "object",
        "description": "PutAccountsTypeAccountIdRequest",
        "properties": {
          "applicationDate": { "type": "string", "example": "01 April 2016" },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "requestedShares": { "type": "integer", "format": "int32", "example": 20 }
        }
      },
      "PutAccountsTypeAccountIdResponse": {
        "type": "object",
        "description": "PutAccountsTypeAccountIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutAccountsChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutCentersCenterIdRequest": {
        "type": "object",
        "description": "PutCentersCenterIdRequest",
        "properties": {
          "externalId": { "type": "string", "example": "externalId1" },
          "name": { "type": "string", "example": "First Center (No groups)" },
          "staffId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutCentersCenterIdResponse": {
        "type": "object",
        "description": "PutCentersCenterIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutCentersChanges" },
          "groupId": { "type": "integer", "format": "int64", "example": 8 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 8 }
        }
      },
      "PutCentersChanges": {
        "type": "object",
        "properties": {
          "externalId": { "type": "string", "example": "externalId1" },
          "name": { "type": "string", "example": "First Center (No groups) - modified" },
          "staffId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "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 }
        }
      },
      "PutCodeValueDataResponse": {
        "type": "object",
        "description": "PutCodeValueDataResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutCodeValuechangesSwagger" },
          "resourceId": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "PutCodeValuechangesSwagger": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "example": "Passport information" },
          "name": { "type": "string", "example": "Passport" },
          "position": { "type": "integer", "format": "int32", "example": 0 }
        }
      },
      "PutCodeValuesDataRequest": {
        "type": "object",
        "description": "PutCodeValuesDataRequest",
        "properties": {
          "description": { "type": "string", "example": "Passport information" },
          "isActive": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Passport" },
          "position": { "type": "integer", "format": "int32", "example": 0 }
        }
      },
      "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 }
        }
      },
      "PutDataTablesAppTableIdDatatableIdResponse": {
        "type": "object",
        "description": "PutDataTablesAppTableIdDatatableIdResponse ",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "transactionId": { "type": "string", "example": "1" }
        }
      },
      "PutDataTablesAppTableIdResponse": {
        "type": "object",
        "description": "PutDataTablesAppTableIdResponse",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutDataTablesRequest": {
        "type": "object",
        "description": "PutDataTablesRequest",
        "properties": {
          "addColumns": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PutDataTablesRequestAddColumns" }
          },
          "apptableName": { "type": "string", "example": "m_client" },
          "changeColumns": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PutDataTablesRequestChangeColumns" }
          },
          "dropColumns": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PutDataTablesRequestDropColumns" }
          }
        }
      },
      "PutDataTablesRequestAddColumns": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "Gender" },
          "indexed": { "type": "boolean", "description": "Defaults to false", "example": true },
          "mandatory": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Question" },
          "type": { "type": "string", "example": "Dropdown" },
          "unique": { "type": "boolean", "example": true }
        }
      },
      "PutDataTablesRequestChangeColumns": {
        "type": "object",
        "properties": {
          "code": { "type": "string", "example": "Gender" },
          "indexed": { "type": "boolean", "description": "Defaults to false", "example": true },
          "mandatory": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Question" },
          "newCode": { "type": "string", "example": "Gender2" },
          "newName": { "type": "string", "example": "Question 2" },
          "unique": { "type": "boolean", "example": true }
        }
      },
      "PutDataTablesRequestDropColumns": {
        "type": "object",
        "properties": { "name": { "type": "string", "example": "Gender_cd_Question" } }
      },
      "PutDataTablesResponse": {
        "type": "object",
        "description": "PutDataTablesResponse",
        "properties": {
          "resourceIdentifier": { "type": "string", "example": "extra_client_details" }
        }
      },
      "PutDelinquencyBucketResponse": {
        "type": "object",
        "description": "PutDelinquencyBucketResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PutDelinquencyRangeResponse": {
        "type": "object",
        "description": "PutDelinquencyRangeResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/DelinquencyRangeRequest" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutExternalAssetOwnerLoanProductAttributeRequest": {
        "type": "object",
        "description": "PutExternalAssetOwnerLoanProductAttributeRequest",
        "properties": {
          "attributeKey": {
            "type": "string",
            "description": "Attribute key, one of the keys returned by the loan product attributes template endpoint, e.g. SETTLEMENT_MODEL or EXCLUDED_TRANSACTION_TYPES.",
            "example": "SETTLEMENT_MODEL"
          },
          "attributeValue": {
            "type": "string",
            "description": "Attribute value. For multi value attributes such as EXCLUDED_TRANSACTION_TYPES this is a comma separated list, e.g. BUY_DOWN_FEE,BUY_DOWN_FEE_ADJUSTMENT.",
            "example": "DELAYED_SETTLEMENT_DISABLED"
          }
        }
      },
      "PutExternalServiceRequest": {
        "type": "object",
        "description": "PutExternalServiceRequest",
        "properties": {
          "password": { "type": "string", "example": "XXXX" },
          "username": { "type": "string", "example": "test@mifos.org" }
        }
      },
      "PutFinancialActivityAccountsResponse": {
        "type": "object",
        "description": "PutFinancialActivityAccountsResponse",
        "properties": {
          "comments": {
            "$ref": "#/components/schemas/PutFinancialActivityAccountscommentsSwagger"
          },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutFinancialActivityAccountscommentsSwagger": {
        "type": "object",
        "properties": { "glAccountId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PutFixedDepositAccountsAccountIdRequest": {
        "type": "object",
        "description": "PutFixedDepositAccountsAccountIdRequest",
        "properties": {
          "depositAmount": { "type": "number", "format": "float", "example": 6000 },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PutFixedDepositAccountsAccountIdResponse": {
        "type": "object",
        "description": "PutFixedDepositAccountsAccountIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutFixedDepositAccountsChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutFixedDepositAccountsChanges": {
        "type": "object",
        "properties": {
          "depositAmount": { "type": "number", "format": "float", "example": 6000 },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PutFixedDepositProductsChanges": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "example": "Fixed deposit product new offerings" },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 5 }
        }
      },
      "PutFixedDepositProductsProductIdRequest": {
        "type": "object",
        "description": "PutFixedDepositProductsProductIdRequest",
        "properties": {
          "description": { "type": "string", "example": "Fixed deposit product new offerings" },
          "locale": { "type": "string", "example": "en" },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 5 },
          "minDepositTermTypeId": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "PutFixedDepositProductsProductIdResponse": {
        "type": "object",
        "description": "PutFixedDepositProductsProductIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutFixedDepositProductsChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutFundsFundIdRequest": {
        "type": "object",
        "description": "PutFundsFundIdRequest",
        "properties": { "name": { "type": "string", "example": "EU Agri Fund (2010-2020)" } }
      },
      "PutFundsFundIdResponse": {
        "type": "object",
        "description": "PutFundsFundIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutFundsFundIdRequest" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutGLAccountsRequest": {
        "type": "object",
        "description": "PutGLAccountsRequest",
        "properties": {
          "description": { "type": "string", "example": "Desc" },
          "disabled": { "type": "boolean", "example": false },
          "glCode": { "type": "string", "example": "100001" },
          "manualEntriesAllowed": { "type": "boolean", "example": true },
          "name": { "type": "string", "example": "Cash at Bangalore" },
          "parentId": { "type": "integer", "format": "int64", "example": 1 },
          "tagId": { "type": "integer", "format": "int64", "example": 10 },
          "type": { "type": "integer", "format": "int32", "example": 1 },
          "usage": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "PutGLAccountsResponse": {
        "type": "object",
        "description": "PutGLAccountsResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutGLAccountsResponsechangesSwagger" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutGLAccountsResponsechangesSwagger": {
        "type": "object",
        "properties": { "name": { "type": "string", "example": "Cash at Bangalore" } }
      },
      "PutGlClosuresRequest": {
        "type": "object",
        "description": "PutGlClosuresRequest",
        "properties": {
          "comments": { "type": "string", "example": "All transactions verified by Johnny Cash" }
        }
      },
      "PutGlClosuresResponse": {
        "type": "object",
        "description": "PutGlClosuresResponse",
        "properties": {
          "comments": { "type": "string", "example": "All transactions verified by Johnny Cash" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 9 }
        }
      },
      "PutGlobalConfigurationsRequest": {
        "type": "object",
        "description": "PutGlobalConfigurationsRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "dateValue": { "type": "string", "example": "20 September 2011" },
          "enabled": { "type": "boolean", "example": true },
          "locale": { "type": "string", "example": "en" },
          "stringValue": { "type": "string", "example": "random text" },
          "value": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "PutGlobalConfigurationsResponse": {
        "type": "object",
        "description": "PutGlobalConfigurationsResponse",
        "properties": {
          "changes": {
            "$ref": "#/components/schemas/PutGlobalConfigurationsResponsechangesSwagger"
          },
          "resourceId": { "type": "integer", "format": "int64", "example": 4 }
        }
      },
      "PutGlobalConfigurationsResponsechangesSwagger": {
        "type": "object",
        "properties": {
          "dateValue": { "type": "string", "example": "20 September 2011" },
          "enabled": { "type": "boolean", "example": true },
          "stringValue": { "type": "string", "example": "random text" },
          "value": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "PutGroupsGroupIdChanges": {
        "type": "object",
        "properties": { "name": { "type": "string", "example": "First Group (changed)" } }
      },
      "PutGroupsGroupIdRequest": {
        "type": "object",
        "description": "PutGroupsGroupIdRequest",
        "properties": { "name": { "type": "string", "example": "First Group (changed)" } }
      },
      "PutGroupsGroupIdResponse": {
        "type": "object",
        "description": "PutGroupsGroupIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutGroupsGroupIdChanges" },
          "groupId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutHolidaysHolidayIdRequest": {
        "type": "object",
        "description": "PutHolidaysHolidayIdRequest",
        "properties": {
          "description": {
            "type": "string",
            "example": "Holiday for Independence day celebration"
          },
          "name": { "type": "string", "example": "Independence day" }
        }
      },
      "PutHolidaysHolidayIdResponse": {
        "type": "object",
        "description": "PutHolidaysHolidayIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutHolidaysHolidayIdResponseChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutHolidaysHolidayIdResponseChanges": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "example": "Holiday for Independence day celebration"
          },
          "name": { "type": "string", "example": "Independence day" }
        }
      },
      "PutJobsJobIDRequest": {
        "type": "object",
        "description": "PutJobsJobsIDRequest",
        "properties": {
          "active": { "type": "boolean", "example": false },
          "cronExpression": { "type": "string", "example": "0 0 22 1/1 * ? *" },
          "displayName": { "type": "string", "example": "Update loan Summary" }
        }
      },
      "PutLoanChanges": {
        "type": "object",
        "properties": {
          "locale": { "type": "string", "example": "en_GB" },
          "principal": { "type": "number", "format": "double" }
        }
      },
      "PutLoanOriginatorsRequest": {
        "type": "object",
        "description": "PutLoanOriginatorsRequest",
        "properties": {
          "channelTypeId": { "type": "integer", "format": "int64", "example": 2 },
          "name": { "type": "string", "example": "Updated Name" },
          "originatorTypeId": { "type": "integer", "format": "int64", "example": 2 },
          "status": { "type": "string", "example": "INACTIVE" }
        }
      },
      "PutLoanOriginatorsResponse": {
        "type": "object",
        "description": "PutLoanOriginatorsResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "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 },
          "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": "mifos-standard-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 }
        }
      },
      "PutLoansApprovedAmountChanges": {
        "type": "object",
        "description": "PutLoansApprovedAmountChanges",
        "properties": {
          "locale": { "type": "string", "example": "en_GB" },
          "newApprovedAmount": { "type": "number", "example": 1000 },
          "oldApprovedAmount": { "type": "number", "example": 1000 }
        }
      },
      "PutLoansApprovedAmountRequest": {
        "type": "object",
        "description": "PutLoansApprovedAmountRequest",
        "properties": {
          "amount": { "type": "number", "example": 1000 },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PutLoansApprovedAmountResponse": {
        "type": "object",
        "description": "PutLoansApprovedAmountResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutLoansApprovedAmountChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 6 },
          "groupId": { "type": "integer", "format": "int64", "example": 10 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceExternalId": {
            "type": "string",
            "example": "95174ff9-1a75-4d72-a413-6f9b1cb988b7"
          },
          "resourceId": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "PutLoansAvailableDisbursementAmountChanges": {
        "type": "object",
        "description": "PutLoansAvailableDisbursementAmountChanges",
        "properties": {
          "locale": { "type": "string", "example": "en_GB" },
          "newApprovedAmount": { "type": "number", "example": 1000 },
          "newAvailableDisbursementAmount": { "type": "number", "example": 1000 },
          "oldApprovedAmount": { "type": "number", "example": 1000 },
          "oldAvailableDisbursementAmount": { "type": "number", "example": 1000 }
        }
      },
      "PutLoansAvailableDisbursementAmountRequest": {
        "type": "object",
        "description": "PutLoansAvailableDisbursementAmountRequest",
        "properties": {
          "amount": { "type": "number", "example": 1000 },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PutLoansAvailableDisbursementAmountResponse": {
        "type": "object",
        "description": "PutLoansAvailableDisbursementAmountResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutLoansAvailableDisbursementAmountChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 6 },
          "groupId": { "type": "integer", "format": "int64", "example": 10 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceExternalId": {
            "type": "string",
            "example": "95174ff9-1a75-4d72-a413-6f9b1cb988b7"
          },
          "resourceId": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "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" }
        }
      },
      "PutLoansLoanIdChargesChargeIdRequest": {
        "type": "object",
        "description": " PutLoansLoanIdChargesChargeIdRequest",
        "properties": {
          "amount": { "type": "number", "format": "double", "example": 60 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "dueDate": { "type": "string", "example": "27 March 2013" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PutLoansLoanIdChargesChargeIdResponse": {
        "type": "object",
        "description": "PutLoansLoanIdChargesChargeIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutLoansLoanIdChargesChargeIdRequest" },
          "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": 6 }
        }
      },
      "PutLoansLoanIdCollateral": {
        "type": "object",
        "properties": {
          "clientCollateralId": { "type": "integer", "format": "int64", "example": 1 },
          "quantity": { "type": "number", "example": 1 }
        }
      },
      "PutLoansLoanIdCollateralsCollateralIdResponse": {
        "type": "object",
        "description": "PutLoansLoanIdCollateralsCollateralIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/LoansLoanIdCollateralsRequest" },
          "loanId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 12 }
        }
      },
      "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 }
        }
      },
      "PutLoansLoanIdDisbursementsDisbursementIdRequest": {
        "type": "object",
        "description": "PutLoansLoanIdDisbursementsDisbursementIdRequest",
        "properties": {
          "approvedLoanAmount": { "type": "number", "example": 5000 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "expectedDisbursementDate": { "type": "string", "example": "01 March 2014" },
          "locale": { "type": "string", "example": "en" },
          "updatedExpectedDisbursementDate": {
            "type": "string",
            "description": "The new expected disbursement date of the tranche",
            "example": "01 March 2014"
          },
          "updatedPrincipal": {
            "type": "number",
            "description": "The new principal of the tranche",
            "example": 900
          }
        }
      },
      "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": "mifos-standard-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 }
        }
      },
      "PutOfficesOfficeIdRequest": {
        "type": "object",
        "description": "PutOfficesOfficeIdRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "externalId": { "type": "string", "example": "SYS54-88" },
          "locale": { "type": "string", "example": "en" },
          "name": { "type": "string", "example": "Name is updated" },
          "openingDate": { "type": "string", "example": "01 July 2007" }
        }
      },
      "PutOfficesOfficeIdResponse": {
        "type": "object",
        "description": "PutOfficesOfficeIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutOfficesOfficeIdResponseChanges" },
          "officeId": { "type": "integer", "format": "int64", "example": 3 },
          "resourceId": { "type": "integer", "format": "int64", "example": 3 }
        }
      },
      "PutOfficesOfficeIdResponseChanges": {
        "type": "object",
        "properties": { "name": { "type": "string", "example": "Name is updated" } }
      },
      "PutPasswordPreferencesTemplateRequest": {
        "type": "object",
        "description": "PutPasswordPreferencesTemplateRequest",
        "properties": {
          "validationPolicyId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutPermissionsRequest": {
        "type": "object",
        "description": "PutPermissionsRequest",
        "properties": {
          "permissions": {
            "type": "object",
            "additionalProperties": { "type": "boolean", "example": false },
            "example": "\"CREATE_GUARANTOR\":true,\n    \"CREATE_CLIENT\":true"
          }
        }
      },
      "PutProductsChanges": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "example": "Share Product Description." },
          "locale": { "type": "string", "example": "en" },
          "unitPrice": { "type": "number", "format": "double", "example": 5 }
        }
      },
      "PutProductsTypeProductIdRequest": {
        "type": "object",
        "description": "PutProductsTypeProductIdRequest",
        "properties": {
          "description": { "type": "string", "example": "Share Product Description." },
          "locale": { "type": "string", "example": "en" },
          "unitPrice": { "type": "number", "format": "double", "example": 5 }
        }
      },
      "PutProductsTypeProductIdResponse": {
        "type": "object",
        "description": "PutProductsTypeProductIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutProductsChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutProvisioningCriteriaRequest": {
        "type": "object",
        "description": "PutProvisioningCriteriaRequest",
        "properties": {
          "criteriaName": { "type": "string", "example": "High Risk Products Criteria" },
          "definitions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ProvisioningCriteriaDefinitionData" }
          },
          "loanProducts": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/LoanProductData" }
          }
        }
      },
      "PutProvisioningCriteriaResponse": {
        "type": "object",
        "description": "PutProvisioningCriteriaResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutProvisioningCriteriaResponseChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutProvisioningCriteriaResponseChanges": {
        "type": "object",
        "properties": {
          "criteriaName": { "type": "string", "example": "High Risk Products Criteria" }
        }
      },
      "PutProvisioningEntriesRequest": {
        "type": "object",
        "description": "PutProvisioningEntriesRequest",
        "properties": { "command": { "type": "string", "example": "recreateprovisioningentry" } }
      },
      "PutProvisioningEntriesResponse": {
        "type": "object",
        "description": "PutProvisioningEntriesResponse",
        "properties": { "resourceId": { "type": "integer", "format": "int64", "example": 1 } }
      },
      "PutRecurringDepositAccountsAccountIdRequest": {
        "type": "object",
        "description": "PutRecurringDepositAccountsAccountIdRequest",
        "properties": {
          "depositAmount": { "type": "integer", "format": "int32", "example": 6000 },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PutRecurringDepositAccountsAccountIdResponse": {
        "type": "object",
        "description": "PutRecurringDepositAccountsAccountIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutRecurringDepositAccountsChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutRecurringDepositAccountsChanges": {
        "type": "object",
        "properties": {
          "depositAmount": { "type": "integer", "format": "int32", "example": 6000 },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PutRecurringDepositProductsChanges": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "example": "Recurring deposit product new offerings" },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 5 }
        }
      },
      "PutRecurringDepositProductsRequest": {
        "type": "object",
        "description": "PutRecurringDepositProductsRequest",
        "properties": {
          "description": { "type": "string", "example": "Recurring deposit product new offerings" },
          "locale": { "type": "string", "example": "en" },
          "minDepositTerm": { "type": "integer", "format": "int32", "example": 5 },
          "minDepositTermTypeId": { "type": "integer", "format": "int32", "example": 1 }
        }
      },
      "PutRecurringDepositProductsResponse": {
        "type": "object",
        "description": "PutRecurringDepositProductsResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutRecurringDepositProductsChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutReportMailingJobsRequest": {
        "type": "object",
        "description": "PutReportMailingJobsRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd-MM-yyyy HH:mm:ss" },
          "locale": { "type": "string", "example": "en_GB" },
          "startDateTime": { "type": "string", "format": "date-time" }
        }
      },
      "PutReportMailingJobsResponse": {
        "type": "object",
        "description": "PutReportMailingJobsResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutReportMailingJobsResponseChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutReportMailingJobsResponseChanges": {
        "type": "object",
        "properties": { "startDateTime": { "type": "string", "format": "date-time" } }
      },
      "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)" }
        }
      },
      "PutSavingsAccountsAccountIdRequest": {
        "type": "object",
        "description": "PutSavingsAccountsAccountIdRequest",
        "properties": {
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "locale": { "type": "string", "example": "en" },
          "nominalAnnualInterestRate": {
            "type": "number",
            "format": "double",
            "example": 5.9999999999
          },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "submittedOnDate": { "type": "string", "example": "01 March 2011" },
          "withdrawalFeeForTransfers": { "type": "boolean", "example": true }
        }
      },
      "PutSavingsAccountsAccountIdResponse": {
        "type": "object",
        "description": "PutSavingsAccountsAccountIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutSavingsAccountsChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 2 },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutSavingsAccountsChanges": {
        "type": "object",
        "properties": {
          "locale": { "type": "string", "example": "en" },
          "nominalAnnualInterestRate": {
            "type": "number",
            "format": "double",
            "example": 5.9999999999
          },
          "submittedOnDate": { "type": "string", "example": "01 March 2011" }
        }
      },
      "PutSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdRequest": {
        "type": "object",
        "description": "PutSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdRequest",
        "properties": {
          "amount": { "type": "number", "format": "float", "example": 60 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "dueDate": { "type": "string", "example": "27 March 2013" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PutSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse": {
        "type": "object",
        "description": "PutSavingsAccountsSavingsAccountIdChargesSavingsAccountChargeIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutSavingsChanges" },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 6 },
          "savingsId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutSavingsChanges": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "example": "Passbook Savings Lite." },
          "interestRate": { "type": "number", "format": "double", "example": 5.73 },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PutSavingsProductsProductIdRequest": {
        "type": "object",
        "description": "PutSavingsProductsProductIdRequest",
        "properties": {
          "accountingRule": { "type": "integer", "format": "int32", "example": 1 },
          "allowOverdraft": { "type": "boolean", "example": false },
          "currencyCode": { "type": "string", "example": "USD" },
          "description": { "type": "string", "example": "Passbook Savings Lite." },
          "digitsAfterDecimal": { "type": "integer", "format": "int32", "example": 2 },
          "enforceMinRequiredBalance": { "type": "boolean", "example": false },
          "feesReceivableAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "inMultiplesOf": { "type": "integer", "format": "int32", "example": 0 },
          "incomeFromFeeAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "incomeFromInterestId": { "type": "integer", "format": "int64", "example": 1 },
          "incomeFromPenaltyAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "interestCalculationDaysInYearType": {
            "type": "integer",
            "format": "int32",
            "example": 365
          },
          "interestCalculationType": { "type": "integer", "format": "int32", "example": 1 },
          "interestCompoundingPeriodType": { "type": "integer", "format": "int32", "example": 1 },
          "interestOnSavingsAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "interestPayableAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "interestPostingPeriodType": { "type": "integer", "format": "int32", "example": 4 },
          "interestRate": { "type": "number", "format": "double", "example": 5.73 },
          "interestReceivableAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "locale": { "type": "string", "example": "en" },
          "minRequiredOpeningBalance": { "type": "number", "example": 10000 },
          "name": { "type": "string", "example": "Passbook Savings" },
          "nominalAnnualInterestRate": { "type": "number", "format": "double", "example": 5 },
          "nominalAnnualInterestRateOverdraft": { "type": "number", "example": 21 },
          "overdraftLimit": { "type": "number", "example": 10000 },
          "overdraftPortfolioControlId": { "type": "integer", "format": "int64", "example": 1 },
          "penaltiesReceivableAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsControlAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "savingsReferenceAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "shortName": { "type": "string", "example": "PBSV" },
          "transfersInSuspenseAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "withHoldTax": { "type": "boolean", "example": false },
          "withdrawalFeeForTransfers": { "type": "boolean", "example": false },
          "writeOffAccountId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutSavingsProductsProductIdResponse": {
        "type": "object",
        "description": "PutSavingsProductsProductIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutSavingsChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutStandingInstructionsStandingInstructionIdResponse": {
        "type": "object",
        "description": "PutStandingInstructionsStandingInstructionIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutUpdateStandingInstructionChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 20 }
        }
      },
      "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 }
        }
      },
      "PutTellersRequest": {
        "type": "object",
        "description": "PutTellersRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd-MM-yyyy" },
          "description": { "type": "string", "example": "teller cash handling" },
          "endDate": { "type": "string", "format": "date" },
          "locale": { "type": "string", "example": "en" },
          "name": { "type": "string", "example": "Teller3" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "startDate": { "type": "string", "format": "date" },
          "status": {
            "type": "string",
            "enum": ["INVALID", "PENDING", "ACTIVE", "INACTIVE", "CLOSED"],
            "example": "ACTIVE"
          }
        }
      },
      "PutTellersResponse": {
        "type": "object",
        "description": "PutTellersResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutTellersResponseChanges" },
          "officeId": { "type": "integer", "format": "int64", "example": 1 },
          "resourceId": { "type": "integer", "format": "int64", "example": 5 }
        }
      },
      "PutTellersResponseChanges": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd-MM-yyyy" },
          "description": { "type": "string", "example": "teller cash handling" },
          "endDate": { "type": "string", "format": "date" },
          "locale": { "type": "string", "example": "en" },
          "startDate": { "type": "string", "format": "date" }
        }
      },
      "PutTellersTellerIdCashiersCashierIdRequest": {
        "type": "object",
        "description": "PutTellersTellerIdCashiersCashierIdRequest",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd-MM-yyyy" },
          "description": { "type": "string", "example": "Cashier updated." },
          "endDate": { "type": "string", "format": "date" },
          "isFullDay": { "type": "boolean", "example": true },
          "locale": { "type": "string", "example": "en" },
          "staffId": { "type": "integer", "format": "int64", "example": 1 },
          "startDate": { "type": "string", "format": "date" }
        }
      },
      "PutTellersTellerIdCashiersCashierIdResponse": {
        "type": "object",
        "description": "PutTellersTellerIdCashiersCashierIdResponse",
        "properties": {
          "changes": {
            "$ref": "#/components/schemas/PutTellersTellerIdCashiersCashierIdResponseChanges"
          },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 },
          "subResourceId": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "PutTellersTellerIdCashiersCashierIdResponseChanges": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd-MM-yyyy" },
          "description": { "type": "string", "example": "Cashier updated." },
          "endDate": { "type": "string", "format": "date" },
          "locale": { "type": "string", "example": "en" }
        }
      },
      "PutUpdateStandingInstructionChanges": {
        "type": "object",
        "properties": {
          "recurrenceInterval": { "type": "integer", "format": "int32", "example": 2 }
        }
      },
      "PutUsersUserIdRequest": {
        "type": "object",
        "description": "PutUsersUserIdRequest",
        "properties": {
          "clients": {
            "type": "array",
            "example": [2, 3],
            "items": { "type": "integer", "format": "int64" }
          },
          "email": { "type": "string", "example": "whatever@mifos.org" },
          "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" } }
      },
      "PutWorkingCapitalLoanProductChanges": {
        "type": "object",
        "properties": {
          "locale": { "type": "string", "example": "en_GB" },
          "name": { "type": "string", "example": "Working Capital Product 1 Updated" }
        }
      },
      "PutWorkingCapitalLoanProductsProductIdRequest": {
        "type": "object",
        "description": "PutWorkingCapitalLoanProductsProductIdRequest",
        "properties": {
          "accountingRule": {
            "type": "string",
            "description": "NONE or ACC_DEF_REV_AM",
            "enum": ["NONE", "ACC_DEF_REV_AM"],
            "example": "ACC_DEF_REV_AM"
          },
          "allowAttributeOverrides": { "$ref": "#/components/schemas/PostAllowAttributeOverrides" },
          "amortizationType": { "type": "string", "enum": ["EIR", "FLAT"], "example": "EIR" },
          "breachGraceDays": {
            "type": "integer",
            "format": "int32",
            "description": "Number of days to shift the start of the first breach schedule period after disbursement",
            "example": 0
          },
          "breachId": { "type": "integer", "format": "int64", "example": 1 },
          "breachStartType": {
            "type": "string",
            "description": "Breach start type: LOAN_CREATION or DISBURSEMENT",
            "example": "DISBURSEMENT"
          },
          "chargeOffExpenseAccountId": { "type": "integer", "format": "int64", "example": 17 },
          "chargeOffFraudExpenseAccountId": { "type": "integer", "format": "int64", "example": 18 },
          "chargeOffReasonToExpenseAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalPostChargeOffReasonToExpenseAccountMappings"
            }
          },
          "closeDate": { "type": "string", "example": "10 July 2025" },
          "currencyCode": { "type": "string", "example": "USD" },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "deferredIncomeLiabilityAccountId": {
            "type": "integer",
            "format": "int64",
            "example": 4
          },
          "delinquencyBucketId": { "type": "integer", "format": "int64", "example": 1 },
          "delinquencyGraceDays": { "type": "integer", "format": "int32", "example": 1 },
          "delinquencyStartType": {
            "type": "string",
            "description": "Delinquency start type: LOAN_CREATION or DISBURSEMENT",
            "example": "LOAN_CREATION"
          },
          "description": {
            "type": "string",
            "example": "Updated Working Capital Loan Product for merchants"
          },
          "digitsAfterDecimal": { "type": "integer", "format": "int32", "example": 2 },
          "discount": { "type": "number", "example": 0 },
          "externalId": { "type": "string", "example": "2075e308-d4a8-44d9-8203-f5a947b8c2f4" },
          "feeToIncomeAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalLoanProductChargeToGLAccountMapper"
            }
          },
          "fundId": { "type": "integer", "format": "int64", "example": 3 },
          "fundSourceAccountId": { "type": "integer", "format": "int64", "example": 1 },
          "goodwillCreditAccountId": { "type": "integer", "format": "int64", "example": 16 },
          "inMultiplesOf": { "type": "integer", "format": "int32", "example": 1 },
          "incomeFromChargeOffFeesAccountId": {
            "type": "integer",
            "format": "int64",
            "example": 10
          },
          "incomeFromChargeOffPenaltyAccountId": {
            "type": "integer",
            "format": "int64",
            "example": 11
          },
          "incomeFromDiscountFeeAccountId": { "type": "integer", "format": "int64", "example": 5 },
          "incomeFromFeeAccountId": { "type": "integer", "format": "int64", "example": 6 },
          "incomeFromGoodwillCreditFeesAccountId": {
            "type": "integer",
            "format": "int64",
            "example": 12
          },
          "incomeFromGoodwillCreditPenaltyAccountId": {
            "type": "integer",
            "format": "int64",
            "example": 13
          },
          "incomeFromPenaltyAccountId": { "type": "integer", "format": "int64", "example": 6 },
          "incomeFromRecoveryAccountId": { "type": "integer", "format": "int64", "example": 7 },
          "loanPortfolioAccountId": { "type": "integer", "format": "int64", "example": 2 },
          "locale": { "type": "string", "example": "en_GB" },
          "maxAnnualEir": {
            "type": "number",
            "description": "Maximum annual EIR percentage. Optional; only for ANNUAL_EIR strategy.",
            "example": 50
          },
          "maxPeriodPaymentRate": { "type": "number", "example": 2 },
          "maxPrincipal": { "type": "number", "example": 50000 },
          "minAnnualEir": {
            "type": "number",
            "description": "Minimum annual EIR percentage. Optional; only for ANNUAL_EIR strategy.",
            "example": 20
          },
          "minPeriodPaymentRate": { "type": "number", "example": 0.5 },
          "minPrincipal": { "type": "number", "example": 1000 },
          "name": { "type": "string", "example": "Working Capital Product 1 Updated" },
          "nearBreachId": { "type": "integer", "format": "int64", "example": 1 },
          "npvDayCount": { "type": "integer", "format": "int32", "example": 365 },
          "overpaymentLiabilityAccountId": { "type": "integer", "format": "int64", "example": 9 },
          "paymentAllocation": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostPaymentAllocation" }
          },
          "paymentChannelToFundSourceMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalLoanPaymentChannelToFundSourceMappings"
            }
          },
          "penaltyToIncomeAccountMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalLoanProductChargeToGLAccountMapper"
            }
          },
          "periodPaymentRate": { "type": "number", "example": 1 },
          "principal": { "type": "number", "example": 10000 },
          "receivableFeeAccountId": { "type": "integer", "format": "int64", "example": 19 },
          "receivablePenaltyAccountId": { "type": "integer", "format": "int64", "example": 20 },
          "repaymentEvery": { "type": "integer", "format": "int32", "example": 30 },
          "repaymentFrequencyType": {
            "type": "string",
            "enum": ["DAYS", "MONTHS", "YEARS"],
            "example": "DAYS"
          },
          "shortName": { "type": "string", "example": "WCP1" },
          "startDate": { "type": "string", "example": "10 July 2022" },
          "transfersInSuspenseAccountId": { "type": "integer", "format": "int64", "example": 3 },
          "writeOffAccountId": { "type": "integer", "format": "int64", "example": 8 },
          "writeOffReasonsToExpenseMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalPostWriteOffReasonToExpenseAccountMappings"
            }
          }
        }
      },
      "PutWorkingCapitalLoanProductsProductIdResponse": {
        "type": "object",
        "description": "PutWorkingCapitalLoanProductsProductIdResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/PutWorkingCapitalLoanProductChanges" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "PutWorkingCapitalLoansLoanIdDiscountRequest": {
        "type": "object",
        "description": "Request for updating discount on a disbursed Working Capital Loan",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "discountAmount": { "type": "number", "description": "Discount amount", "example": 0 },
          "locale": { "type": "string", "example": "en_GB" },
          "note": { "type": "string", "example": "Discount update Note" }
        }
      },
      "PutWorkingCapitalLoansLoanIdRateRequest": {
        "type": "object",
        "description": "Request for updating period payment rate on an active Working Capital Loan",
        "properties": {
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "effectiveDate": {
            "type": "string",
            "description": "Date the new rate takes effect. Mandatory. May be backdated or set in the future, but not before the disbursement date.",
            "example": "01 July 2022"
          },
          "locale": { "type": "string", "example": "en_GB" },
          "note": { "type": "string", "example": "Rate change note" },
          "periodPaymentRate": {
            "type": "number",
            "description": "New period payment rate",
            "example": 0.17
          }
        },
        "required": ["effectiveDate"]
      },
      "PutWorkingCapitalLoansLoanIdRequest": {
        "type": "object",
        "description": "PutWorkingCapitalLoansLoanIdRequest",
        "properties": {
          "accountNo": { "type": "string", "example": "WCL-1" },
          "breachGraceDays": {
            "type": "integer",
            "format": "int32",
            "description": "Number of days to shift the start of the first breach schedule period after disbursement",
            "example": 0
          },
          "breachId": { "type": "integer", "format": "int64", "example": 1 },
          "breachStartType": {
            "type": "string",
            "description": "Breach start type: LOAN_CREATION or DISBURSEMENT",
            "example": "DISBURSEMENT"
          },
          "clientId": { "type": "integer", "format": "int64", "example": 1 },
          "dateFormat": { "type": "string", "example": "dd MMMM yyyy" },
          "delinquencyBucketId": { "type": "integer", "format": "int64", "example": 1 },
          "delinquencyGraceDays": { "type": "integer", "format": "int32", "example": 3 },
          "delinquencyStartType": {
            "type": "string",
            "description": "Delinquency start type: LOAN_CREATION or DISBURSEMENT",
            "example": "LOAN_CREATION"
          },
          "discount": { "type": "number", "example": 0 },
          "expectedDisbursementDate": { "type": "string", "example": "1 February 2024" },
          "externalId": { "type": "string", "example": "ext-id-001" },
          "fundId": { "type": "integer", "format": "int64", "example": 1 },
          "locale": { "type": "string", "example": "en_GB" },
          "nearBreachId": { "type": "integer", "format": "int64", "example": 1 },
          "paymentAllocation": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PostPaymentAllocationRule" }
          },
          "periodPaymentRate": { "type": "number", "example": 1 },
          "principalAmount": {
            "type": "number",
            "description": "Principal (disbursement) amount",
            "example": 10000
          },
          "productId": { "type": "integer", "format": "int64", "example": 1 },
          "repaymentEvery": { "type": "integer", "format": "int32", "example": 30 },
          "repaymentFrequencyType": {
            "type": "string",
            "enum": ["DAYS", "MONTHS", "YEARS"],
            "example": "DAYS"
          },
          "submittedOnDate": { "type": "string", "example": "15 January 2024" },
          "submittedOnNote": {
            "type": "string",
            "description": "Max length 500 characters",
            "example": "Note when modifying"
          },
          "totalPaymentVolume": { "type": "number", "example": 10500 }
        }
      },
      "PutWorkingCapitalLoansLoanIdResponse": {
        "type": "object",
        "description": "PutWorkingCapitalLoansLoanIdResponse",
        "properties": {
          "changes": { "type": "object" },
          "resourceId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "Question": {
        "type": "object",
        "properties": {
          "componentKey": { "type": "string" },
          "description": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "key": { "type": "string" },
          "new": { "type": "boolean" },
          "responses": { "type": "array", "items": { "$ref": "#/components/schemas/Response" } },
          "sequenceNo": { "type": "integer", "format": "int32" },
          "survey": { "$ref": "#/components/schemas/Survey" },
          "text": { "type": "string" }
        }
      },
      "QuestionData": {
        "type": "object",
        "properties": {
          "componentKey": { "type": "string" },
          "description": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "key": { "type": "string" },
          "responseDatas": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ResponseData" }
          },
          "sequenceNo": { "type": "integer", "format": "int32" },
          "text": { "type": "string" }
        }
      },
      "Rate": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean" },
          "approveUser": { "$ref": "#/components/schemas/AppUser" },
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "percentage": { "type": "number" },
          "productApply": { "type": "integer", "format": "int32" }
        }
      },
      "RateData": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "percentage": { "type": "number" },
          "productApply": { "$ref": "#/components/schemas/EnumOptionData" }
        }
      },
      "RateRequest": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean" },
          "locale": { "type": "string" },
          "name": { "type": "string" },
          "percentage": { "type": "number" },
          "productApply": { "type": "integer", "format": "int32" }
        }
      },
      "RepaymentPeriod": {
        "type": "object",
        "properties": {
          "calculatedDueInterest": { "$ref": "#/components/schemas/Money" },
          "calculatedDuePrincipal": { "$ref": "#/components/schemas/Money" },
          "capitalizedIncomePrincipal": { "$ref": "#/components/schemas/Money" },
          "creditedAmounts": { "$ref": "#/components/schemas/Money" },
          "creditedInterest": { "$ref": "#/components/schemas/Money" },
          "creditedInterestMovedDueReAge": { "$ref": "#/components/schemas/Money" },
          "creditedPrincipal": { "$ref": "#/components/schemas/Money" },
          "creditedPrincipalMovedDueReAge": { "$ref": "#/components/schemas/Money" },
          "currency": { "$ref": "#/components/schemas/MonetaryCurrency" },
          "dueDate": { "type": "string", "format": "date" },
          "dueInterest": { "$ref": "#/components/schemas/Money" },
          "duePrincipal": { "$ref": "#/components/schemas/Money" },
          "emi": { "$ref": "#/components/schemas/Money" },
          "emiPlusCreditedAmountsPlusFutureUnrecognizedInterest": {
            "$ref": "#/components/schemas/Money"
          },
          "firstInterestPeriod": { "$ref": "#/components/schemas/InterestPeriod" },
          "firstRepaymentPeriod": { "type": "boolean" },
          "fixedInterest": { "$ref": "#/components/schemas/Money" },
          "fromDate": { "type": "string", "format": "date" },
          "fullyPaid": { "type": "boolean" },
          "futureUnrecognizedInterest": { "$ref": "#/components/schemas/Money" },
          "initialBalanceForEmiRecalculation": { "$ref": "#/components/schemas/Money" },
          "interestMovedDownward": { "type": "boolean" },
          "interestMovedUpward": { "type": "boolean" },
          "interestPaymentGrace": { "type": "boolean" },
          "interestPeriods": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/InterestPeriod" }
          },
          "lastInterestPeriod": { "$ref": "#/components/schemas/InterestPeriod" },
          "loanProductRelatedDetail": { "$ref": "#/components/schemas/ILoanConfigurationDetails" },
          "mc": {
            "type": "object",
            "properties": {
              "precision": { "type": "integer", "format": "int32" },
              "roundingMode": {
                "type": "string",
                "enum": [
                  "UP",
                  "DOWN",
                  "CEILING",
                  "FLOOR",
                  "HALF_UP",
                  "HALF_DOWN",
                  "HALF_EVEN",
                  "UNNECESSARY"
                ]
              }
            }
          },
          "originalEmi": { "$ref": "#/components/schemas/Money" },
          "outstandingInterest": { "$ref": "#/components/schemas/Money" },
          "outstandingLoanBalance": { "$ref": "#/components/schemas/Money" },
          "outstandingPrincipal": { "$ref": "#/components/schemas/Money" },
          "paidInterest": { "$ref": "#/components/schemas/Money" },
          "paidPrincipal": { "$ref": "#/components/schemas/Money" },
          "previous": { "$ref": "#/components/schemas/RepaymentPeriod" },
          "rateFactorPlus1": { "type": "number" },
          "reAged": { "type": "boolean" },
          "reAgedEarlyRepaymentHolder": { "type": "boolean" },
          "totalCapitalizedIncomeAmount": { "$ref": "#/components/schemas/Money" },
          "totalCreditedAmount": { "$ref": "#/components/schemas/Money" },
          "totalDisbursedAmount": { "$ref": "#/components/schemas/Money" },
          "totalPaidAmount": { "$ref": "#/components/schemas/Money" },
          "unrecognizedInterest": { "$ref": "#/components/schemas/Money" },
          "zero": { "$ref": "#/components/schemas/Money" }
        },
        "required": ["calculatedDueInterest"]
      },
      "RepaymentTransactionRequest": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string" },
          "bankNumber": { "type": "string" },
          "checkNumber": { "type": "string" },
          "loanId": { "type": "integer", "format": "int64" },
          "paymentTypeId": { "type": "integer", "format": "int64" },
          "receiptNumber": { "type": "string" },
          "routingCode": { "type": "string" },
          "transactionAmount": { "type": "number" }
        }
      },
      "ReportData": { "type": "object" },
      "ReportExportType": {
        "type": "object",
        "properties": { "key": { "type": "string" }, "queryParameter": { "type": "string" } }
      },
      "ReportMailingJobRunHistoryData": {
        "type": "object",
        "properties": {
          "endDateTime": { "type": "string", "format": "date-time" },
          "errorLog": { "type": "string" },
          "errorMessage": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "reportMailingJobId": { "type": "integer", "format": "int64" },
          "startDateTime": { "type": "string", "format": "date-time" },
          "status": { "type": "string" }
        }
      },
      "ReportMailingJobTimelineData": {
        "type": "object",
        "properties": {
          "createdByFirstname": { "type": "string" },
          "createdByLastname": { "type": "string" },
          "createdByUsername": { "type": "string" },
          "createdOnDate": { "type": "string", "format": "date" },
          "updatedByFirstname": { "type": "string" },
          "updatedByLastname": { "type": "string" },
          "updatedByUsername": { "type": "string" },
          "updatedOnDate": { "type": "string", "format": "date" }
        }
      },
      "ReportParameterData": { "type": "object" },
      "RescheduleReasonsCodeValue": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean", "example": true },
          "id": { "type": "integer", "format": "int64", "example": 1 },
          "mandatory": { "type": "boolean", "example": false },
          "name": { "type": "string", "example": "reason" }
        }
      },
      "RescheduleReasonsTimeline": {
        "type": "object",
        "properties": {
          "approvedByFirstname": { "type": "string", "example": "App" },
          "approvedByLastname": { "type": "string", "example": "Administrator" },
          "approvedByUsername": { "type": "string", "example": "admin" },
          "approvedOnDate": { "type": "string", "format": "date" },
          "submittedByFirstname": { "type": "string", "example": "App" },
          "submittedByLastname": { "type": "string", "example": "Administrator" },
          "submittedByUsername": { "type": "string", "example": "admin" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "Response": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "new": { "type": "boolean" },
          "question": { "$ref": "#/components/schemas/Question" },
          "sequenceNo": { "type": "integer", "format": "int32" },
          "text": { "type": "string" },
          "value": { "type": "integer", "format": "int32" }
        }
      },
      "ResponseData": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "sequenceNo": { "type": "integer", "format": "int32" },
          "text": { "type": "string" },
          "value": { "type": "integer", "format": "int32" }
        }
      },
      "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" } } }
      },
      "RetrieveLoansPointInTimeExternalIdsRequest": {
        "type": "object",
        "properties": {
          "date": { "$ref": "#/components/schemas/DateParam" },
          "dateFormat": { "type": "string" },
          "externalIds": { "type": "array", "items": { "type": "string" } },
          "locale": { "type": "string" }
        }
      },
      "RetrieveLoansPointInTimeRequest": {
        "type": "object",
        "properties": {
          "date": { "$ref": "#/components/schemas/DateParam" },
          "dateFormat": { "type": "string" },
          "loanIds": { "type": "array", "items": { "type": "integer", "format": "int64" } },
          "locale": { "type": "string" }
        }
      },
      "Role": {
        "type": "object",
        "properties": {
          "disabled": { "type": "boolean" },
          "enabled": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "permissions": { "type": "array", "items": { "$ref": "#/components/schemas/Permission" } }
        }
      },
      "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" } }
        }
      },
      "SavingDueTransactionRequest": {
        "type": "object",
        "properties": {
          "accountNumber": { "type": "string" },
          "bankNumber": { "type": "string" },
          "checkNumber": { "type": "string" },
          "depositAccountType": { "type": "integer", "format": "int64" },
          "paymentTypeId": { "type": "integer", "format": "int64" },
          "receiptNumber": { "type": "string" },
          "routingCode": { "type": "string" },
          "savingsId": { "type": "integer", "format": "int64" },
          "transactionAmount": { "type": "number" }
        }
      },
      "SavingsAccountApplicationTimelineData": {
        "type": "object",
        "properties": {
          "activatedByFirstname": { "type": "string" },
          "activatedByLastname": { "type": "string" },
          "activatedByUsername": { "type": "string" },
          "activatedOnDate": { "type": "string", "format": "date" },
          "approvedByFirstname": { "type": "string" },
          "approvedByLastname": { "type": "string" },
          "approvedByUsername": { "type": "string" },
          "approvedOnDate": { "type": "string", "format": "date" },
          "closedByFirstname": { "type": "string" },
          "closedByLastname": { "type": "string" },
          "closedByUsername": { "type": "string" },
          "closedOnDate": { "type": "string", "format": "date" },
          "rejectedByFirstname": { "type": "string" },
          "rejectedByLastname": { "type": "string" },
          "rejectedByUsername": { "type": "string" },
          "rejectedOnDate": { "type": "string", "format": "date" },
          "submittedByFirstname": { "type": "string" },
          "submittedByLastname": { "type": "string" },
          "submittedByUsername": { "type": "string" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "withdrawnByFirstname": { "type": "string" },
          "withdrawnByLastname": { "type": "string" },
          "withdrawnByUsername": { "type": "string" },
          "withdrawnOnDate": { "type": "string", "format": "date" }
        }
      },
      "SavingsAccountChargeData": {
        "type": "object",
        "properties": {
          "accountId": { "type": "integer", "format": "int64" },
          "amount": { "type": "number" },
          "amountOrPercentage": { "type": "number" },
          "amountOutstanding": { "type": "number" },
          "amountPaid": { "type": "number" },
          "amountPercentageAppliedTo": { "type": "number" },
          "amountWaived": { "type": "number" },
          "amountWrittenOff": { "type": "number" },
          "annualFee": { "type": "boolean" },
          "chargeCalculationType": { "$ref": "#/components/schemas/EnumOptionData" },
          "chargeData": { "$ref": "#/components/schemas/ChargeData" },
          "chargeId": { "type": "integer", "format": "int64" },
          "chargeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeData" }
          },
          "chargeTimeType": { "$ref": "#/components/schemas/EnumOptionData" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "dueDate": { "type": "string", "format": "date" },
          "feeCharge": { "type": "boolean" },
          "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" }
            }
          },
          "freeWithdrawalChargeFrequency": { "type": "integer", "format": "int32" },
          "id": { "type": "integer", "format": "int64" },
          "inactivationDate": { "type": "string", "format": "date" },
          "isActive": { "type": "boolean" },
          "isFreeWithdrawal": { "type": "boolean" },
          "name": { "type": "string" },
          "penalty": { "type": "boolean" },
          "percentage": { "type": "number" },
          "restartFrequency": { "type": "integer", "format": "int32" },
          "restartFrequencyEnum": { "type": "integer", "format": "int32" },
          "savingsActivation": { "type": "boolean" },
          "withdrawalFee": { "type": "boolean" }
        }
      },
      "SavingsAccountChargesPaidByData": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "chargeId": { "type": "integer", "format": "int64" },
          "feeCharge": { "type": "boolean" },
          "penaltyCharge": { "type": "boolean" },
          "savingsAccountChargeData": { "$ref": "#/components/schemas/SavingsAccountChargeData" }
        }
      },
      "SavingsAccountData": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "string" },
          "accrualBasedAccountingEnabledOnSavingsProduct": { "type": "boolean" },
          "activatedOnDate": { "type": "string", "format": "date" },
          "activationLocalDate": { "type": "string", "format": "date" },
          "allowOverdraft": { "type": "boolean" },
          "annualFee": { "$ref": "#/components/schemas/SavingsAccountChargeData" },
          "cashBasedAccountingEnabledOnSavingsProduct": { "type": "boolean" },
          "chargeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeData" }
          },
          "charges": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountChargeData" }
          },
          "clientData": { "$ref": "#/components/schemas/ClientData" },
          "clientId": { "type": "integer", "format": "int64" },
          "clientName": { "type": "string" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "datatables": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/DatatableData" }
          },
          "dateFormat": { "type": "string" },
          "daysToDormancy": { "type": "integer", "format": "int32" },
          "daysToEscheat": { "type": "integer", "format": "int32" },
          "daysToInactive": { "type": "integer", "format": "int32" },
          "depositType": { "$ref": "#/components/schemas/EnumOptionData" },
          "depositTypeId": { "type": "integer", "format": "int32" },
          "enforceMinRequiredBalance": { "type": "boolean" },
          "existingReversedTransactionIds": {
            "type": "array",
            "items": { "type": "integer", "format": "int64" },
            "uniqueItems": true
          },
          "existingTransactionIds": {
            "type": "array",
            "items": { "type": "integer", "format": "int64" },
            "uniqueItems": true
          },
          "externalId": { "type": "string" },
          "fieldOfficerId": { "type": "integer", "format": "int64" },
          "fieldOfficerName": { "type": "string" },
          "fieldOfficerOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StaffData" }
          },
          "glAccountIdForInterestOnSavings": { "type": "integer", "format": "int64" },
          "glAccountIdForInterestPayable": { "type": "integer", "format": "int64" },
          "glAccountIdForInterestReceivable": { "type": "integer", "format": "int64" },
          "glAccountIdForOverdraftPorfolio": { "type": "integer", "format": "int64" },
          "glAccountIdForSavingsControl": { "type": "integer", "format": "int64" },
          "groupGeneralData": { "$ref": "#/components/schemas/GroupGeneralData" },
          "groupId": { "type": "integer", "format": "int64" },
          "groupName": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "interestCalculationDaysInYearType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCalculationDaysInYearTypeId": { "type": "integer", "format": "int32" },
          "interestCalculationDaysInYearTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestCalculationType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCalculationTypeId": { "type": "integer", "format": "int32" },
          "interestCalculationTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestCompoundingPeriodType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCompoundingPeriodTypeId": { "type": "integer", "format": "int32" },
          "interestCompoundingPeriodTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "interestPosting": { "type": "number" },
          "interestPostingPeriodType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestPostingPeriodTypeId": { "type": "integer", "format": "int32" },
          "interestPostingPeriodTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "isDormancyTrackingActive": { "type": "boolean" },
          "lastActiveTransactionDate": { "type": "string", "format": "date" },
          "lastSavingsAccountTransaction": {
            "$ref": "#/components/schemas/SavingsAccountTransactionData"
          },
          "lienAllowed": { "type": "boolean" },
          "locale": { "type": "string" },
          "lockedInUntilDate": { "type": "string", "format": "date" },
          "lockinPeriodFrequency": { "type": "integer", "format": "int32" },
          "lockinPeriodFrequencyType": { "$ref": "#/components/schemas/EnumOptionData" },
          "lockinPeriodFrequencyTypeId": { "type": "integer", "format": "int32" },
          "lockinPeriodFrequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "maxAllowedLienLimit": { "type": "number" },
          "minBalanceForInterestCalculation": { "type": "number" },
          "minOverdraftForInterestCalculation": { "type": "number" },
          "minRequiredBalance": { "type": "number" },
          "minRequiredOpeningBalance": { "type": "number" },
          "newSavingsAccountTransactionData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountTransactionData" }
          },
          "nominalAnnualInterestRate": { "type": "number" },
          "nominalAnnualInterestRateOverdraft": { "type": "number" },
          "officeId": { "type": "integer", "format": "int64" },
          "onHoldFunds": { "type": "number" },
          "overdraftLimit": { "type": "number" },
          "overdraftPosting": { "type": "number" },
          "productId": { "type": "integer", "format": "int64" },
          "productOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsProductData" }
          },
          "reasonForBlock": { "type": "string" },
          "rowIndex": { "type": "integer", "format": "int32" },
          "savingsAccountSummaryData": { "$ref": "#/components/schemas/SavingsAccountSummaryData" },
          "savingsAccountTransactionData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountTransactionData" }
          },
          "savingsAccountTransactionSummaryWrapper": {
            "$ref": "#/components/schemas/SavingsAccountTransactionDataSummaryWrapper"
          },
          "savingsAccountTransactionsWithPivotConfig": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountTransactionData" }
          },
          "savingsAmountOnHold": { "type": "number" },
          "savingsHelper": { "$ref": "#/components/schemas/SavingsHelper" },
          "savingsProduct": { "$ref": "#/components/schemas/SavingsProductData" },
          "savingsProductData": { "$ref": "#/components/schemas/SavingsProductData" },
          "savingsProductId": { "type": "integer", "format": "int64" },
          "savingsProductName": { "type": "string" },
          "startInterestCalculationDate": { "type": "string", "format": "date" },
          "status": { "$ref": "#/components/schemas/SavingsAccountStatusEnumData" },
          "subStatus": { "$ref": "#/components/schemas/SavingsAccountSubStatusEnumData" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "summary": { "$ref": "#/components/schemas/SavingsAccountSummaryData" },
          "taxGroup": { "$ref": "#/components/schemas/TaxGroupData" },
          "timeline": { "$ref": "#/components/schemas/SavingsAccountApplicationTimelineData" },
          "transactions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountTransactionData" }
          },
          "updatedTransactions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountTransactionData" },
            "writeOnly": true
          },
          "version": { "type": "integer", "format": "int32" },
          "withHoldTax": { "type": "boolean" },
          "withdrawalFee": { "$ref": "#/components/schemas/SavingsAccountChargeData" },
          "withdrawalFeeForTransfers": { "type": "boolean" },
          "withdrawalFeeTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          }
        }
      },
      "SavingsAccountStatusEnumData": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean" },
          "approved": { "type": "boolean" },
          "closed": { "type": "boolean" },
          "code": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "matured": { "type": "boolean" },
          "prematureClosed": { "type": "boolean" },
          "rejected": { "type": "boolean" },
          "submittedAndPendingApproval": { "type": "boolean" },
          "transferInProgress": { "type": "boolean" },
          "transferOnHold": { "type": "boolean" },
          "value": { "type": "string" },
          "withdrawnByApplicant": { "type": "boolean" }
        }
      },
      "SavingsAccountSubStatusEnumData": {
        "type": "object",
        "properties": {
          "block": { "type": "boolean" },
          "blockCredit": { "type": "boolean" },
          "blockDebit": { "type": "boolean" },
          "code": { "type": "string" },
          "dormant": { "type": "boolean" },
          "escheat": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "inactive": { "type": "boolean" },
          "none": { "type": "boolean" },
          "value": { "type": "string" }
        }
      },
      "SavingsAccountSummaryData": {
        "type": "object",
        "properties": {
          "accountBalance": { "type": "number" },
          "availableBalance": { "type": "number" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "interestNotPosted": { "type": "number" },
          "interestPostedTillDate": { "type": "string", "format": "date" },
          "lastInterestCalculationDate": { "type": "string", "format": "date" },
          "prevInterestPostedTillDate": { "type": "string", "format": "date" },
          "runningBalanceOnInterestPostingTillDate": { "type": "number" },
          "runningBalanceOnPivotDate": { "type": "number" },
          "totalAnnualFees": { "type": "number" },
          "totalDeposits": { "type": "number" },
          "totalFeeCharge": { "type": "number" },
          "totalInterestEarned": { "type": "number" },
          "totalInterestPosted": { "type": "number" },
          "totalOverdraftInterestDerived": { "type": "number" },
          "totalPenaltyCharge": { "type": "number" },
          "totalWithdrawalFees": { "type": "number" },
          "totalWithdrawals": { "type": "number" },
          "totalWithholdTax": { "type": "number" }
        }
      },
      "SavingsAccountTransactionData": {
        "type": "object",
        "properties": {
          "accountCredit": { "type": "integer", "format": "int64" },
          "accountDebit": { "type": "integer", "format": "int64" },
          "accountId": { "type": "integer", "format": "int64" },
          "accountNo": { "type": "string" },
          "accountNumber": { "type": "string" },
          "accrual": { "type": "boolean" },
          "amount": { "type": "number" },
          "amountOnHold": { "type": "boolean" },
          "amountRelease": { "type": "boolean" },
          "annualFee": { "type": "boolean" },
          "annualFeeAndNotReversed": { "type": "boolean" },
          "balanceEndDate": { "type": "string", "format": "date" },
          "balanceNumberOfDays": { "type": "integer", "format": "int32" },
          "bankNumber": { "type": "string" },
          "chargeTransaction": { "type": "boolean" },
          "chargeTransactionAndNotReversed": { "type": "boolean" },
          "chargesPaidByData": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountChargesPaidByData" },
            "uniqueItems": true
          },
          "checkNumber": { "type": "string" },
          "credit": { "type": "boolean" },
          "cumulativeBalance": { "type": "number" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "date": { "type": "string", "format": "date" },
          "dateFormat": { "type": "string" },
          "debit": { "type": "boolean" },
          "deposit": { "type": "boolean" },
          "depositAndNotReversed": { "type": "boolean" },
          "dividendPayoutAndNotReversed": { "type": "boolean" },
          "endOfBalanceLocalDate": { "type": "string", "format": "date" },
          "entryType": { "type": "string", "enum": ["CREDIT", "DEBIT"] },
          "externalId": { "$ref": "#/components/schemas/ExternalId" },
          "feeCharge": { "type": "boolean" },
          "feeChargeAndNotReversed": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "interestPosting": { "type": "boolean" },
          "interestPostingAndNotReversed": { "type": "boolean" },
          "interestedPostedAsOn": { "type": "boolean" },
          "isManualTransaction": { "type": "boolean" },
          "isOverdraft": { "type": "boolean" },
          "isReversal": { "type": "boolean" },
          "lienTransaction": { "type": "boolean" },
          "locale": { "type": "string" },
          "manualTransaction": { "type": "boolean" },
          "modifiedId": { "type": "integer", "format": "int64" },
          "notReversed": { "type": "boolean" },
          "note": { "type": "string" },
          "originalTransactionId": { "type": "integer", "format": "int64" },
          "outstandingChargeAmount": { "type": "number" },
          "overdraftAmount": { "type": "number" },
          "overdraftInterestAndNotReversed": { "type": "boolean" },
          "payCharge": { "type": "boolean" },
          "paymentDetailData": { "$ref": "#/components/schemas/PaymentDetailData" },
          "paymentTypeId": { "type": "integer", "format": "int64" },
          "paymentTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PaymentTypeData" }
          },
          "penaltyCharge": { "type": "boolean" },
          "penaltyChargeAndNotReversed": { "type": "boolean" },
          "reasonForBlock": { "type": "string" },
          "receiptNumber": { "type": "string" },
          "refNo": { "type": "string" },
          "releaseTransactionId": { "type": "integer", "format": "int64" },
          "reversalTransaction": { "type": "boolean" },
          "reversed": { "type": "boolean" },
          "routingCode": { "type": "string" },
          "rowIndex": { "type": "integer", "format": "int32" },
          "runningBalance": { "type": "number" },
          "savingsAccountChargesPaid": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SavingsAccountChargesPaidByData" },
            "uniqueItems": true
          },
          "savingsAccountId": { "type": "integer", "format": "int64" },
          "submittedByUsername": { "type": "string" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "taxDetails": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/TaxDetailsData" }
          },
          "transactionAmount": { "type": "number" },
          "transactionDate": { "type": "string", "format": "date" },
          "transactionType": { "$ref": "#/components/schemas/SavingsAccountTransactionEnumData" },
          "transfer": { "$ref": "#/components/schemas/AccountTransferData" },
          "waiveCharge": { "type": "boolean" },
          "waiveFeeCharge": { "type": "boolean" },
          "waiveFeeChargeAndNotReversed": { "type": "boolean" },
          "waivePenaltyCharge": { "type": "boolean" },
          "waivePenaltyChargeAndNotReversed": { "type": "boolean" },
          "withHoldTaxAndNotReversed": { "type": "boolean" },
          "withdrawal": { "type": "boolean" },
          "withdrawalFeeAndNotReversed": { "type": "boolean" }
        }
      },
      "SavingsAccountTransactionDataSummaryWrapper": { "type": "object" },
      "SavingsAccountTransactionEnumData": {
        "type": "object",
        "properties": {
          "accrual": { "type": "boolean" },
          "amountHold": { "type": "boolean" },
          "amountRelease": { "type": "boolean" },
          "annualFee": { "type": "boolean" },
          "approveTransfer": { "type": "boolean" },
          "chargeTransaction": { "type": "boolean" },
          "code": { "type": "string" },
          "credit": { "type": "boolean" },
          "debit": { "type": "boolean" },
          "deposit": { "type": "boolean" },
          "depositOrWithdrawal": { "type": "boolean" },
          "dividendPayout": { "type": "boolean" },
          "entryType": { "type": "string", "enum": ["CREDIT", "DEBIT"] },
          "escheat": { "type": "boolean" },
          "feeDeduction": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "incomeFromInterest": { "type": "boolean" },
          "initiateTransfer": { "type": "boolean" },
          "interestPosting": { "type": "boolean" },
          "overDraftInterestPosting": { "type": "boolean" },
          "overdraftFee": { "type": "boolean" },
          "overdraftInterest": { "type": "boolean" },
          "payCharge": { "type": "boolean" },
          "rejectTransfer": { "type": "boolean" },
          "transactionTypeEnum": {
            "type": "string",
            "enum": [
              "INVALID",
              "DEPOSIT",
              "WITHDRAWAL",
              "INTEREST_POSTING",
              "WITHDRAWAL_FEE",
              "ANNUAL_FEE",
              "WAIVE_CHARGES",
              "PAY_CHARGE",
              "DIVIDEND_PAYOUT",
              "ACCRUAL",
              "INITIATE_TRANSFER",
              "APPROVE_TRANSFER",
              "WITHDRAW_TRANSFER",
              "REJECT_TRANSFER",
              "WRITTEN_OFF",
              "OVERDRAFT_INTEREST",
              "WITHHOLD_TAX",
              "ESCHEAT",
              "AMOUNT_HOLD",
              "AMOUNT_RELEASE"
            ]
          },
          "value": { "type": "string" },
          "withdrawTransfer": { "type": "boolean" },
          "withdrawal": { "type": "boolean" },
          "withdrawalFee": { "type": "boolean" },
          "withholdTax": { "type": "boolean" },
          "writtenoff": { "type": "boolean" }
        }
      },
      "SavingsAccountTransactionsSearchResponse": {
        "type": "object",
        "description": "SavingsAccountTransactionsSearchResponse",
        "properties": {
          "content": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/GetSavingsAccountTransactionsPageItem" }
          },
          "total": { "type": "integer", "format": "int64", "example": 2 }
        }
      },
      "SavingsHelper": { "type": "object" },
      "SavingsProductData": {
        "type": "object",
        "properties": {
          "accrualBasedAccountingEnabled": { "type": "boolean" },
          "allowOverdraft": { "type": "boolean" },
          "cashBasedAccountingEnabled": { "type": "boolean" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "depositAccountType": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "interestCalculationDaysInYearType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCalculationType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestCompoundingPeriodType": { "$ref": "#/components/schemas/EnumOptionData" },
          "interestPostingPeriodType": { "$ref": "#/components/schemas/EnumOptionData" },
          "lockinPeriodFrequency": { "type": "integer", "format": "int32" },
          "lockinPeriodFrequencyType": { "$ref": "#/components/schemas/EnumOptionData" },
          "maxAllowedLienLimit": { "type": "number" },
          "minRequiredBalance": { "type": "number" },
          "minRequiredOpeningBalance": { "type": "number" },
          "name": { "type": "string" },
          "nominalAnnualInterestRate": { "type": "number" },
          "overdraftLimit": { "type": "number" },
          "periodicAccrualAccounting": { "type": "boolean" },
          "upfrontAccrualAccounting": { "type": "boolean" },
          "withdrawalFeeForTransfers": { "type": "boolean" }
        }
      },
      "Scorecard": {
        "type": "object",
        "properties": {
          "appUser": { "$ref": "#/components/schemas/AppUser" },
          "client": { "$ref": "#/components/schemas/Client" },
          "createdOn": { "type": "string", "format": "date-time" },
          "id": { "type": "integer", "format": "int64" },
          "new": { "type": "boolean" },
          "question": { "$ref": "#/components/schemas/Question" },
          "response": { "$ref": "#/components/schemas/Response" },
          "survey": { "$ref": "#/components/schemas/Survey" },
          "value": { "type": "integer", "format": "int32" }
        }
      },
      "ScorecardData": {
        "type": "object",
        "properties": {
          "clientId": { "type": "integer", "format": "int64" },
          "id": { "type": "integer", "format": "int64" },
          "scorecardValues": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ScorecardValue" }
          },
          "surveyId": { "type": "integer", "format": "int64" },
          "surveyName": { "type": "string" },
          "userId": { "type": "integer", "format": "int64" },
          "username": { "type": "string" }
        }
      },
      "ScorecardValue": {
        "type": "object",
        "properties": {
          "createdOn": { "type": "string", "format": "date-time" },
          "questionId": { "type": "integer", "format": "int64" },
          "responseId": { "type": "integer", "format": "int64" },
          "value": { "type": "integer", "format": "int32" }
        }
      },
      "SingleDebitOrCreditEntryCommand": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "comments": { "type": "string" },
          "commentsChanged": { "type": "boolean" },
          "glAccountId": { "type": "integer", "format": "int64" },
          "glAccountIdChanged": { "type": "boolean" },
          "glAmountChanged": { "type": "boolean" },
          "parametersPassedInRequest": {
            "type": "array",
            "items": { "type": "string" },
            "uniqueItems": true
          }
        }
      },
      "SmsBusinessRulesData": {
        "type": "object",
        "properties": {
          "reportDescription": { "type": "string" },
          "reportId": { "type": "integer", "format": "int64" },
          "reportName": { "type": "string" },
          "reportParamName": { "type": "object", "additionalProperties": { "type": "object" } },
          "reportSubType": { "type": "string" },
          "reportType": { "type": "string" }
        }
      },
      "SmsCampaignData": {
        "type": "object",
        "properties": {
          "businessRulesOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SmsBusinessRulesData" }
          },
          "campaignMessage": { "type": "string" },
          "campaignName": { "type": "string" },
          "campaignStatus": { "$ref": "#/components/schemas/EnumOptionData" },
          "campaignType": { "$ref": "#/components/schemas/EnumOptionData" },
          "campaignTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "frequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "id": { "type": "integer", "format": "int64" },
          "lastTriggerDate": { "type": "string", "format": "date" },
          "months": { "type": "array", "items": { "$ref": "#/components/schemas/EnumOptionData" } },
          "nextTriggerDate": { "type": "string", "format": "date-time" },
          "notification": { "type": "boolean" },
          "paramValue": { "type": "string" },
          "periodFrequencyOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "providerId": { "type": "integer", "format": "int64" },
          "recurrence": { "type": "string" },
          "recurrenceStartDate": { "type": "string", "format": "date-time" },
          "reportName": { "type": "string" },
          "runReportId": { "type": "integer", "format": "int64" },
          "smsCampaignTimeLine": { "$ref": "#/components/schemas/SmsCampaignTimeLine" },
          "smsProviderOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/SmsProviderData" }
          },
          "triggerType": { "$ref": "#/components/schemas/EnumOptionData" },
          "triggerTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "weekDays": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          }
        }
      },
      "SmsCampaignParamReq": {
        "type": "object",
        "properties": {
          "loanOfficerId": { "type": "integer", "format": "int32" },
          "officeId": { "type": "integer", "format": "int32" },
          "reportName": { "type": "string" },
          "transactionId": { "type": "integer", "format": "int32" }
        }
      },
      "SmsCampaignPreviewDto": {
        "type": "object",
        "properties": {
          "message": { "type": "string" },
          "paramValue": { "$ref": "#/components/schemas/SmsCampaignParamReq" }
        }
      },
      "SmsCampaignTimeLine": {
        "type": "object",
        "properties": {
          "activatedByUsername": { "type": "string" },
          "activatedOnDate": { "type": "string", "format": "date" },
          "closedByUsername": { "type": "string" },
          "closedOnDate": { "type": "string", "format": "date" },
          "submittedByUsername": { "type": "string" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "SmsCreationRequest": {
        "type": "object",
        "properties": {
          "campaignId": { "type": "integer", "format": "int64" },
          "clientId": { "type": "integer", "format": "int64" },
          "groupId": { "type": "integer", "format": "int64" },
          "message": { "type": "string" },
          "staffId": { "type": "integer", "format": "int64" }
        }
      },
      "SmsData": {
        "type": "object",
        "properties": {
          "campaignName": { "type": "string" },
          "clientId": { "type": "integer", "format": "int64" },
          "groupId": { "type": "integer", "format": "int64" },
          "id": { "type": "integer", "format": "int64" },
          "message": { "type": "string" },
          "mobileNo": { "type": "string" },
          "providerId": { "type": "integer", "format": "int64" },
          "staffId": { "type": "integer", "format": "int64" },
          "status": { "$ref": "#/components/schemas/EnumOptionData" }
        }
      },
      "SmsProviderData": {
        "type": "object",
        "properties": {
          "id": { "type": "integer", "format": "int64" },
          "phoneNo": { "type": "string" },
          "providerAppKey": { "type": "string" },
          "providerDescription": { "type": "string" },
          "providerName": { "type": "string" },
          "tenantId": { "type": "string" }
        }
      },
      "SmsUpdateRequest": { "type": "object", "properties": { "message": { "type": "string" } } },
      "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" }
        }
      },
      "Staff": {
        "type": "object",
        "properties": {
          "active": { "type": "boolean" },
          "displayName": { "type": "string" },
          "emailAddress": { "type": "string" },
          "externalId": { "type": "string" },
          "firstname": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "imageId": { "type": "integer", "format": "int64" },
          "joiningDate": { "type": "string", "format": "date" },
          "lastname": { "type": "string" },
          "loanOfficer": { "type": "boolean" },
          "mobileNo": { "type": "string" },
          "new": { "type": "boolean" },
          "notActive": { "type": "boolean" },
          "notLoanOfficer": { "type": "boolean" },
          "office": { "$ref": "#/components/schemas/Office" },
          "organisationalRoleParentStaff": { "$ref": "#/components/schemas/Staff" },
          "organisationalRoleType": { "type": "integer", "format": "int32" }
        }
      },
      "StaffAssignmentHistory": {
        "type": "object",
        "properties": {
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "currentRecord": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "new": { "type": "boolean" },
          "startDate": { "type": "string", "format": "date" }
        }
      },
      "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" },
          "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" },
          "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" }
        }
      },
      "StaffUploadRequest": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string" },
          "locale": { "type": "string" },
          "uploadedInputStream": { "type": "string", "format": "binary" }
        }
      },
      "StandingInstructionCreationRequest": {
        "type": "object",
        "properties": {
          "amount": { "type": "string" },
          "dateFormat": { "type": "string" },
          "fromAccountId": { "type": "string" },
          "fromAccountType": { "type": "string" },
          "fromClientId": { "type": "string" },
          "fromOfficeId": { "type": "string" },
          "instructionType": { "type": "string" },
          "locale": { "type": "string" },
          "monthDayFormat": { "type": "string" },
          "name": { "type": "string" },
          "priority": { "type": "string" },
          "recurrenceFrequency": { "type": "string" },
          "recurrenceInterval": { "type": "string" },
          "recurrenceOnMonthDay": { "type": "string" },
          "recurrenceType": { "type": "string" },
          "status": { "type": "string" },
          "toAccountId": { "type": "string" },
          "toAccountType": { "type": "string" },
          "toClientId": { "type": "string" },
          "toOfficeId": { "type": "string" },
          "transferType": { "type": "string" },
          "validFrom": { "type": "string" },
          "validTill": { "type": "string" }
        }
      },
      "StandingInstructionUpdatesRequest": {
        "type": "object",
        "properties": {
          "amount": { "type": "string" },
          "dateFormat": { "type": "string" },
          "instructionType": { "type": "string" },
          "locale": { "type": "string" },
          "monthDayFormat": { "type": "string" },
          "name": { "type": "string" },
          "priority": { "type": "string" },
          "recurrenceFrequency": { "type": "string" },
          "recurrenceInterval": { "type": "string" },
          "recurrenceOnMonthDay": { "type": "string" },
          "recurrenceType": { "type": "string" },
          "status": { "type": "string" },
          "validFrom": { "type": "string" },
          "validTill": { "type": "string" }
        }
      },
      "StringEnumOptionData": {
        "type": "object",
        "properties": {
          "code": { "type": "string" },
          "id": { "type": "string" },
          "value": { "type": "string" }
        }
      },
      "SubjectName": {
        "type": "object",
        "properties": {
          "displayName": { "type": "string" },
          "firstName": { "type": "string" },
          "lastName": { "type": "string" },
          "middleName": { "type": "string" }
        }
      },
      "Survey": {
        "type": "object",
        "properties": {
          "components": { "type": "array", "items": { "$ref": "#/components/schemas/Component" } },
          "countryCode": { "type": "string" },
          "description": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "key": { "type": "string" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "questions": { "type": "array", "items": { "$ref": "#/components/schemas/Question" } },
          "validFrom": { "type": "string", "format": "date" },
          "validTo": { "type": "string", "format": "date" }
        }
      },
      "SurveyData": {
        "type": "object",
        "properties": {
          "componentDatas": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ComponentData" }
          },
          "countryCode": { "type": "string" },
          "description": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "key": { "type": "string" },
          "name": { "type": "string" },
          "questionDatas": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/QuestionData" }
          },
          "validFrom": { "type": "string", "format": "date" },
          "validTo": { "type": "string", "format": "date" }
        }
      },
      "TableQueryData": {
        "type": "object",
        "properties": {
          "query": { "$ref": "#/components/schemas/AdvancedQueryData" },
          "table": { "type": "string" }
        }
      },
      "TaxComponent": {
        "type": "object",
        "properties": {
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "creditAccount": { "$ref": "#/components/schemas/GLAccount" },
          "creditAccountType": { "type": "integer", "format": "int32" },
          "debitAccount": { "$ref": "#/components/schemas/GLAccount" },
          "debitAccountType": { "type": "integer", "format": "int32" },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "percentage": { "type": "number" },
          "startDate": { "type": "string", "format": "date" },
          "taxComponentHistories": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/TaxComponentHistory" },
            "uniqueItems": true
          },
          "taxGroupMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/TaxGroupMappings" },
            "uniqueItems": true
          }
        }
      },
      "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" }
          }
        }
      },
      "TaxComponentHistory": {
        "type": "object",
        "properties": {
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "new": { "type": "boolean" },
          "percentage": { "type": "number" }
        }
      },
      "TaxComponentHistoryData": {
        "type": "object",
        "properties": {
          "endDate": { "type": "string", "format": "date" },
          "percentage": { "type": "number" },
          "startDate": { "type": "string", "format": "date" }
        }
      },
      "TaxDetailsData": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "taxComponent": { "$ref": "#/components/schemas/TaxComponentData" }
        }
      },
      "TaxGroup": {
        "type": "object",
        "properties": {
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "name": { "type": "string" },
          "new": { "type": "boolean" },
          "taxGroupMappings": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/TaxGroupMappings" },
            "uniqueItems": true
          }
        }
      },
      "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" }
          }
        }
      },
      "TaxGroupMappings": {
        "type": "object",
        "properties": {
          "createdBy": { "type": "integer", "format": "int64" },
          "createdDate": { "type": "string", "format": "date-time" },
          "endDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64" },
          "lastModifiedBy": { "type": "integer", "format": "int64" },
          "lastModifiedDate": { "type": "string", "format": "date-time" },
          "new": { "type": "boolean" },
          "startDate": { "type": "string", "format": "date" },
          "taxComponent": { "$ref": "#/components/schemas/TaxComponent" },
          "taxGroup": { "$ref": "#/components/schemas/TaxGroup" }
        }
      },
      "TaxGroupMappingsData": {
        "type": "object",
        "properties": {
          "endDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64" },
          "startDate": { "type": "string", "format": "date" },
          "taxComponent": { "$ref": "#/components/schemas/TaxComponentData" }
        }
      },
      "TemplateCreateRequest": {
        "type": "object",
        "properties": {
          "entity": { "type": "integer", "format": "int32" },
          "name": { "type": "string", "maxLength": 200, "minLength": 0 },
          "text": { "type": "string" },
          "type": { "type": "integer", "format": "int32" }
        }
      },
      "TemplateCreateResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "TemplateData": {
        "type": "object",
        "properties": {
          "entity": { "type": "integer", "format": "int32" },
          "id": { "type": "integer", "format": "int64" },
          "mappers": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/TemplateMapperData" }
          },
          "name": { "type": "string" },
          "text": { "type": "string" },
          "type": { "type": "integer", "format": "int32" }
        }
      },
      "TemplateDeleteResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "TemplateMapperData": {
        "type": "object",
        "properties": {
          "mapperkey": { "type": "string" },
          "mapperorder": { "type": "integer", "format": "int32" },
          "mappervalue": { "type": "string" }
        }
      },
      "TemplateUpdateRequest": {
        "type": "object",
        "properties": {
          "entity": { "type": "integer", "format": "int32" },
          "id": { "type": "integer", "format": "int64" },
          "mappers": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/TemplateMapperData" }
          },
          "name": { "type": "string" },
          "text": { "type": "string" },
          "type": { "type": "integer", "format": "int32" }
        },
        "required": ["id"]
      },
      "TemplateUpdateResponse": {
        "type": "object",
        "properties": { "resourceId": { "type": "integer", "format": "int64" } }
      },
      "TransactionDetailData": {
        "type": "object",
        "properties": {
          "noteData": { "$ref": "#/components/schemas/NoteData" },
          "paymentDetails": { "$ref": "#/components/schemas/PaymentDetailData" },
          "transactionId": { "type": "integer", "format": "int64" },
          "transactionType": { "$ref": "#/components/schemas/TransactionTypeEnumData" }
        }
      },
      "TransactionDetails": {
        "type": "object",
        "properties": {
          "noteData": { "$ref": "#/components/schemas/NoteData" },
          "paymentDetails": { "$ref": "#/components/schemas/PaymentDetailData" },
          "transactionId": { "type": "integer", "format": "int64", "example": 2 },
          "transactionType": { "$ref": "#/components/schemas/EnumOptionType" }
        }
      },
      "TransactionProcessingStrategyData": {
        "type": "object",
        "properties": {
          "code": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" }
        }
      },
      "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"
        ]
      },
      "TransactionTypeEnumData": {
        "type": "object",
        "properties": {
          "code": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "value": { "type": "string" }
        }
      },
      "UpdateChangesResponse": {
        "type": "object",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 900800500600 },
          "amount": { "type": "number", "example": 10000 },
          "bankName": { "type": "string", "example": "AMANA" },
          "date": { "type": "string", "format": "date", "example": "2021-08-10" }
        }
      },
      "UpdatePostDatedCheckRequest": {
        "type": "object",
        "description": "UpdatePostDatedCheckRequest",
        "properties": {
          "accountNo": { "type": "integer", "format": "int64", "example": 900800300400 },
          "amount": { "type": "number", "example": 10000 },
          "date": { "type": "string", "format": "date", "example": "2021-08-10" },
          "dateFormat": { "type": "string", "example": "dd MM YYYY" },
          "locale": { "type": "string", "example": "en" },
          "name": { "type": "string", "example": "AMANA" },
          "repaymentDate": { "type": "string", "format": "date", "example": "2021-07-19" }
        }
      },
      "UpdatePostDatedCheckResponse": {
        "type": "object",
        "description": "UpdatePostDatedCheckResponse",
        "properties": {
          "changes": { "$ref": "#/components/schemas/UpdateChangesResponse" },
          "resourceId": { "type": "integer", "format": "int64", "example": 12 }
        }
      },
      "UploadRequest": {
        "type": "object",
        "properties": {
          "dateFormat": { "type": "string" },
          "locale": { "type": "string" },
          "uploadedInputStream": { "type": "string", "format": "binary" }
        }
      },
      "WorkingCapitalBreachData": {
        "type": "object",
        "properties": {
          "breachAmount": { "type": "number" },
          "breachAmountCalculationType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "breachFrequency": { "type": "integer", "format": "int32" },
          "breachFrequencyType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string", "example": "Default WCL Breach" }
        }
      },
      "WorkingCapitalBreachRequest": {
        "type": "object",
        "properties": {
          "breachAmount": { "type": "number" },
          "breachAmountCalculationType": { "type": "string" },
          "breachFrequency": { "type": "integer", "format": "int32" },
          "breachFrequencyType": { "type": "string" },
          "name": { "type": "string" }
        }
      },
      "WorkingCapitalBreachTemplateResponse": {
        "type": "object",
        "properties": {
          "breachAmountCalculationTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          },
          "breachFrequencyTypeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/StringEnumOptionData" }
          }
        }
      },
      "WorkingCapitalCollection": {
        "type": "object",
        "description": "Working Capital Delinquency Collection Data",
        "properties": {
          "delinquencyPausePeriods": {
            "type": "array",
            "description": "Pause periods during which delinquency is not counted",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalCollectionDelinquencyPausePeriod"
            }
          },
          "delinquentAmount": {
            "type": "number",
            "description": "Total delinquent amount",
            "example": 1234.56
          },
          "delinquentDate": {
            "type": "string",
            "format": "date",
            "description": "Date when the loan became delinquent"
          },
          "delinquentDays": {
            "type": "integer",
            "format": "int64",
            "description": "Number of days the loan has been delinquent, from the oldest active delinquency tag",
            "example": 0
          },
          "delinquentPrincipal": {
            "type": "number",
            "description": "Delinquent principal amount",
            "example": 1000
          },
          "installmentLevelDelinquency": {
            "type": "array",
            "description": "Delinquency amounts grouped by age range (installment-level delinquency; Term-compatible name)",
            "items": {
              "$ref": "#/components/schemas/WorkingCapitalCollectionRangeScheduleDelinquency"
            }
          },
          "lastPaymentAmount": {
            "type": "number",
            "description": "Amount of the last payment made on the loan",
            "example": 123.45
          },
          "lastPaymentDate": {
            "type": "string",
            "format": "date",
            "description": "Date the loan was last paid by any repayment like transaction (repayment, goodwill credit, payout refund or charge adjustment)"
          },
          "lastRepaymentAmount": {
            "type": "number",
            "description": "Amount of the last repayment made on the loan",
            "example": 123.45
          },
          "lastRepaymentDate": {
            "type": "string",
            "format": "date",
            "description": "Date the loan was last repaid by a repayment transaction"
          },
          "pastDueDays": {
            "type": "integer",
            "format": "int64",
            "description": "Days the oldest unmet minimum-payment period is past due (measured from its toDate); 0 when not past due",
            "example": 0
          }
        }
      },
      "WorkingCapitalCollectionDelinquencyPausePeriod": {
        "type": "object",
        "description": "Pause period during which delinquency tracking is paused",
        "properties": {
          "active": {
            "type": "boolean",
            "description": "Whether the pause period is active",
            "example": true
          },
          "pausePeriodEnd": {
            "type": "string",
            "format": "date",
            "description": "Pause period end date"
          },
          "pausePeriodStart": {
            "type": "string",
            "format": "date",
            "description": "Pause period start date"
          }
        }
      },
      "WorkingCapitalCollectionRangeScheduleDelinquency": {
        "type": "object",
        "description": "Delinquency amount for a specific age range",
        "properties": {
          "classification": {
            "type": "string",
            "description": "Classification for the delinquency range",
            "example": "Current"
          },
          "delinquentAmount": {
            "type": "number",
            "description": "Delinquent amount for this range",
            "example": 123.45
          },
          "maximumAgeDays": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum age in days for the range",
            "example": 30
          },
          "minimumAgeDays": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum age in days for the range",
            "example": 1
          },
          "rangeId": {
            "type": "integer",
            "format": "int64",
            "description": "Delinquency range id",
            "example": 1
          }
        }
      },
      "WorkingCapitalLoanBreachActionData": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "enum": ["PAUSE", "RESUME", "RESCHEDULE", "RESET", "UNDO_RESET", "DISABLE", "ENABLE"]
          },
          "effectiveEndDate": { "type": "string", "format": "date" },
          "endDate": { "type": "string", "format": "date" },
          "frequency": { "type": "integer", "format": "int32" },
          "frequencyType": { "type": "string", "enum": ["DAYS", "WEEKS", "MONTHS", "YEARS"] },
          "id": { "type": "integer", "format": "int64" },
          "minimumPayment": { "type": "number" },
          "minimumPaymentType": { "type": "string", "enum": ["PERCENTAGE", "FLAT"] },
          "startDate": { "type": "string", "format": "date" }
        }
      },
      "WorkingCapitalLoanBreachScheduleData": {
        "type": "object",
        "properties": {
          "breach": { "type": "boolean" },
          "fromDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64" },
          "loanId": { "type": "integer", "format": "int64" },
          "minPaymentAmount": { "type": "number" },
          "nearBreach": { "type": "boolean" },
          "numberOfDays": { "type": "integer", "format": "int32" },
          "outstandingAmount": { "type": "number" },
          "paidAmount": { "type": "number" },
          "periodNumber": { "type": "integer", "format": "int32" },
          "reset": { "type": "boolean" },
          "toDate": { "type": "string", "format": "date" }
        }
      },
      "WorkingCapitalLoanChargeData": {
        "type": "object",
        "properties": {
          "amount": { "type": "number" },
          "amountOutstanding": { "type": "number" },
          "amountPaid": { "type": "number" },
          "amountWaived": { "type": "number" },
          "amountWrittenOff": { "type": "number" },
          "chargeCalculationType": { "$ref": "#/components/schemas/EnumOptionData" },
          "chargeId": { "type": "integer", "format": "int64" },
          "chargeOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/ChargeData" }
          },
          "chargePaymentMode": { "$ref": "#/components/schemas/EnumOptionData" },
          "chargeTimeType": { "$ref": "#/components/schemas/EnumOptionData" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "dueDate": { "type": "string", "format": "date" },
          "externalId": { "$ref": "#/components/schemas/ExternalId" },
          "externalLoanId": { "$ref": "#/components/schemas/ExternalId" },
          "id": { "type": "integer", "format": "int64" },
          "loanId": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "paid": { "type": "boolean" },
          "penalty": { "type": "boolean" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "WorkingCapitalLoanCommandTemplateData": {
        "type": "object",
        "properties": {
          "approvalAmount": { "type": "number" },
          "approvalDate": { "type": "string", "format": "date" },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "discountAmount": { "type": "number" },
          "expectedDisbursementDate": { "type": "string", "format": "date" },
          "overrideDiscountDisabled": { "type": "boolean" }
        }
      },
      "WorkingCapitalLoanDelinquencyActionData": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "enum": ["PAUSE", "RESUME", "RESCHEDULE", "RESET", "UNDO_RESET", "DISABLE", "ENABLE"]
          },
          "effectiveEndDate": { "type": "string", "format": "date" },
          "endDate": { "type": "string", "format": "date" },
          "frequency": { "type": "integer", "format": "int32" },
          "frequencyType": { "type": "string", "enum": ["DAYS", "WEEKS", "MONTHS", "YEARS"] },
          "id": { "type": "integer", "format": "int64" },
          "minimumPayment": { "type": "number" },
          "minimumPaymentType": { "type": "string", "enum": ["PERCENTAGE", "FLAT"] },
          "startDate": { "type": "string", "format": "date" }
        }
      },
      "WorkingCapitalLoanDelinquencyRangeScheduleData": {
        "type": "object",
        "properties": {
          "delinquentAmount": { "type": "number" },
          "delinquentDays": { "type": "integer", "format": "int64" },
          "expectedAmount": { "type": "number" },
          "fromDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64" },
          "loanId": { "type": "integer", "format": "int64" },
          "minPaymentCriteriaMet": { "type": "boolean" },
          "outstandingAmount": { "type": "number" },
          "paidAmount": { "type": "number" },
          "periodNumber": { "type": "integer", "format": "int32" },
          "toDate": { "type": "string", "format": "date" }
        }
      },
      "WorkingCapitalLoanNearBreachActionData": {
        "type": "object",
        "properties": {
          "action": { "type": "string", "enum": ["RESCHEDULE"] },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "deprecated": true,
            "description": "Audit/system timestamp. Prefer submittedOnDate for the booking business/tenant date."
          },
          "frequency": { "type": "integer", "format": "int32" },
          "frequencyType": { "type": "string" },
          "id": { "type": "integer", "format": "int64" },
          "loanId": { "type": "integer", "format": "int64" },
          "submittedOnDate": { "type": "string", "format": "date" },
          "threshold": { "type": "number" }
        }
      },
      "WorkingCapitalLoanPaymentChannelToFundSourceMappings": {
        "type": "object",
        "description": "WorkingCapitalLoanPaymentChannelToFundSourceMappings",
        "properties": {
          "fundSourceAccountId": { "type": "integer", "format": "int64" },
          "paymentTypeId": { "type": "integer", "format": "int64" }
        }
      },
      "WorkingCapitalLoanPeriodPaymentRateChangeData": {
        "type": "object",
        "properties": {
          "calculatedAnnualEir": {
            "type": "number",
            "description": "Annual EIR of the segment this change opened, as a percentage (e.g. 43.756245), snapshotted when the change was booked"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "deprecated": true,
            "description": "Audit/system timestamp. Prefer submittedOnDate for the booking business/tenant date."
          },
          "dailyPaymentAmount": { "type": "number" },
          "effectiveDate": { "type": "string", "format": "date" },
          "id": { "type": "integer", "format": "int64" },
          "loanId": { "type": "integer", "format": "int64" },
          "newRate": { "type": "number" },
          "previousRate": { "type": "number" },
          "reversed": { "type": "boolean" },
          "reversedOnDate": { "type": "string", "format": "date" },
          "segmentTerm": { "type": "integer", "format": "int32" },
          "submittedOnDate": { "type": "string", "format": "date" }
        }
      },
      "WorkingCapitalLoanProductChargeToGLAccountMapper": {
        "type": "object",
        "description": "WorkingCapitalLoanProductChargeToGLAccountMapper",
        "properties": {
          "chargeId": { "type": "integer", "format": "int64" },
          "incomeAccountId": { "type": "integer", "format": "int64" }
        }
      },
      "WorkingCapitalLoanTransactionPaymentDetailData": {
        "type": "object",
        "description": "Payment detail data",
        "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/PaymentTypeData" },
          "receiptNumber": { "type": "string", "example": "rec123" },
          "routingCode": { "type": "string", "example": "rou123" }
        }
      },
      "WorkingCapitalLoanTransactionTemplateResponse": {
        "type": "object",
        "description": "Transaction template for one command. Every command fills expectedAmount; the remaining fields are the extras that only some commands carry, and are left null otherwise. Amounts that come from what is owed are reported as of the requested transactionDate; amounts that come from what has been paid, written off or recovered do not vary with it.",
        "properties": {
          "chargeOffDate": {
            "type": "string",
            "format": "date",
            "description": "chargeOff only: defaults to the business date"
          },
          "chargeOffReasonOptions": {
            "type": "array",
            "description": "chargeOff only: charge-off reason options",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "classificationOptions": {
            "type": "array",
            "description": "Classification options for the command's classification code",
            "items": { "$ref": "#/components/schemas/CodeValueData" }
          },
          "currency": { "$ref": "#/components/schemas/CurrencyData" },
          "discountAmount": {
            "type": "number",
            "description": "disburse only: approved discount amount",
            "example": 0
          },
          "expectedAmount": {
            "type": "number",
            "description": "Suggested amount to pre-fill, which the user may change. Its meaning follows the requested command: outstanding principal for repayment and goodwillCredit, the overpayment for creditBalanceRefund, the still-recoverable amount for recoveryPayment, the approved principal for disburse, the full payoff for prepayLoan, and the outstanding balance for chargeOff",
            "example": 9000
          },
          "expectedDisbursementDate": {
            "type": "string",
            "format": "date",
            "description": "disburse only: expected disbursement date"
          },
          "feeChargesPortion": {
            "type": "number",
            "description": "prepayLoan only: outstanding fee portion of the payoff amount",
            "example": 0
          },
          "overrideDiscountDisabled": {
            "type": "boolean",
            "description": "disburse only: whether the product forbids overriding the default discount",
            "example": false
          },
          "paymentTypeOptions": {
            "type": "array",
            "description": "Payment type options, where the command records a payment",
            "items": { "$ref": "#/components/schemas/PaymentTypeData" }
          },
          "penaltyChargesPortion": {
            "type": "number",
            "description": "prepayLoan only: outstanding penalty portion of the payoff amount",
            "example": 0
          },
          "principalPortion": {
            "type": "number",
            "description": "prepayLoan only: outstanding principal portion of the payoff amount",
            "example": 10000
          },
          "transactionDate": { "type": "string", "format": "date" },
          "type": { "$ref": "#/components/schemas/LoanTransactionEnumData" },
          "wcLoanId": { "type": "integer", "format": "int64", "example": 1 }
        }
      },
      "WorkingCapitalNearBreachData": {
        "type": "object",
        "properties": {
          "frequency": { "type": "integer", "format": "int32" },
          "frequencyType": { "$ref": "#/components/schemas/StringEnumOptionData" },
          "id": { "type": "integer", "format": "int64" },
          "name": { "type": "string" },
          "threshold": { "type": "number" }
        }
      },
      "WorkingCapitalNearBreachRequest": {
        "type": "object",
        "properties": {
          "nearBreachFrequency": { "type": "integer", "format": "int32" },
          "nearBreachFrequencyType": { "type": "string" },
          "nearBreachName": { "type": "string" },
          "nearBreachThreshold": { "type": "number" }
        }
      },
      "WorkingCapitalPostChargeOffReasonToExpenseAccountMappings": {
        "type": "object",
        "description": "WorkingCapitalPostChargeOffReasonToExpenseAccountMappings",
        "properties": {
          "chargeOffReasonCodeValueId": { "type": "integer", "format": "int64" },
          "expenseAccountId": { "type": "integer", "format": "int64" }
        }
      },
      "WorkingCapitalPostWriteOffReasonToExpenseAccountMappings": {
        "type": "object",
        "description": "WorkingCapitalPostWriteOffReasonToExpenseAccountMappings",
        "properties": {
          "expenseAccountId": { "type": "integer", "format": "int64" },
          "writeOffReasonCodeValueId": { "type": "integer", "format": "int64" }
        }
      },
      "WorkingDaysData": {
        "type": "object",
        "properties": {
          "extendTermForDailyRepayments": { "type": "boolean" },
          "extendTermForRepaymentsOnHolidays": { "type": "boolean" },
          "id": { "type": "integer", "format": "int64" },
          "recurrence": { "type": "string" },
          "repaymentRescheduleOptions": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/EnumOptionData" }
          },
          "repaymentRescheduleType": { "$ref": "#/components/schemas/EnumOptionData" }
        }
      },
      "WorkingDaysUpdateRequest": {
        "type": "object",
        "properties": {
          "extendTermForDailyRepayments": { "type": "boolean" },
          "extendTermForRepaymentsOnHolidays": { "type": "boolean" },
          "recurrence": { "type": "string" },
          "repaymentRescheduleType": { "type": "integer", "format": "int32" }
        }
      },
      "WorkingDaysUpdateResponse": {
        "type": "object",
        "properties": {
          "changes": { "type": "object", "additionalProperties": { "type": "object" } },
          "extendTermForDailyRepayments": { "type": "boolean" },
          "extendTermForRepaymentsOnHolidays": { "type": "boolean" },
          "recurrence": { "type": "string" },
          "repaymentRescheduleType": { "type": "integer", "format": "int32" },
          "resourceId": { "type": "integer", "format": "int64" }
        }
      }
    },
    "securitySchemes": {
      "basicAuth": { "scheme": "basic", "type": "http" },
      "tenantid": { "in": "header", "name": "fineract-platform-tenantid", "type": "apiKey" }
    }
  }
}
