{
 "openapi": "3.0.4",
 "info": {
  "title": "Common Methods",
  "description": "The methods no single card product owns — reference data, card lifecycle, PIN, limits, statements and disputes. Core banking calls them, and so do the digital channels",
  "contact": {
   "name": "DgPays",
   "url": "https://www.dgpays.com"
  },
  "license": {
   "name": "License",
   "url": "https://www.dgpays.com"
  },
  "version": "v8.3.5.10"
 },
 "servers": [
  {
   "url": "https://sandboxpub.cms.dgpays.com/SandBox/Integrationcorebanking",
   "description": "Sandbox — safe to call; nothing settles."
  }
 ],
 "paths": {
  "/Indoor/api/getCardRestriction": {
   "post": {
    "tags": [
     "Permissions and restrictions"
    ],
    "summary": "Service that lists restrictions defined on the card",
    "description": "Retrieves debit card restrictions for a given ShadowCardNumber. Accepts GetDebitCardRestrictionRequest with ShadowCardNumber. Returns GetDebitCardRestrictionResponse containing a list of CardRestriction items, each including RestrictionCode, RestrictionCodeDescription, RestrictionPermissionIndicator, and RestrictionPermissionIndicatorDescription. Uses _intRepository.GetCardRestriction internally.",
    "operationId": "getCardRestriction",
    "requestBody": {
     "description": "Get Debit Card Restriction Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetDebitCardRestrictionRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\n`cardRestrictionList` is empty when the card carries no restriction, and equally empty when the shadow card number matches nothing: this reads a view directly and does not check that the card exists first.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetDebitCardRestrictionResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getCreditTransactionList": {
   "post": {
    "tags": [
     "Transactions"
    ],
    "summary": "Service that lists all credit card transactions",
    "description": "Retrieves a list of credit card transactions for a given shadow card number. Accepts GetCreditTransactionListRequest containing ShadowCardNumber, EmbossName, SourceNetwork, TrnCodeMatrixId, MaxAmount, MinAmount, Transactiondatebegin, Transactiondateend, and TrnCode. Returns GetCreditTransactionListResponse with a list of CreditTransactionList items. Each item contains transaction details including AcqRefNumber, AuthorizationNumber, BillingAmount, BillingCurrency, Merchant details, Card details, transaction amounts, dates, log/status codes, installment info, and rewards. Validates Transactiondatebegin, Transactiondateend, and ShadowCardNumber before calling _crdTransactionServiceProxy.GetCreditTransactionList().",
    "operationId": "getCreditTransactionList",
    "requestBody": {
     "description": "Get Credit Transaction List Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetCreditTransactionListRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe facade checks only that the two dates and the card number are present. It does not check that the begin date falls before the end date, does not cap the width of the range, and does not check that the card exists; the credit transaction service behind it decides all of that.\n\nEvery other field is passed through untouched and unvalidated. The request the facade builds also carries a customer number, but the line that would fill it is commented out, so a caller cannot narrow the list by customer through this operation.\n\nA card with no matching transactions comes back as a success with no `creditTransaction` array rather than as an error.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetCreditTransactionListResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getBasicCardInformationByPan": {
   "post": {
    "tags": [
     "Card lifecycle"
    ],
    "summary": "Service that lists card details based on an open card number",
    "description": "Retrieves basic card information for a given PAN (Primary Account Number). Accepts GetBasicCardInformationByPanRequest containing Pan. Returns GetBasicCardInformationByPanResponse with Bin, Psn (card sequence number), CardType, MaskedCardNumber, EncryptedCardNumber, HashCardNumber, ShadowCardNumber, and CustomerNumber.",
    "operationId": "getBasicCardInformationByPan",
    "requestBody": {
     "description": "Get Basic Card Information By Pan Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetBasicCardInformationByPanRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nEight fields off the same read `getCardByCardNumber` does — bin, PAN sequence, card type, masked and encrypted number, hash, shadow number and customer number. Nothing here is unavailable from that operation; this one is the short form. It does not guard against the service answering nothing.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetBasicCardInformationByPanResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getPaymentAndCashadvanceInformationByCriterias": {
   "post": {
    "tags": [
     "Transactions"
    ],
    "summary": "Service that lists customer’s payment and cash-advance information based on specified criteria",
    "description": "Retrieves payment and cash advance information filtered by various criteria including shadow card number, date range, customer number, channel type, branch, and transaction code. Returns a list of transactions with details such as masked card number, payment date, transaction amount, transaction code, currency, description, status, provision number, product transaction reference, channel information, and status description.",
    "operationId": "getPaymentAndCashadvanceInformationByCriterias",
    "requestBody": {
     "description": "Get Payment And Cashadvance Information By Criterias Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetPaymentAndCashadvanceInformationByCriteriasRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe facade validates nothing at all here. Both dates, the card, the customer, the channel and the branch go straight to the credit transaction service, which decides whether the range is acceptable and whether the card and customer exist.\n\n`trnCodeMatrix` is different: the service never sees it. The facade fetches the whole answer and then filters it in memory against a fixed list of three values. `06` and `08` are matched against each row's transaction code, while `CASHADVANCE` is matched against its transaction code matrix id. A value outside that list is not rejected — it simply matches nothing, and the operation returns a success with an empty list.\n\nThe filter is applied after the service has already built the full result, so narrowing by `trnCodeMatrix` does not make the call cheaper.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetPaymentAndCashadvanceInformationByCriteriasResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getProductByShadowCardNumber": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists product information for a card based on Shadow Card Number",
    "description": "Retrieves product information based on a shadow card number. Returns product brand, card type, product number, product name, product short name, and digital card ability.",
    "operationId": "getProductByShadowCardNumber",
    "requestBody": {
     "description": "Get Product By Shadow Card Number Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetProductByShadowCardNumberRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe card record is read only to obtain its product number. The owner name, status, expiry date, masked card number and customer number that come back with it are discarded, and nothing about the card itself appears in the response.\n\nThe product attributes are then taken from the integration layer's in-memory product cache, not from the database, so a product definition changed since the last cache refresh is reported with its cached values.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetProductByShadowCardNumberResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "description": "**Refused.** Two unlike failures arrive with this status, and `errorCode` is what tells them apart.\n\n- **A field was wrong.** `errorCode` is a validation code — `NotNull`, `ZeroValue`, `MaxLengthExceed` and the rest — and `propertyName` names the field it is about.\n- **A rule was not met.** `errorCode` is one of the numbered codes below, and the refusal is about the request as a whole rather than any one field.\n\n| Code | Name | Raised when |\n| --- | --- | --- |\n| `2408` | CustomerAssetNotFound | `shadowCardNumber` matches no customer asset |\n| `40101` | AssetNotFound | the customer service returns no response at all |\n| `40102` | ProductNotFound | the asset's product number is not held in the integration layer's product cache |",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getDelinquencyInterestAmount": {
   "post": {
    "tags": [
     "Statements and billing"
    ],
    "summary": "Service that displays late interest/profit share amount",
    "description": "Retrieves delinquency interest amounts for a given ShadowCardNumber. Accepts GetDelinquencyInterestAmountRequest with ShadowCardNumber. Calls _intRepository.GetDelinquencyInterestAmount() and maps results to ListGetDelinquencyInterestAmountResponse containing ListOfDelinquency with properties such as CurrencyCode, Rate, MainCardRefNumber, DelayAmountWithTax, and DelayType.",
    "operationId": "getDelinquencyInterestAmount",
    "requestBody": {
     "description": "Get Delinquency Interest Amount Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetDelinquencyInterestAmountRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe list is read live from the statement tables, not from a cache. It covers only valid statement headers of the card's main card reference, and only delay details that are valid and of delay type 1 or 2, which are returned as `delayType` `SatışGecikme` and `NakitGecikme`. A shadow card number that matches no card, or one whose card has no statements, returns `listOfDelinquency` as an empty list rather than an error. Statement headers with no matching delay detail still appear, with `rate` and `delayAmountWithTax` at zero.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ListGetDelinquencyInterestAmountResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getDebitCardLogDataListByShadowCardNumber": {
   "post": {
    "tags": [
     "Card lifecycle"
    ],
    "summary": "Service that lists debit card log information based on the provided Shadow Card Number",
    "description": "Retrieves debit card log data for a given ShadowCardNumber. Accepts GetDebitCardLogDataListByShadowCardNumberRequest with ShadowCardNumber, CustomerNumber, LogCode, StartDate, and EndDate. Calls _debitManagementServiceProxy.GetCardLogDataListByShadowCardNumber() and maps results to CardLogData. Returns GetDebitCardLogDataListByShadowCardNumberResponse containing a list of CardLogData with properties such as CardRefNumber, ShadowCardNumber, MaskedCardNumber, CustomerNumber, LogCode, LogCodeDescription, OldValue, NewValue, CardLogDetail, InsertChannelId, InsertChannelDescription, InsertUserId, and InsertDate.",
    "operationId": "getDebitCardLogDataListByShadowCardNumber",
    "requestBody": {
     "description": "Get Debit Card Log Data List By Shadow Card Number Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetDebitCardLogDataListByShadowCardNumberRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nRows are read live from the debit card log. The query inner-joins the card log definition table to resolve `logCodeDescription`, so a log row whose code has no definition row is dropped from the answer altogether; the channel description is joined outer, so an unknown channel leaves `insertChannelDescription` empty. A card with no log rows inside the window returns an empty `cardLogDataList` rather than an error. The result is not ordered and carries no cap.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetDebitCardLogDataListByShadowCardNumberResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getEmbossReasonSubDefByValidFlag": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists valid card issuance reasons",
    "description": "Retrieves emboss reason sub definitions with their valid and use flags. Calls _pmServiceProxy.GetEmbossReasonSubDefByValidFlag() and maps results to GetEmbossReasonSubDefByValidFlagResponse containing EmbossReasonSubDefList with properties ValidFlag, EmbossReasonSubCode, EmbossReasonSubDesc, and UseFlag.",
    "operationId": "getEmbossReasonSubDefByValidFlag",
    "responses": {
     "200": {
      "description": "Success.\n\nThe operation takes no request body, and the parameter service call behind it takes no arguments either. Every caller gets the same list; the valid-flag filter named in the operation is applied inside the parameter service and cannot be influenced from here.\n\nIf the parameter service returns nothing, a null list or an empty list, `embossReasonSubDefList` is never assigned and the response comes back with no list at all rather than with an empty one, and never as a refusal.\n\nEach definition is re-projected onto exactly four fields: `validFlag`, `embossReasonSubCode`, `embossReasonSubDesc` and `useFlag`.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetEmbossReasonSubDefByValidFlagResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getAvailableEmbossReasonList": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists card issuance reasons available for printing",
    "description": "Retrieves a list of available emboss reasons for a given card identified by ShadowCardNumber. The method accepts GetAvailableEmbossReasonListRequest containing ShadowCardNumber. The response returns GetAvailableEmbossReasonListResponse with a list of GetAvailableEmbossReasonByCardStatusResult, each containing EmbossReasonSubCode, EmbossReasonSubDesc, StatusCode, StatusReasonCode, and ProductNumber.",
    "operationId": "getAvailableEmbossReasonList",
    "requestBody": {
     "description": "Get Available Emboss Reason List Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetAvailableEmbossReasonListRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe facade adds nothing: it forwards the shadow card number to the CIS online service and re-projects the result. This operation has no validation block, so a blank shadow card number reaches the downstream service unchecked.\n\nThe mapping is null-tolerant at every level. If the CIS online service returns no response, or a response with no result list, `getAvailableEmbossReasonByCardStatusResult` is absent from the reply. A shadow card number that matches nothing therefore comes back as a 200 with no list rather than as a refusal.\n\nEach entry is re-projected onto exactly five fields: `embossReasonSubCode`, `embossReasonSubDesc`, `productNumber`, `statusCode` and `statusReasonCode`.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetAvailableEmbossReasonListResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/accountStatus": {
   "post": {
    "tags": [
     "Account linking"
    ],
    "summary": "Service that displays the account status",
    "description": "Retrieves the current status of an account by querying the core banking and BKM management systems. The service accepts account identification details and returns the account status information mapped from the BKM response. This operation is read-only and does not perform any state-changing action on the account.",
    "operationId": "accountStatus",
    "requestBody": {
     "description": "Account Status Req",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/AccountStatusReq"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe facade is a pass-through with no logic of its own. It converts the request onto the BKM management service's own `AccountStatusRequest`, calls that service and converts the reply back. There is no validation, no defaulting, no branching and no error handling in the facade, so every rule behind this operation belongs to the BKM management service.\n\nThe reply is never inspected. A refusal the BKM management service reports inside its `result` block (`resultCode`, `resultMsg`, `resultDetail`) is returned unchanged as a 200, so a 200 here does not mean the account status check succeeded. Callers must read `result` to decide.\n\nThe conversion is a whole-object copy in both directions. Any request field with no counterpart on the downstream contract is dropped without a warning, and any downstream field with no counterpart here is discarded on the way back.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AccountStatusRes"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/executeCampaignTransaction": {
   "post": {
    "tags": [
     "Campaigns and rewards"
    ],
    "summary": "Service that performs financial maintenance for the customer and applies or cancels campaign discounts",
    "description": "Executes a campaign transaction for a given ShadowCardNumber. Validates the request including Channel, TrnCodeMatrixId, and Amount limits. Adjusts amount by dividing by 100. Retrieves default description from campaign system parameters if not provided. Calls DoManualFinance on CRD transaction service proxy with finance details including TranAmount, TranCurrency, TranDescription, ShadowCardNumber, ChannelType, RewardType.None, Onus network, current TranValueDate, and SystemEntry origin. Returns Utid and TrnId from the response.",
    "operationId": "executeCampaignTransaction",
    "requestBody": {
     "description": "Execute Campaign Transaction Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ExecuteCampaignTransactionRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\n`amount` is not the amount posted. The facade divides the value it receives by 100 before validating it and before passing it on, so the amount limits and the posted transaction are both in major units while the request is in minor ones.\n\nBoth amount limits come from a cached platform parameter rather than from the code. If that parameter is missing or unparseable the corresponding limit is not applied at all, so an unbounded amount can reach the service.\n\nSeveral fields of the transaction are forced by the facade and cannot be influenced by the request: the source network is set to on-us, the reward type to none, the transaction origin to system entry, the merchant country code to a fixed value, and the value date to the moment the call is handled rather than to any date the caller supplies.\n\nThe credit transaction service also reports the daily transaction pool record it created; this facade returns only `utid` and `trnId` and discards the rest.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ExecuteCampaignTransactionResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "description": "**Refused.** Two unlike failures arrive with this status, and `errorCode` is what tells them apart.\n\n- **A field was wrong.** `errorCode` is a validation code — `NotNull`, `ZeroValue`, `MaxLengthExceed` and the rest — and `propertyName` names the field it is about.\n- **A rule was not met.** `errorCode` is one of the numbered codes below, and the refusal is about the request as a whole rather than any one field.\n\n| Code | Name | Raised when |\n| --- | --- | --- |\n| `—` | no code | `amount`, after division by 100, is not greater than the campaign minimum held in the platform's parameters |\n| `—` | no code | `amount`, after division by 100, is greater than the campaign maximum held in the platform's parameters |\n| `—` | no code | `trnCodeMatrixId` is not one of the entries listed in the campaign transaction code parameters |\n| `—` | no code | `requestChannel` does not resolve to a channel the platform defines |",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/changeCustomerLimitDecrease": {
   "post": {
    "tags": [
     "Card and customer limits"
    ],
    "summary": "Service that performs customer limit decrease",
    "description": "Decreases the customer limit. Sends CustomerNumber and NewCustomerLimit to _cisServiceProxy.ChangeCustomerLimit. Optionally uses CardProfileSetCode for customer profile adjustments.",
    "operationId": "changeCustomerLimitDecrease",
    "requestBody": {
     "description": "Change Customer Limit Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ChangeCustomerLimitRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success, and the body is empty.\n\n**Identical to `changeCustomerLimitIncrease`.** The two operations call the same service method with the same two fields and discard the same response; there is no code path that distinguishes them. Which one a caller uses is a matter of naming, and the direction is decided by `newCustomerLimit`.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ChangeCustomerLimitResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "description": "**Refused.** Two unlike failures arrive with this status, and `errorCode` is what tells them apart.\n\n- **A field was wrong.** `errorCode` is a validation code — `NotNull`, `ZeroValue`, `MaxLengthExceed` and the rest — and `propertyName` names the field it is about.\n- **A rule was not met.** `errorCode` is one of the numbered codes below, and the refusal is about the request as a whole rather than any one field.\n\n| Code | Name | Raised when |\n| --- | --- | --- |\n| `10102` | CustomerNotFound | `customerNumber` matches no customer |\n| `10164` | LimitBelowOutstandingBalance | the new limit is below what the customer's cards already owe |",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/changeCustomerLimitIncrease": {
   "post": {
    "tags": [
     "Card and customer limits"
    ],
    "summary": "Service that performs customer limit increase",
    "description": "Increases the customer limit. Sends CustomerNumber and NewCustomerLimit to _cisServiceProxy.ChangeCustomerLimit. Optionally uses CardProfileSetCode for customer profile adjustments.",
    "operationId": "changeCustomerLimitIncrease",
    "requestBody": {
     "description": "Change Customer Limit Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ChangeCustomerLimitRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success, and the body is empty.\n\nTwo things to know, and neither is in the schema. The response the customer service returns is discarded — this operation always answers with an empty `ChangeCustomerLimitResponse`. And **this operation and `changeCustomerLimitDecrease` do exactly the same thing**: both call the same `ChangeCustomerLimit` with the same two fields, so the direction comes from whether `newCustomerLimit` is above or below the customer's current limit, not from which of the two paths was called. There is also no `channel` on this request, unlike almost every other operation here.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ChangeCustomerLimitResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "description": "**Refused.** Two unlike failures arrive with this status, and `errorCode` is what tells them apart.\n\n- **A field was wrong.** `errorCode` is a validation code — `NotNull`, `ZeroValue`, `MaxLengthExceed` and the rest — and `propertyName` names the field it is about.\n- **A rule was not met.** `errorCode` is one of the numbered codes below, and the refusal is about the request as a whole rather than any one field.\n\n| Code | Name | Raised when |\n| --- | --- | --- |\n| `10102` | CustomerNotFound | `customerNumber` matches no customer |\n| `10161` | CustomerLimitExceeded | the new limit breaks a rule the customer's segment sets |",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/isSetCardPinViaSMSControl": {
   "post": {
    "tags": [
     "PIN and card security"
    ],
    "summary": "Service that enables creating the PIN via SMS",
    "description": "Checks if a customer has any card eligible for PIN change via SMS and allows setting a new PIN for credit, debit, or prepaid cards. Validates mobile number, card last four digits, clear PIN, and bank key.",
    "operationId": "isSetCardPinViaSMSControl",
    "requestBody": {
     "description": "Is Set Card Pin Via S M S Control Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/IsSetCardPinViaSMSControlRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success, and it does not mean a card was found.\n\n`isHaveAnyCard` carries that. When nothing matches, the answer is the response this operation started with — `isHaveAnyCard` false, `customerNumber` 0 and `shadowCardNumber` an empty string — not an error. When more than one card matches, only the first is returned, and nothing in the response says there were others.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IsSetCardPinViaSMSControlResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getCreditCardLogDataListByShadowCardNumber": {
   "post": {
    "tags": [
     "Card lifecycle"
    ],
    "summary": "Service that lists credit card log information based on the provided Shadow Card Number",
    "description": "Retrieves credit card log data for a given shadow card number. Accepts GetCreditCardLogDataListByShadowCardNumberRequest with parameters ShadowCardNumber, CustomerNumber, LogCode, StartDate, and EndDate. Returns GetCreditCardLogDataListByShadowCardNumberResponse containing a list of CreditCardLogData items, each with CardRefNumber, ShadowCardNumber, MaskedCardNumber, CustomerNumber, OldValue, NewValue, CardLogDetail, InsertChannelId, InsertChannelDescription, LogCode, LogCodeDescription, InsertDate, and InsertUserId. Internally calls _crdIssuingServiceProxy.GetCardLogDataListByShadowCardNumber(). Validates StartDate, EndDate, and ShadowCardNumber before processing.",
    "operationId": "getCreditCardLogDataListByShadowCardNumber",
    "requestBody": {
     "description": "Get Credit Card Log Data List By Shadow Card Number Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetCreditCardLogDataListByShadowCardNumberRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nRows are read live from the credit card log. The query inner-joins the card log definition table to resolve `logCodeDescription`, so a log row whose code has no definition row is dropped from the answer altogether; the channel description is joined outer, so an unknown channel leaves `insertChannelDescription` empty. A card or customer with no log rows inside the window returns an empty `cardLogDataList` rather than an error. The result is not ordered and carries no cap.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetCreditCardLogDataListByShadowCardNumberResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/setStatementDocumentId": {
   "post": {
    "tags": [
     "Statements and billing"
    ],
    "summary": "Service that updates the customers card statement document ID and sends a notification",
    "description": "Sets or updates statement document IDs for a list of statements. For each statement in the request, it retrieves mailing info based on masked card number and statement date, then either creates a new statement document or updates an existing one. Additionally, if email sending is enabled, it triggers a notification with relevant statement and customer details. The SetStatementDocumentOnly method returns a summary of inserted, updated, and skipped rows.",
    "operationId": "setStatementDocumentId",
    "requestBody": {
     "description": "Set Statement Document Id Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SetStatementDocumentIdRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nNothing comes back. The operation returns no body, and success does not mean every entry was applied — only that the list was not empty.\n\nEach entry is looked up by masked card number, customer number, statement date and currency together. An entry that matches no statement is skipped without a word: no error, no count, nothing in the response to distinguish it from one that was applied. Use `setStatementDocumentOnly` when you need to know.\n\nWhere the lookup does match, the facade creates a statement document record if the statement has none and overwrites the existing document id if it has one. There is no check that the current document id differs from the one sent.\n\nThis operation also emails the cardholder, which is the only thing that separates it from `setStatementDocumentOnly`. The mail goes out only when the customer's statement e-mail flag is set, is addressed to the customer's default e-mail address, and carries the statement as an attachment only when the customer's sensitive data permission flag is set. The template is chosen from the card product's parameters, and that same permission flag decides which of the two templates is used."
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/setStatementDocumentOnly": {
   "post": {
    "tags": [
     "Statements and billing"
    ],
    "summary": "Service that updates the customers card statement document ID without sending a notification",
    "description": "Processes a batch of statement documents and updates the system accordingly. For each statement in the request, it retrieves mailing info based on masked card number and statement date. If no record exists, a new statement document is created; otherwise, the existing document is updated. The method returns a summary including total rows, inserted, updated, and skipped rows.",
    "operationId": "setStatementDocumentOnly",
    "requestBody": {
     "description": "Set Statement Document Id Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SetStatementDocumentIdRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nSame work as `setStatementDocumentId`, with two differences: this one sends no e-mail, and it tells you what happened.\n\nThe four counts are the whole answer. `totalRowCount` is the number of entries sent, `insertedRowCount` those whose statement had no document record yet, `updatedRowCount` those whose existing record was overwritten, and `noActionRowCount` those whose masked card number, customer number, statement date and currency matched no statement. A response of nothing but `noActionRowCount` is still a success: the operation never fails on an entry it cannot place.\n\nThe counts do not say which entries fell into which bucket. Each skipped and each overwritten entry is written to the service log, and that is the only place the detail exists.\n\nAn overwrite is unconditional — there is no check that the document id sent differs from the one already stored, so re-sending the same list counts every entry as updated.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SetStatementDocumentOnlyResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getCardStatementCutoffReport": {
   "post": {
    "tags": [
     "Statements and billing"
    ],
    "summary": "Service that returns Cutoff statement detail list using customer card information",
    "description": "Retrieves credit card statement cutoff information for a given ShadowCardNumber, MainCardRefNumber, and optional CustomerNumber on a specific InsertDate. Accepts GetCardStatementCutoffRequest with ShadowCardNumber, MainCardRefNumber, CustomerNumber, and InsertDate. Returns GetCardStatementCutoffResponse containing a list of CreditCardStatementCutoffItem objects, each including CardRefNumber, ShadowCardNumber, CustomerNumber, StatementDate, CapitalAmount, PurchaseInterestAmount, CashInterestAmount, PurchaseDueInterestAmount, CashDueInterestAmount, OtherFeeAmount, CardFeeAmount, CashFeeAmount, InterestBsmvAmount, InterestKkdfAmount, FeeBsmvAmount, and CashInstallmentProfitAmount. Uses _intRepository.GetCreditCardStatementCutoffReportByInsertDate internally.",
    "operationId": "getCardStatementCutoffReport",
    "requestBody": {
     "description": "Get Card Statement Cutoff Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetCardStatementCutoffRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThis operation never leaves the facade: it runs a repository view and converts the rows. Nothing is validated and nothing checks that the card, the card reference or the customer exists, so a miss is a success with an empty `listOfCardStatementCutoff` rather than an error.\n\nAll three card criteria are optional in the query as well as in the document, and each one that is left out is simply not applied. A request carrying only `insertDate` therefore reports every card that has a cut-off statement on that date; there is no paging and no cap on the number of rows.\n\nOnly cut-off statements are reported, and only valid ones on main — not supplementary — cards that are current for their card reference. The figures are sums built in the view: each amount adds the current, previous and reversal buckets together, so a row is a total for the statement rather than a single posting.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetCardStatementCutoffResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getClearPanByShadow": {
   "post": {
    "tags": [
     "PIN and card security"
    ],
    "summary": "Service that displays open PIN information for the given Shadow Card Number",
    "description": "Resolves the clear PAN (Primary Account Number) from a given shadow card number. Accepts GetClearPanByShadowRequest with ShadowCardNumber and returns GetClearPanByShadowResponse containing ClearPan. Internally calls _cisServiceProxy.GetCardInfoByShadowCardNumber(). Also provides GetCardInfoByClearPan which retrieves detailed card information by ClearPan, returning GetCardInfoByClearPanResponse with properties like Bin, CardRefNumber, ProductNumber, CardSeqNumber, CardType, CustomerNumber, EncryptedCardNumber, ExpiryDate, HashCardNumber, MainCardRefNumber, MainCustomerNumber, MaskedCardNumber, MaskedPanAlternative, OwnerSearchName, ShadowCardNumber, StatusCode, and StatusReasonCode.",
    "operationId": "getClearPanByShadow",
    "requestBody": {
     "description": "Get Clear Pan By Shadow Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetClearPanByShadowRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success, and the answer is the card number in the clear.\n\nThat is the whole purpose of this operation and the reason to reach for another one wherever a masked or hashed form will do — `getSecureCardByPan` returns the tokenised forms and never the number.\n\n`clearPan` comes back null, with a 200, when the shadow card number matches nothing. A null here is a miss, not a card without a number.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetClearPanByShadowResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getCardInfoByClearPan": {
   "post": {
    "tags": [
     "PIN and card security"
    ],
    "summary": "Service that lists card information based on the provided open PIN",
    "description": "Retrieves card information for a given clear PAN (primary account number). Accepts GetCardInfoByClearPanRequest with ClearPan. Returns GetCardInfoByClearPanResponse containing Bin, CardRefNumber, ProductNumber, CardSeqNumber, CardType, ClearPan, CustomerNumber, EncryptedCardNumber, ExpiryDate, HashCardNumber, MainCardRefNumber, MainCustomerNumber, MaskedCardNumber, MaskedPanAlternative, OwnerSearchName, ShadowCardNumber, StatusCode, and StatusReasonCode.",
    "operationId": "getCardInfoByClearPan",
    "requestBody": {
     "description": "Get Card Info By Clear Pan Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetCardInfoByClearPanRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe body is empty when the card is not found. Note what comes back when it is: `clearPan` is echoed into the response alongside the masked, encrypted and hashed forms, so this answer carries the card number in the clear and should be handled accordingly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetCardInfoByClearPanResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getDebitCardForRewardByBank": {
   "post": {
    "tags": [
     "Campaigns and rewards"
    ],
    "summary": "Service that returns shadow and masked card numbers for the given customer number",
    "description": "Retrieves the debit card information eligible for rewards for a given customer. Accepts GetDebitCardForRewardByBankRequest with CustomerNumber and Channel. Calls _debitManagementServiceProxy.GetDebitCardForRewardByBank() and returns GetDebitCardForRewardByBankResponse containing AccountNumber, MaskedCardNumber, and ShadowCardNumber.",
    "operationId": "getDebitCardForRewardByBank",
    "requestBody": {
     "description": "Get Debit Card For Reward By Bank Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetDebitCardForRewardByBankRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe operation returns one card, chosen by the service rather than by the caller. Only cards in a status that is both valid and reissuable, on a product in the individual segment, are considered. Among those the service takes the first match in this order: a physical card on a product belonging to the bank's own tenant or to no tenant, then a non-physical one on such a product, then a physical card on a tenant product, then a non-physical one. Within each step the most recently created card wins.\n\nA customer with no matching card is not an error. The operation answers 200 with `accountNumber`, `shadowCardNumber` and `maskedCardNumber` all null, which is also what an unknown customer number produces.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetDebitCardForRewardByBankResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/createFollowUpByMainCustomerNumber": {
   "post": {
    "tags": [
     "Collections and legal follow-up"
    ],
    "summary": "Service that closes customer cards based on customer number and forwards the customer to the Legal Follow-Up queue",
    "description": "Creates a follow-up for a corporate customer using MainCustomerNumber. Validates customer exists and is corporate. Cancels active main cards (excluding supplementary and already bank-cancelled cards) by calling ChangeCardStatus on each. Finally, creates follow-up queue entry using MainCustomerNumber and Channel.",
    "operationId": "createFollowUpByMainCustomerNumber",
    "requestBody": {
     "description": "Create Follow Up By Main Customer Number Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CreateFollowUpByMainCustomerNumberRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe operation returns no body. It runs in three stages: it closes the customer's credit cards, then writes one legal follow-up queue row.\n\nOnly rows of the credit card master carrying this main customer number are considered, so debit cards are never touched. Of those, supplementary cards, cards that are not the current card of their reference, and cards already bank-cancelled with reason KT are skipped. Each remaining card is set to the bank-cancel status with reason KT, with reissue off and the closing date set to the server clock; the request cannot choose the status, the reason or the date.\n\nA customer that holds card records but none that qualify is not an error: no card changes and the queue row is still written, so a 200 does not mean a card was closed. The cards are changed one at a time and the first refusal aborts the operation, after which the queue row is not written.\n\nThe queue row is written with status N, valid flag 1, follow-up date today, the inserting user taken from the calling identity, and — because this operation never sends them — business key 0 and follow-up reason 3. Use Add To Legal Follow Up to set a different reason."
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "description": "**Refused.** Two unlike failures arrive with this status, and `errorCode` is what tells them apart.\n\n- **A field was wrong.** `errorCode` is a validation code — `NotNull`, `ZeroValue`, `MaxLengthExceed` and the rest — and `propertyName` names the field it is about.\n- **A rule was not met.** `errorCode` is one of the numbered codes below, and the refusal is about the request as a whole rather than any one field.\n\n| Code | Name | Raised when |\n| --- | --- | --- |\n| `60002` | ParameterCannotBeNull | `channel` is null or absent |\n| `60006` | RecordNotFound | `mainCustomerNumber` matches no customer, which includes the value 0 |\n| `60006` | RecordNotFound | the customer holds no credit card records at all |\n| `—` | no code | the customer's type is not Corporate |\n| `—` | no code | `channel` is not a defined channel type, raised by the card status change and therefore only when at least one card qualifies |",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getCardByCardNumber": {
   "post": {
    "tags": [
     "Card lifecycle"
    ],
    "summary": "Service that lists card details based on an open card number",
    "description": "Retrieves detailed card information for a given card number (PAN) and optional PAN sequence number. Accepts GetCardByCardNumberRequest containing CardNumber and PanSequenceNumber. Returns GetCardByCardNumberResponse with Bin, CardNumber, CardRefNumber, CardSeqNumber, CardType, CustomerNumber, EncryptedCardNumber, ExpiryDate, HashCardNumber, MainCardRefNumber, MainCustomerNumber, MaskedCardNumber, MaskedPanAlternative, OwnerSearchName, ProductNumber, StatusCode, and StatusReasonCode.",
    "operationId": "getCardByCardNumber",
    "requestBody": {
     "description": "Get Card By Card Number Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetCardByCardNumberRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe same read as `getCardByShadowCardNumber`, keyed by PAN instead — but without its null guard. This operation reads the customer number off the service's answer without checking there is one, so what a caller sees for a card that does not exist is whatever the service does about it, not a clean empty body. It also takes no `channel`, unlike its shadow-number twin.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetCardByCardNumberResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getAssetByShadowCardNumber": {
   "post": {
    "tags": [
     "Customers"
    ],
    "summary": "Service that lists card information based on the provided Shadow Card Number",
    "description": "Retrieves debit card asset information based on the ShadowCardNumber. Calls the CIS service proxy to fetch details and maps them to GetAssetByShadowCardNumberResponse, including Bin, ProductNumber, OwnerSearchName, CardRefNumber, CardStatusCode, CardStatusReasonCode, CustomerNumber, EmbossName, ExpiryDate, InsertDate, InsertUserId, MainCardRefNumber, MainCustomerNumber, MaskedCardNumber, MaskedPanAlternative, OwnerName, OwnerSecondName, OwnerSurname, PSN, ServiceDomainId, and SupplementaryCard flag.",
    "operationId": "getAssetByShadowCardNumber",
    "requestBody": {
     "description": "Get Asset By Shadow Card Number Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetAssetByShadowCardNumberRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThis is the cardholder-facing view of a card — the owner's name in three parts, the emboss name, the status and its reason, whether it is a supplementary card. Like `getCardByCardNumber` it does not guard against the service answering nothing. It takes no `channel`.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetAssetByShadowCardNumberResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getSecureCardByPan": {
   "post": {
    "tags": [
     "Card lifecycle"
    ],
    "summary": "Service that displays secure card information based on an open card number",
    "description": "Retrieves secure card information using the PAN. The response includes encrypted card number, hashed card number, first six digits, first eight digits, last four digits, and a record ID.",
    "operationId": "getSecureCardByPan",
    "requestBody": {
     "description": "Get Secure Card By Pan Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetSecureCardByPanRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nSix fields and none of them is the card number: the encrypted block, the hash, the first six, the first eight, the last four and the record id. This is the operation to use when a caller needs to recognise a card later without holding its number.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetSecureCardByPanResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getMccGroupAll": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists all MCC group information",
    "description": "Retrieves all MCC groups from cache using _cache.GetMccGroupAll() and maps them to a list of MccGroup objects containing InstitutionCode, Kk100hOrderNumber, MccGroupCode, MccGroupDescription, QualificationIndicatorCode, UseInApplicationFlag, and ValidFlag.",
    "operationId": "getMccGroupAll",
    "responses": {
     "200": {
      "description": "Success.\n\nThe list is served from the in-process cache, not from the database. It is whatever the parameter service returned at start-up, and `refreshCache` is what reloads it. No filter is applied here, so invalid groups are included and `validFlag` has to be read by the caller. If the cache slot was never filled, `listOfMccGroup` comes back as null rather than as an empty array.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetMccGroupAllResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getTrnStatusAll": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists all transaction status information",
    "description": "Retrieves all transaction statuses along with their codes, descriptions, and validity flags for core banking integration.",
    "operationId": "getTrnStatusAll",
    "responses": {
     "200": {
      "description": "Success.\n\nThe list is served from the in-process cache, not from the database. It is whatever the parameter service returned at start-up, and `refreshCache` is what reloads it. Despite the operation name no valid-flag filter is applied, so invalid statuses are included and `validFlag` has to be read by the caller. If the cache slot was never filled, `listOfTrnStatus` comes back as null rather than as an empty array.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetTrnStatusAllResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getBinDomesticByBin": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists local card information based on the provided BIN",
    "description": "Service that lists local card information based on the provided BIN.",
    "operationId": "getBinDomesticByBin",
    "requestBody": {
     "description": "Get Bin Domestic By Bin Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetBinDomesticByBinRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe BIN ranges are not read from the database on each call. They are served from the in-process cache, which is filled at start-up from the parameter service, so a range added or changed afterwards is not seen until `refreshCache` has run. The first range whose minimum and maximum bracket the padded BIN wins; the operation does not look for a closest or longest match. `issuerBankCode` is returned with its trailing spaces removed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetBinDomesticByBinResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "description": "**Refused.** Two unlike failures arrive with this status, and `errorCode` is what tells them apart.\n\n- **A field was wrong.** `errorCode` is a validation code — `NotNull`, `ZeroValue`, `MaxLengthExceed` and the rest — and `propertyName` names the field it is about.\n- **A rule was not met.** `errorCode` is one of the numbered codes below, and the refusal is about the request as a whole rather than any one field.\n\n| Code | Name | Raised when |\n| --- | --- | --- |\n| `40108` | BinDomesticNotFound | no cached domestic BIN range contains `bin` |",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getEncryptDataBlock": {
   "post": {
    "tags": [
     "PIN and card security"
    ],
    "summary": "Service that retrieves the encrypted data block",
    "description": "Encrypts a given data block using KMT service. Validates input DataBlock, retrieves encryption parameters from cache, calls _kmtServiceProxy.EncryptDataBlock() with KeyId, IV, and CBC mode, and returns GetEncryptDataBlockResponse containing EncryptedDataBlock.",
    "operationId": "getEncryptDataBlock",
    "requestBody": {
     "description": "Get Encrypt Data Block Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetEncryptDataBlockRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nNeither the key nor the initialisation vector is part of the contract. The facade reads one parameter row out of its own cache — group `IntegrationCoreBanking`, sub-group `EncryptDataBlockParams`, parameter id `ENCRYPTION_KEY_ID` — and uses `parameterValue1` as the key id and `parameterValue2` as the initialisation vector. The cipher mode is hard-coded to CBC. Rotating the key is a parameter change plus a cache reload, never a request change.\n\nBecause the parameters come from a cache, a row added or changed in the database does not take effect until that cache is reloaded.\n\nThe key-management service's reply is reduced to its encrypted data block; anything else it returns is discarded.\n\nNote the naming asymmetry with the decrypt operation: the value returned here is `encryptedDataBlock`, while the decrypt request field that consumes it is called `encryptDataBlock`.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetEncryptDataBlockResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "description": "**Refused.** Two unlike failures arrive with this status, and `errorCode` is what tells them apart.\n\n- **A field was wrong.** `errorCode` is a validation code — `NotNull`, `ZeroValue`, `MaxLengthExceed` and the rest — and `propertyName` names the field it is about.\n- **A rule was not met.** `errorCode` is one of the numbered codes below, and the refusal is about the request as a whole rather than any one field.\n\n| Code | Name | Raised when |\n| --- | --- | --- |\n| `—` | no code | the `ENCRYPTION_KEY_ID` parameter row is absent from the cache; the call fails with a message only |",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getCustomerDetail": {
   "post": {
    "tags": [
     "Customers"
    ],
    "summary": "Service that lists detailed customer information",
    "description": "Retrieves detailed customer information, including personal, firm, and contact details. Accepts GetCustomerDetailRequest containing CustomerNumber, Channel, CommCompanyCode, and flags for including address, email, GSM, and phone details. Returns GetCustomerDetailResponse with a Customer object containing MasterInformation, PersonalInformation, FirmInformation, ListOfAddress, ListOfEmail, ListOfGSM, and ListOfPhone. Calls _cisServiceProxy.GetCustomerDetail() and maps the response to internal data structures. Null is returned if the customer does not exist.",
    "operationId": "getCustomerDetail",
    "requestBody": {
     "description": "Get Customer Detail Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetCustomerDetailRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nA customer number that matches nothing is not an error. The operation answers 200 with an empty body rather than reporting that the customer was not found.\n\nOnly the master information is guaranteed. The personal and corporate blocks are fetched inside a catch: if that lookup fails the failure is logged and both blocks are simply absent from the response, which looks the same as a customer that has neither.\n\nEach of the four communication lists is fetched the same way. A failed lookup is logged and swallowed, so an absent list can mean the flag was false, the lookup failed, or the customer genuinely has no such records.\n\nThe four lists are filtered by company code: records whose company code differs from the resolved one are dropped, so the response can omit communication records that exist on the customer.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetCustomerDetailResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getApplicableProducts": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists eligible products",
    "description": "Retrieves all applicable card products from cache. Maps each cached product to GetApplicableProductsResponseItem including Bin, Brand, ClassCode, ContactlessAbility, DigitalAbility, EmvAbility, GroupCode, IsNoName, ListOfApplicableChannel, ProductName, ProductNumber, ProductShortName, SegmentCode, TenantId, TypeCode, TypeCodeDetail, and VirtualAbility. Returns the list as GetApplicableProductsResponse.",
    "operationId": "getApplicableProducts",
    "requestBody": {
     "description": "Get Applicable Products Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetApplicableProductsRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe whole applicable-product catalogue is served from the service's in-memory cache. Nothing is read from the database on the call, no customer is involved, and no date filtering is applied.\n\nThe list reflects the cache as it was last refreshed. A product definition added since then is missing until the cache is refreshed, and if the cache entry has not been loaded at all the response carries no product list rather than an error.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetApplicableProductsResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/decryptDataBlock": {
   "post": {
    "tags": [
     "PIN and card security"
    ],
    "summary": "Service that decrypts the data block",
    "description": "Decrypts an encrypted data block using KMT service. Validates that EncryptDataBlock is not null or empty, retrieves encryption parameters from cache, calls DecryptDataBlock on KMT proxy with KeyId, IV, and CBC mode, and returns the clear data block.",
    "operationId": "decryptDataBlock",
    "requestBody": {
     "description": "Decrypt Data Block Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DecryptDataBlockRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe key and the initialisation vector are taken from the same cached parameter row as the encrypt operation — group `IntegrationCoreBanking`, sub-group `EncryptDataBlockParams`, parameter id `ENCRYPTION_KEY_ID`, with `parameterValue1` as the key id and `parameterValue2` as the initialisation vector — and the cipher mode is hard-coded to CBC. A block encrypted before the parameter changed cannot be decrypted after it changed.\n\nBecause the parameters come from a cache, a row added or changed in the database does not take effect until that cache is reloaded.\n\nThe key-management service's reply is reduced to its clear data block; anything else it returns is discarded.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DecryptDataBlockResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "description": "**Refused.** Two unlike failures arrive with this status, and `errorCode` is what tells them apart.\n\n- **A field was wrong.** `errorCode` is a validation code — `NotNull`, `ZeroValue`, `MaxLengthExceed` and the rest — and `propertyName` names the field it is about.\n- **A rule was not met.** `errorCode` is one of the numbered codes below, and the refusal is about the request as a whole rather than any one field.\n\n| Code | Name | Raised when |\n| --- | --- | --- |\n| `—` | no code | the `ENCRYPTION_KEY_ID` parameter row is absent from the cache; the call fails with a message only |",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getCardByShadowCardNumber": {
   "post": {
    "tags": [
     "Card lifecycle"
    ],
    "summary": "Service that lists card information based on the Shadow Card Number",
    "description": "Service that lists card information based on the Shadow Card Number.",
    "operationId": "getCardByShadowCardNumber",
    "requestBody": {
     "description": "Get Card By Shadow Card Number Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetCardByShadowCardNumberRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThe body is empty when the card is not found: this operation checks the service's answer for null and returns nothing rather than a card. It is the only one of the nine lookups that guards the miss explicitly — see `getCardByCardNumber` for the same read keyed the other way, which does not.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetCardByShadowCardNumberResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/addToLegalFollowUp": {
   "post": {
    "tags": [
     "Collections and legal follow-up"
    ],
    "summary": "Service that marks the customer as Legal Follow-Up",
    "description": "Adds a customer account to the legal follow-up queue, including business key and follow-up reason. Ensures validation of input parameters before invoking the legal management service.",
    "operationId": "addToLegalFollowUp",
    "requestBody": {
     "description": "Add To Legal Follow Up Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/AddToLegalFollowUpRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThis operation answers with HTTP 200 whether it succeeds or fails, so `isSuccess` has to be read. On failure `errorCode` and `message` carry the reason: a missing request or a zero `MainCustomerNumber` gives 60002 ParameterCannotBeNull; a business failure raised by the legal management service gives that service's own code and message; anything else gives the literal code `UNHANDLED_ERROR` and the exception's message. On success `message` is the fixed Turkish text \"Takibe alma işlemi başarılı\" and `errorCode` is absent.\n\nThe request cannot choose the channel, the user or the queue state. The facade fixes the channel to the system channel type, sets both the host name and the user name to the calling identity, and queues the record with status N.\n\n`responseTime` is the server clock reading taken when the response object was built, not a value from the legal management service.\n\nThe call only queues the customer for legal follow-up; unlike Create Follow Up By Main Customer Number it does not close any card.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AddToLegalFollowUpResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/createCustomer": {
   "post": {
    "tags": [
     "Customers"
    ],
    "description": "Create Customer\n\n**Part of:**\n\n- <a href=\"https://apiportal.dgpays.com/journeys/launch#s-credit\" target=\"_parent\">Journey 01 · Launching a new card product</a> — step 2, Register the customer",
    "operationId": "createCustomer",
    "requestBody": {
     "description": "Create Customer Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CreateCustomerRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nOnly `customerNumber` and `personId` come back. Everything else the service derives - the customer status, the register row, the communication record identifiers and the log entries - is written but not returned.\n\n`customer.limit` is dropped by the integration layer, so the customer is always created with a zero credit limit and a zero cash advance limit whatever the request asks for.\n\nThe `customerNumber` on every entry in `communications` is overwritten with the number the customer was created under, so an entry cannot attach records to a different customer.\n\nWhen `customer.main.isLite` is true the service forces the customer type and the value segment code to the lite defaults and clears the value sub-segment code, overriding whatever the request supplied.\n\nThe customer master row and its creation log are written before the communications are processed, and the one-default-address, one-card-address and one-contact-number checks run at that point rather than during validation. A request rejected by one of those checks can therefore leave a customer master row behind with no personal, corporate or register row.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/CreateCustomerResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "description": "**Refused.** Two unlike failures arrive with this status, and `errorCode` is what tells them apart.\n\n- **A field was wrong.** `errorCode` is a validation code — `NotNull`, `ZeroValue`, `MaxLengthExceed` and the rest — and `propertyName` names the field it is about.\n- **A rule was not met.** `errorCode` is one of the numbered codes below, and the refusal is about the request as a whole rather than any one field.\n\n| Code | Name | Raised when |\n| --- | --- | --- |\n| `2432` | ExistingCitizenshipNumber | `customer.persona.citizenshipNumber` already belongs to a customer whose record is valid |\n| `2429` | LiteCustomerAcceptenceRuleNotMatched | `isLite` is true, a lite rule's key field is present, but one of that rule's dependent fields is missing |\n| `2430` | LiteCustomerAcceptenceRuleNotFound | `isLite` is true and no lite rule for the tenant and channel matches any field in the request |\n| `—` | no code | `communications.listOfAddress` does not contain exactly one entry flagged `isDefault` |\n| `—` | no code | `communications.listOfAddress` contains more than one entry flagged `isCardAddress` |\n| `—` | no code | `communications.listOfGsm` does not contain exactly one entry flagged `isContactNumber` |\n| `—` | no code | `communications.listOfPhone` does not contain exactly one entry flagged `isContactNumber` |",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    },
    "x-everest-journeys": [
     {
      "journey": "launch",
      "journeyName": "Launching a new card product",
      "n": "01",
      "section": "credit",
      "step": 2,
      "title": "Register the customer"
     }
    ]
   }
  },
  "/Indoor/api/updateCustomer": {
   "post": {
    "tags": [
     "Customers"
    ],
    "description": "Update Customer",
    "operationId": "updateCustomer",
    "requestBody": {
     "description": "Update Customer Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/UpdateCustomerRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nOnly `customerNumber` and `personId` come back. The operation does not report which fields it changed, and a request that changes nothing answers exactly the same way as one that changes everything.\n\nEvery entry in `communications` is written as a new record rather than an update. The integration layer does not forward `recordId`, `updateAllData` or `validFlag`, so the service always takes its create path: it inserts a new address, mobile number, e-mail address or phone number and leaves the existing ones untouched. Because of that the create-path rules apply, and the one-default-address, one-card-address and one-contact-number counts include the records already stored for the customer, so sending an address flagged `isDefault` for a customer that already has a default address is refused.\n\nFor most fields a null, or a blank string, means keep the stored value. Two fields break that pattern: `customer.segment.valueSubSegmentCode` is written unconditionally, so omitting it or omitting the whole `segment` block clears the stored sub-segment, and `customer.preferences.customLimitationFlag` falls back to the stored sensitive data permission flag when it is null.\n\n`customer.persona` is written only if the customer already has a personal information record, and `customer.corporate` only if it already has a firm information record. For a customer without one the block is still validated and then silently discarded. The customer's citizenship number is never changed by this operation, and `customer.main.externalCustomerNumber` and `customer.corporate.authorityCustomerNumber` are not written either.\n\nThe communication records are written before the customer master row is modified.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/UpdateCustomerResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "description": "**Refused.** Two unlike failures arrive with this status, and `errorCode` is what tells them apart.\n\n- **A field was wrong.** `errorCode` is a validation code — `NotNull`, `ZeroValue`, `MaxLengthExceed` and the rest — and `propertyName` names the field it is about.\n- **A rule was not met.** `errorCode` is one of the numbered codes below, and the refusal is about the request as a whole rather than any one field.\n\n| Code | Name | Raised when |\n| --- | --- | --- |\n| `2417` | CustomerNotFound | `customer.main.customerNumber` matches no customer, or is absent and therefore read as zero |\n| `—` | no code | the customer would end up with no default address, or with more than one |\n| `—` | no code | the customer would end up with more than one card address |\n| `—` | no code | the customer would end up with no contact mobile number, or with more than one |\n| `—` | no code | the customer would end up with no contact phone number, or with more than one |",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getAuthorizationListByBegindateEnddate": {
   "post": {
    "tags": [
     "Transactions"
    ],
    "summary": "Service that lists authorization transactions within the specified date range",
    "description": "Retrieves a list of authorization transactions based on the provided date range and optional filters. The method accepts GetAuthorizationListByBegindateEnddateRequest containing GetAuthorizationListByBegindateEnddateParam, which allows filtering by AuthStatus, BeginDate, EndDate, MaxAmount, MinAmount, NetworkType, ResponseCode, ResponseReasonCode, ShadowCardNumber, and TrnCodeMatrixId. The response returns GetAuthorizationListByBegindateEnddateResponse containing a list of GetAuthorizationListByBegindateEnddateResult items, including details such as AuthorizationNumber, CardRefNumber, CustomerNumber, ShadowCardNumber, TransactionDate, TrnAmount, TrnCurrencyDescription, TrnStatusDescription, MerchantName, MerchantCountryCode, ChannelTypeDescription, TerminalNumber, and other authorization-related metadata.",
    "operationId": "getAuthorizationListByBegindateEnddate",
    "requestBody": {
     "description": "Get Authorization List By Begindate Enddate Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetAuthorizationListByBegindateEnddateRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThis operation never leaves the facade: it passes the criteria straight into a repository view and returns the rows. Nothing is validated, and there is no check that the card exists — an unknown card is a success with an empty result, not an error. There is no ordering check between the two dates, no maximum range and no cap on the number of rows.\n\nThe view is the union of three sources: authorisations, the daily debit transaction pool and non-financial authorisations. An authorisation that has already reached the daily pool is excluded from the first and third sources so it is reported once. Only cards flagged as the current card for their card reference are considered. Rows are ordered by transaction date descending across the whole union.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetAuthorizationListByBegindateEnddateResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getAutoPaymentQueue": {
   "post": {
    "tags": [
     "Debt payment"
    ],
    "summary": "Service that lists the automatic payment instruction queue",
    "description": "Retrieves a list of scheduled auto payments for credit card customers within a specified date range and pagination limits. The method accepts GetAutoPaymentQueueRequest containing GetAutoPaymentQueueParam with StartRowNo, EndRowNo, and DueDate. The response returns GetAutoPaymentQueueResponse with a list of GetAutoPaymentQueueResult items, including CustomerNumber, MainCardRefNumber, ShadowCardNumber, MaskedCardNumber, PaymentAccount details, DailyPaymentAmount, PaymentTotalCurrent, RemainingAmount, Statement details, PaymentType, and RemainingMinimumPaymentAmount (calculated from the latest statement).",
    "operationId": "getAutoPaymentQueue",
    "requestBody": {
     "description": "Get Auto Payment Queue Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetAutoPaymentQueueRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThis operation never leaves the facade: it runs a repository view and converts the rows. Nothing is validated. A due date with no auto-payment instructions is a success with an empty result.\n\nThe queue holds only cards whose auto-payment instruction is valid and whose remaining amount is still above zero, so a card that has already paid drops out of the queue rather than appearing with a zero amount. `remainingAmount` is computed by the view from the statement minimum where the instruction pays the minimum and from the statement total otherwise, less what has already been paid.\n\nPaging is applied over an ordering by customer number ascending, and the row numbers are recomputed on every call, so a queue that changes between calls can skip or repeat rows across pages.\n\n`remainingMinimumPaymentAmount` is not part of the queue view. The facade fills it with a second query per row, and takes the first row of that query, which is ordered by statement date ascending — so the figure comes from the card's earliest statement in that currency, not from the statement the queue row is for. If that query returns nothing for a card, the whole call fails rather than that one row.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetAutoPaymentQueueResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getDbttransactionByCardrefCustomernum": {
   "post": {
    "tags": [
     "Transactions"
    ],
    "summary": "Service that lists in-period debit transactions",
    "description": "Retrieves DBT transactions for a given card reference or customer number. \nAccepts GetDbttransactionByCardrefCustomernumRequest with GetDbttransactionByCardrefCustomernumParam containing filters such as CustomerNumber, MainCardRefNumber, CardSeqNumber, TransactionDateBegin, TransactionDateEnd, MCC, RRN, TRN_STATUS, TRN_CODE_MATRIX_ID, ResponseCode, NetworkType, AuthorizationMatchStatus, MinAmount, MaxAmount, EmbossName, SourceNetwork. \nReturns GetDbttransactionByCardrefCustomernumResponse containing a list of GetDbttransactionByCardrefCustomernumResult items. \nEach result item includes transaction details such as PAN_ENTRY_MODE, MASKED_CARD_NUMBER, MAIN_CARD_REF_NUMBER, CUSTOMER_NUMBER, MAIN_CUSTOMER_NUMBER, PRODUCT, CHANNEL_TYPE_DESCRIPTION, NETWORK_DESCRIPTION, TERMINAL_TYPE, SETTLEMENT_AMOUNT, SETTLEMENT_CURRENCY, CLEARING_NUMBER, CLEARING_CHANNEL, CLEARING_DATE, TRN_CODE_MATRIX_DESC, TRN_AMOUNT, TRN_CURRENCY, LOCAL_AMOUNT, LOCAL_CURRENCY, TRN_DATE, EARNED_REWARD_MERCHANT, EARNED_REWARD_BANK, REWARD_TYPE_DESCRIPTION, MCC_DESCRIPTION, AUTHORIZATION_NUMBER, TERMINAL_NUMBER, MERCHANT_NAME, MERCHANT_CITY, MERCHANT_COUNTRY_CODE, BKM_UNIQUE_MERCHANT_ID, MERCHANT_AMEX_ID, INVOICE_NUMBER, DISPLAY_AT_CHANNELS, TRN_DESCRIPTION, EOD_DATE, TRN_ORIGIN, ACQ_REF_NUMBER, CAMPAIGN_CODE_ACQ, CAMPAIGN_CODE_ISS, EARNED_REWARD_CAMPAIGN_ISS, EARNED_REWARD_CAMPAIGN_ACQ, REF_UTID, UTID, REQUEST_DATE, OFFLINE_FLAG, EMBOSS_NAME, CARD_SEQ_NUMBER, AUTHORIZATION_MATCH_STATUS, CURRENCY_CODE_DESCRIPTION, MATCH_STATUS_DESCRIPTION, RRN, TRN_STATUS_DESCRIPTION, BILLING_AMOUNT, BILLING_CURRENCY, PIN_USAGE, IS_CHIP_FLAG. \nCalls _intRepository.GetDbttransactionByCardrefCustomernum() and maps results to internal structure.",
    "operationId": "getDbttransactionByCardrefCustomernum",
    "requestBody": {
     "description": "Get Dbttransaction By Cardref Customernum Request",
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GetDbttransactionByCardrefCustomernumRequest"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "description": "Success.\n\nThis operation never leaves the facade: it passes the criteria straight into a repository view of cleared debit transactions and returns the rows. There is no validation of any kind, and no check that the card, the card reference or the customer exists — a criterion that matches nothing is a success with an empty result.\n\nEvery criterion is optional in the query as well as in the document, and they are combined with AND. A request whose criteria are all empty is therefore not rejected: it returns every current cleared debit transaction the platform holds. There is no paging and no cap on the number of rows.\n\nOnly cards flagged as the current card for their card reference are considered. Rows are ordered by transaction date descending.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetDbttransactionByCardrefCustomernumResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getMccDefinitionGroupbyMccMccdescription": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists all MCC information with descriptions",
    "description": "Retrieves MCC definition groups by MCC and MCC description from the internal repository using _intRepository.GetMccDefinitionGroupbyMccMccdescription().",
    "operationId": "getMccDefinitionGroupbyMccMccdescription",
    "responses": {
     "200": {
      "description": "Success.\n\nThe response carries no body. The repository method runs the grouping query with `ExecuteNonQuery` and returns only an affected-row count, and the facade discards even that, so no MCC row ever reaches the caller. A 200 means the query ran, nothing more."
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getNetworkTypeDefByValidFlag": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists valid network types",
    "description": "Retrieves all network type definitions with valid flag. Returns a list of objects containing insert and update metadata, valid flag, network type code, and network type description.",
    "operationId": "getNetworkTypeDefByValidFlag",
    "responses": {
     "200": {
      "description": "Success.\n\nThe list is read live from the parameter database on every call, not from the cache, so `refreshCache` has no effect on it. Only rows whose valid flag is set are returned, and when none are valid `NetworkTypeDefList` comes back as an empty list rather than as an error. The rows are unordered.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetNetworkTypeDefByValidFlagResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getResponseCodeDefByValidFlag": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists valid response codes",
    "description": "Retrieves a list of response codes filtered by valid flag. Each item includes transaction domain, response code, description, success flag, and metadata such as insert/update dates and user IDs.",
    "operationId": "getResponseCodeDefByValidFlag",
    "responses": {
     "200": {
      "description": "Success.\n\nThe list is read live from the parameter database on every call, not from the cache, so `refreshCache` has no effect on it. Only rows whose valid flag is set are returned, and when none are valid `ResponseCodeDefList` comes back as an empty list rather than as an error. The rows are unordered.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetResponseCodeDefByValidFlagResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getResponseReasonCodeDefByValidFlag": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists valid response reason codes",
    "description": "Retrieves a list of response reason codes filtered by valid flag. Each item includes the reason code, description, local description, validity flag, and metadata such as insert/update dates and user IDs.",
    "operationId": "getResponseReasonCodeDefByValidFlag",
    "responses": {
     "200": {
      "description": "Success.\n\nThe list is read live from the parameter database on every call, not from the cache, so `refreshCache` has no effect on it. Only rows whose valid flag is set are returned, and when none are valid `ResponseReasonCodeDefList` comes back as an empty list rather than as an error. The rows are unordered.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetResponseReasonCodeDefByValidFlagResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getTrnCodeDefByValidFlag": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists valid transaction codes",
    "description": "Retrieves all valid transaction codes along with their descriptions, insert/update metadata, and validity flags. This is used to get the list of transaction code definitions for core banking integration.",
    "operationId": "getTrnCodeDefByValidFlag",
    "responses": {
     "200": {
      "description": "Success.\n\nThe list is read live from the parameter database on every call, not from the cache, so `refreshCache` has no effect on it. Only rows whose valid flag is set are returned, and when none are valid `TrnCodeDefList` comes back as an empty list rather than as an error. The rows are unordered.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetTrnCodeDefByValidFlagResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/getTrnCodeMatrixByValidFlag": {
   "post": {
    "tags": [
     "Reference data"
    ],
    "summary": "Service that lists valid Trn Code Matrix information",
    "description": "Retrieves all valid transaction code matrices along with their details, flags, and associated metadata. This is used to get the list of transaction code matrices for core banking integration.",
    "operationId": "getTrnCodeMatrixByValidFlag",
    "responses": {
     "200": {
      "description": "Success.\n\nThe list is read live from the parameter database on every call, not from the cache, so `refreshCache` has no effect on it. Only rows whose valid flag is set are returned, and when none are valid `TrnCodeMatrixList` comes back as an empty list rather than as an error. The whole matrix is returned; there is no way to ask for one transaction code. The rows are unordered.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GetTrnCodeMatrixByValidFlagResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/healthCheck": {
   "post": {
    "tags": [
     "Platform operations"
    ],
    "summary": "Method that checks whether the service is operational",
    "description": "Performs a health check on the CoreBankingIntegrationIndoor service, returning the current server date and a result status.",
    "operationId": "healthCheck",
    "responses": {
     "200": {
      "description": "Success.\n\nThe answer is built in memory and is unconditional. The operation opens no database connection and calls no downstream service, so a 200 says that the service process is running and able to answer, not that its database or the services behind it are reachable. `result` is a fixed constant, the same on every call, and `date` is the server's local clock at the moment of the call.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/HealthCheckResponse"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  },
  "/Indoor/api/refreshCache": {
   "post": {
    "tags": [
     "Platform operations"
    ],
    "summary": "Refresh Cache",
    "description": "Refreshes and loads all cached data including card products, parameters, BINs, card statuses, campaigns, statement operation codes, MCC groups, transaction statuses, applicable products, and domestic BINs. Provides helper methods to get cached values and validate PIN patterns.",
    "operationId": "refreshCache",
    "responses": {
     "200": {
      "description": "Success.\n\nThe response carries no body; a 200 is the only signal that the reload finished. The call rebuilds the in-process cache from the parameter service, slot by slot in a fixed order, and it is this cache that `getMccGroupAll`, `getTrnStatusAll` and `getBinDomesticByBin` read. The card product slot is loaded first and is the only one whose contents are checked: if the parameter service returns no card products the reload throws and the remaining slots are left as they were. The operations that read the parameter database directly, such as `getTrnCodeDefByValidFlag` and the other `ByValidFlag` lists, are unaffected by this call."
     },
     "404": {
      "$ref": "#/components/responses/ActionNotFound"
     },
     "400": {
      "$ref": "#/components/responses/BusinessFailure"
     },
     "500": {
      "$ref": "#/components/responses/TechnicalFailure"
     }
    }
   }
  }
 },
 "components": {
  "schemas": {
   "AccountStatusReq": {
    "required": [
     "timeStamp"
    ],
    "type": "object",
    "properties": {
     "transactionID": {
      "type": "string",
      "nullable": true,
      "description": "Part of an external account-status contract that this platform passes through; none of its fields is stored here."
     },
     "dsTransID": {
      "type": "string",
      "nullable": true,
      "description": "Part of an external account-status contract that this platform passes through; none of its fields is stored here."
     },
     "sourceSystem": {
      "type": "string",
      "nullable": true,
      "description": "Part of an external account-status contract that this platform passes through; none of its fields is stored here."
     },
     "version": {
      "type": "string",
      "nullable": true,
      "description": "Part of an external account-status contract that this platform passes through; none of its fields is stored here."
     },
     "timeStamp": {
      "type": "integer",
      "description": "Request timestamp as a 64-bit integer. It is a non-nullable value on the contract, which is why the schema marks it required; an omitted value is carried downstream as zero rather than as absent. The facade does not check it.",
      "format": "int64"
     },
     "cardHolderData": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CardHolderData"
       }
      ],
      "nullable": true,
      "description": "The cardholder the authentication is being run for."
     },
     "transactionData": {
      "allOf": [
       {
        "$ref": "#/components/schemas/TransactionData"
       }
      ],
      "nullable": true,
      "description": "The transaction being authenticated."
     },
     "deviceData": {
      "allOf": [
       {
        "$ref": "#/components/schemas/DeviceData"
       }
      ],
      "nullable": true,
      "description": "The device the transaction is being made from."
     },
     "merchantData": {
      "allOf": [
       {
        "$ref": "#/components/schemas/MerchantData"
       }
      ],
      "nullable": true,
      "description": "The merchant the transaction is being made at."
     }
    }
   },
   "AccountStatusRes": {
    "required": [
     "timeStamp"
    ],
    "type": "object",
    "properties": {
     "transactionID": {
      "type": "string",
      "nullable": true
     },
     "memberRefID": {
      "type": "string",
      "nullable": true
     },
     "status": {
      "type": "string",
      "nullable": true
     },
     "challengeType": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "language": {
      "type": "string",
      "nullable": true
     },
     "riskValue": {
      "type": "string",
      "nullable": true
     },
     "mobileNo": {
      "allOf": [
       {
        "$ref": "#/components/schemas/MobileNo"
       }
      ],
      "nullable": true
     },
     "timeStamp": {
      "type": "integer",
      "format": "int64"
     },
     "version": {
      "type": "string",
      "nullable": true
     },
     "result": {
      "allOf": [
       {
        "$ref": "#/components/schemas/Result"
       }
      ],
      "nullable": true,
      "description": "The outcome, as the downstream system words it."
     }
    }
   },
   "AddToLegalFollowUpRequest": {
    "required": [
     "MainCustomerNumber",
     "FollowupReason"
    ],
    "type": "object",
    "properties": {
     "MainCustomerNumber": {
      "type": "integer",
      "description": "Main customer number to place in legal follow-up. Must not be zero.",
      "format": "int64"
     },
     "BusinessKey": {
      "type": "number",
      "description": "`Default` — Business key stored against the legal follow-up record. Null or omitted is sent downstream as 0.",
      "format": "double",
      "nullable": true
     },
     "FollowupReason": {
      "type": "integer",
      "description": "Reason for placing the customer in legal follow-up. Sent downstream unchanged; the facade does not check it.",
      "format": "int32"
     }
    }
   },
   "AddToLegalFollowUpResponse": {
    "required": [
     "isSuccess",
     "responseTime"
    ],
    "type": "object",
    "properties": {
     "isSuccess": {
      "type": "boolean",
      "description": "Whether the operation did what it was asked to. A false here arrives with HTTP 200, so it has to be read rather than inferred from the status."
     },
     "errorCode": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own code for the error, and what to match on."
     },
     "message": {
      "type": "string",
      "nullable": true,
      "description": "The error in words. `errorCode` is the part to match on."
     },
     "responseTime": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     }
    }
   },
   "CardHolderData": {
    "type": "object",
    "properties": {
     "encryptedAccountNumber": {
      "allOf": [
       {
        "$ref": "#/components/schemas/EncryptedAccountNumber"
       }
      ],
      "nullable": true
     },
     "cardExpiryDate": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "cardHolderName": {
      "type": "string",
      "nullable": true
     },
     "addrMatch": {
      "type": "string",
      "nullable": true
     },
     "billAddrCity": {
      "type": "string",
      "nullable": true
     },
     "billAddrCountry": {
      "type": "string",
      "nullable": true
     },
     "billAddrLine1": {
      "type": "string",
      "nullable": true
     },
     "billAddrLine2": {
      "type": "string",
      "nullable": true
     },
     "billAddrLine3": {
      "type": "string",
      "nullable": true
     },
     "billAddrPostCode": {
      "type": "string",
      "nullable": true
     },
     "email": {
      "type": "string",
      "nullable": true
     },
     "homePhone": {
      "allOf": [
       {
        "$ref": "#/components/schemas/HomePhone"
       }
      ],
      "nullable": true
     },
     "mobilePhone": {
      "allOf": [
       {
        "$ref": "#/components/schemas/MobilePhone"
       }
      ],
      "nullable": true
     },
     "shipAddrCity": {
      "type": "string",
      "nullable": true
     },
     "shipAddrCountry": {
      "type": "string",
      "nullable": true
     },
     "shipAddrLine1": {
      "type": "string",
      "nullable": true
     },
     "shipAddrLine2": {
      "type": "string",
      "nullable": true
     },
     "shipAddrLine3": {
      "type": "string",
      "nullable": true
     },
     "shipAddrPostCode": {
      "type": "string",
      "nullable": true
     },
     "workPhone": {
      "allOf": [
       {
        "$ref": "#/components/schemas/WorkPhone"
       }
      ],
      "nullable": true
     },
     "acctInfo": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CardholderAccount"
       }
      ],
      "nullable": true
     }
    }
   },
   "CardLogData": {
    "type": "object",
    "properties": {
     "cardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference, which identifies one issued card including its renewals. Returned by the create and listing operations alongside the shadow number."
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "logCode": {
      "type": "string",
      "nullable": true,
      "description": "What kind of log entry this is."
     },
     "logCodeDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `logCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "oldValue": {
      "type": "string",
      "nullable": true,
      "description": "The value before the change, as the log recorded it."
     },
     "newValue": {
      "type": "string",
      "nullable": true,
      "description": "The value after the change, as the log recorded it."
     },
     "cardLogDetail": {
      "type": "string",
      "nullable": true
     },
     "insertChannelId": {
      "type": "string",
      "nullable": true,
      "description": "Which channel created the row."
     },
     "insertChannelDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `insertChannelId`, carried alongside it for display. It is not a key: match on the code."
     },
     "insertUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who created the row, as the platform recorded it."
     },
     "insertDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was created.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     }
    }
   },
   "CardRestriction": {
    "type": "object",
    "properties": {
     "restrictionCode": {
      "type": "string",
      "description": "Values:\n\n- `SA` — purchase\n- `NA` — cash\n- `DN` — domestic cash\n- `YD` — international sale\n- `YN` — international cash\n- `AT` — ATM\n- `MO` — mail order\n- `EC` — e-commerce, fully secure\n- `EN` — e-commerce, half secure\n- `EX` — e-commerce, not secure\n- `CLS` — contactless\n- `TA` — instalment\n- `PTH` — pre-authorisation\n- `QC` — quasi cash\n- `CB` — POS cashback\n- `CSB` — cashback\n- `TCS` — POS cash advance\n- `FA` — bill payment\n- `VG` — tax payment\n- `CEK` — cheque\n- `FF` — FastFund\n- `PPP` — project sharing programme",
      "nullable": true
     },
     "restrictionCodeDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `restrictionCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "restrictionPermissionIndicator": {
      "type": "string",
      "nullable": true,
      "description": "Whether the entry grants the capability or withholds it."
     },
     "restrictionPermissionIndicatorDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `restrictionPermissionIndicator`, carried alongside it for display. It is not a key: match on the code."
     }
    }
   },
   "CardholderAccount": {
    "type": "object",
    "properties": {
     "chAccAgeInd": {
      "type": "string",
      "nullable": true
     },
     "chAccDate": {
      "type": "string",
      "nullable": true
     },
     "chAccChangeInd": {
      "type": "string",
      "nullable": true
     },
     "chAccChange": {
      "type": "string",
      "nullable": true
     },
     "chAccPwChangeInd": {
      "type": "string",
      "nullable": true
     },
     "chAccPwChange": {
      "type": "string",
      "nullable": true
     },
     "shipAddressUsageInd": {
      "type": "string",
      "nullable": true
     },
     "shipAddressUsage": {
      "type": "string",
      "nullable": true
     },
     "txnActivityDay": {
      "type": "string",
      "nullable": true
     },
     "txnActivityYear": {
      "type": "string",
      "nullable": true
     },
     "provisionAttemptsDay": {
      "type": "string",
      "nullable": true
     },
     "nbPurchaseAccount": {
      "type": "string",
      "nullable": true
     },
     "suspiciousAccActivity": {
      "type": "string",
      "nullable": true
     },
     "shipNameIndicator": {
      "type": "string",
      "nullable": true
     },
     "paymentAccInd": {
      "type": "string",
      "nullable": true
     },
     "paymentAccAge": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "ChangeCustomerLimitRequest": {
    "required": [
     "customerNumber",
     "newCustomerLimit"
    ],
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "description": "The customer whose limit changes.",
      "format": "int64"
     },
     "newCustomerLimit": {
      "type": "number",
      "description": "The limit to set. An absolute figure, not a delta — and it is what decides the direction, because this operation does not read one from the path.",
      "format": "double"
     },
     "cardProfileSetCode": {
      "type": "string",
      "description": "`Read-only` — Declared on the request and not passed on.",
      "nullable": true,
      "maxLength": 10
     }
    }
   },
   "ChangeCustomerLimitResponse": {
    "type": "object"
   },
   "CreateCustomerAddressData": {
    "required": [
     "addressType",
     "addressText",
     "isDefault",
     "isCardAddress",
     "isConfirmed"
    ],
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "description": "`Ignored` — Overwritten with the customer number the service allocates.",
      "format": "int64"
     },
     "addressType": {
      "type": "string",
      "description": "Must be a defined address type.\n\nValues:\n\n- `RA` — home\n- `AL` — business\n- `EA` — employer\n- `OO` — alternative\n- `WA` — previous\n- `SW` — SWIFT\n- `SS` — SWIFT name and address\n- `MR` — Mernis, registered\n- `MS` — Mernis, stated\n\nNot set is `--`.",
      "maxLength": 2,
      "x-everest-enum": true
     },
     "addressText": {
      "type": "string",
      "description": "Full address text.",
      "maxLength": 500
     },
     "isDefault": {
      "type": "boolean",
      "description": "Exactly one address in the list must carry it."
     },
     "isCardAddress": {
      "type": "boolean",
      "description": "At most one address in the list may carry it."
     },
     "isConfirmed": {
      "type": "boolean",
      "description": "Marks the address as approved."
     },
     "addressId": {
      "type": "integer",
      "description": "`Ignored` — The stored address identifier is the record identifier the service allocates.",
      "format": "int64",
      "nullable": true
     },
     "countryId": {
      "type": "integer",
      "description": "`NotNull` — When supplied it must be a defined country. It is mandatory whenever `cityId` is supplied.",
      "format": "int32",
      "nullable": true
     },
     "industrialZoneId": {
      "type": "integer",
      "description": "Industrial Zone Identifier",
      "format": "int32",
      "nullable": true
     },
     "industrialZoneName": {
      "type": "string",
      "nullable": true,
      "maxLength": 50
     },
     "cityId": {
      "type": "integer",
      "description": "`Dependent · NotNull` — Requires `countryId`, and the city must be defined for that country.",
      "format": "int32",
      "nullable": true
     },
     "cityName": {
      "type": "string",
      "description": "`Dependent` — When `cityId` and `countryId` are both supplied it must equal the defined name of that city.",
      "nullable": true,
      "maxLength": 50
     },
     "countyId": {
      "type": "integer",
      "description": "County Identifier, see County_Def table",
      "format": "int32",
      "nullable": true
     },
     "countyName": {
      "type": "string",
      "description": "County Name, see County_Def table",
      "nullable": true,
      "maxLength": 50
     },
     "townId": {
      "type": "integer",
      "description": "Town Identifier, see Town_Def table",
      "format": "int32",
      "nullable": true
     },
     "townName": {
      "type": "string",
      "description": "Town Name, see Town_Def table",
      "nullable": true,
      "maxLength": 50
     },
     "villageId": {
      "type": "integer",
      "description": "Village Identifier, see Village_Def table",
      "format": "int32",
      "nullable": true
     },
     "villageName": {
      "type": "string",
      "description": "Village Name, see Village_Def table",
      "nullable": true,
      "maxLength": 50
     },
     "districtId": {
      "type": "integer",
      "description": "District Identifier, see District_Def table",
      "format": "int32",
      "nullable": true
     },
     "districtName": {
      "type": "string",
      "description": "District Name, see District_Def table",
      "nullable": true,
      "maxLength": 50
     },
     "streetId": {
      "type": "integer",
      "description": "Street Identifier, see Street_Def table",
      "format": "int32",
      "nullable": true
     },
     "streetName": {
      "type": "string",
      "description": "Street Name, see Street_Def table",
      "nullable": true,
      "maxLength": 100
     },
     "siteName": {
      "type": "string",
      "description": "Address Site Name",
      "nullable": true,
      "maxLength": 40
     },
     "buildingId": {
      "type": "integer",
      "description": "Building Identifier",
      "format": "int32",
      "nullable": true
     },
     "buildingName": {
      "type": "string",
      "nullable": true,
      "maxLength": 40
     },
     "buildingNumber": {
      "type": "string",
      "nullable": true,
      "maxLength": 20
     },
     "buildingEntrance": {
      "type": "string",
      "description": "Building Entrance Number",
      "nullable": true,
      "maxLength": 10
     },
     "flatNumber": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "apartmentNumber": {
      "type": "string",
      "nullable": true,
      "maxLength": 20
     },
     "stateId": {
      "type": "integer",
      "description": "State Identifier",
      "format": "int32",
      "nullable": true
     },
     "stateName": {
      "type": "string",
      "nullable": true,
      "maxLength": 100,
      "description": "The state or province of the address."
     },
     "zipCode": {
      "type": "string",
      "nullable": true,
      "maxLength": 10,
      "description": "The post code of the address."
     },
     "poBoxNumber": {
      "type": "string",
      "description": "Post Box Number",
      "nullable": true,
      "maxLength": 20
     }
    }
   },
   "CreateCustomerData": {
    "required": [
     "main"
    ],
    "type": "object",
    "properties": {
     "main": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CreateCustomerMainData"
       }
      ],
      "description": "Core identity and type of the customer."
     },
     "persona": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CreateCustomerPersonalData"
       }
      ],
      "description": "`Conditional · NotNull` — Mandatory when `customerType` is the retail, employee or lite-default type. For every other customer type it is not read.",
      "nullable": true
     },
     "corporate": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CreateCustomerFirmData"
       }
      ],
      "description": "`Conditional · NotNull` — Mandatory when `customerType` is not the retail, employee or lite-default type. For those types it is not read.",
      "nullable": true
     },
     "segment": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CreateCustomerSegmentData"
       }
      ],
      "description": "Segment codes copied onto the customer master.",
      "nullable": true
     },
     "preferences": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CreateCustomerPreferenceData"
       }
      ],
      "description": "When the block is absent every preference takes its own default."
     },
     "limit": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CreateCustomerLimitData"
       }
      ],
      "description": "`Ignored` — The integration layer does not forward this block, so the credit and cash limits are always created as zero.",
      "nullable": true
     }
    }
   },
   "CreateCustomerEmailData": {
    "required": [
     "eMailAddress",
     "isConfirmed"
    ],
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "description": "`Ignored` — Overwritten with the customer number the service allocates.",
      "format": "int64"
     },
     "eMailAddress": {
      "type": "string",
      "description": "`NotNull · InvalidEmailAddress` — Mandatory although the schema marks it optional, and it must parse as an e-mail address.",
      "nullable": false,
      "maxLength": 50
     },
     "isConfirmed": {
      "type": "boolean",
      "description": "Marks the address as approved."
     }
    }
   },
   "CreateCustomerFirmData": {
    "required": [
     "firmName",
     "authorityCustomerNumber",
     "firmCustomerType"
    ],
    "type": "object",
    "properties": {
     "firmNumber": {
      "type": "integer",
      "description": "Stored on the customer master as well as the firm record.",
      "format": "int64",
      "nullable": true
     },
     "taxNumber": {
      "type": "string",
      "description": "Stored on the customer master.",
      "nullable": true,
      "maxLength": 10
     },
     "taxOffice": {
      "type": "string",
      "description": "Stored on the customer master.",
      "nullable": true,
      "maxLength": 100
     },
     "firmName": {
      "type": "string",
      "description": "Registered name of the firm.",
      "maxLength": 150
     },
     "embossFirmName": {
      "type": "string",
      "description": "Firm Name On Card",
      "nullable": true,
      "maxLength": 150
     },
     "authorityCustomerNumber": {
      "type": "integer",
      "description": "Customer number of the employee responsible for the firm. It is not checked against an existing customer.",
      "format": "int64"
     },
     "firmCustomerType": {
      "type": "string",
      "description": "Mandatory although the schema marks it optional. It is not checked against a definition table.",
      "nullable": false,
      "maxLength": 2
     },
     "tradeRegistrationNumber": {
      "type": "string",
      "description": "Trading Registration Number",
      "nullable": true,
      "maxLength": 20
     },
     "tradeRegistrationDate": {
      "type": "string",
      "description": "Trading Registration Date\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "tradeRegistrationOffice": {
      "type": "string",
      "description": "Trading Registration Office",
      "nullable": true,
      "maxLength": 100
     },
     "foundationDate": {
      "type": "string",
      "description": "Corporate Foundation Date\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "authorityName": {
      "type": "string",
      "description": "Corporate Responsable Employee Full Name",
      "nullable": true,
      "maxLength": 100
     },
     "authorityGsmNumber": {
      "type": "string",
      "description": "Corporate Responsable Employee Mobile Number",
      "nullable": true,
      "maxLength": 64
     },
     "authorityMailAddress": {
      "type": "string",
      "description": "Corporate Responsable Employee E-Mail Address",
      "nullable": true,
      "maxLength": 50
     }
    }
   },
   "CreateCustomerGsmData": {
    "required": [
     "gsmCountryId",
     "gsmAreaCode",
     "gsmNumber",
     "phoneNumberText",
     "isContactNumber",
     "isConfirmed"
    ],
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "description": "`Ignored` — Overwritten with the customer number the service allocates.",
      "format": "int64"
     },
     "gsmCountryId": {
      "type": "integer",
      "description": "Country code. It must not be negative and must not exceed four digits.",
      "format": "int32",
      "minimum": 1
     },
     "gsmAreaCode": {
      "type": "integer",
      "description": "Area code. It must not be negative and must not exceed four digits.",
      "format": "int32",
      "minimum": 1
     },
     "gsmNumber": {
      "type": "string",
      "description": "At most fifteen characters, and it must contain at least one digit.",
      "maxLength": 15
     },
     "phoneNumberText": {
      "type": "string",
      "description": "Mandatory although the schema marks it optional. At most two hundred and fifty characters, and it must contain at least one digit.",
      "nullable": false,
      "maxLength": 250
     },
     "isConfirmed": {
      "type": "boolean",
      "description": "Marks the mobile number as approved."
     },
     "confirmDate": {
      "type": "string",
      "description": "Gsm Approve Date\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "isContactNumber": {
      "type": "boolean",
      "description": "Exactly one mobile number in the list must carry it."
     }
    }
   },
   "CreateCustomerLimitData": {
    "required": [
     "limit",
     "cashLimit"
    ],
    "type": "object",
    "properties": {
     "limit": {
      "type": "number",
      "description": "`Optional · Ignored` — Not forwarded by the integration layer. The customer is always created with a zero credit limit.",
      "format": "double"
     },
     "cashLimit": {
      "type": "number",
      "description": "`Optional · Ignored` — Not forwarded by the integration layer. The customer is always created with a zero cash advance limit.",
      "format": "double"
     }
    }
   },
   "CreateCustomerMainData": {
    "required": [
     "customerType",
     "firmCustomerFlag"
    ],
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "description": "When absent the service allocates the next number from its customer sequence.",
      "format": "int64",
      "nullable": true
     },
     "personId": {
      "type": "integer",
      "description": "Defaults to the resulting customer number.",
      "format": "int64",
      "nullable": true
     },
     "externalCustomerNumber": {
      "type": "integer",
      "description": "Defaults to the resulting customer number.",
      "format": "int64",
      "nullable": true
     },
     "firmCustomerFlag": {
      "type": "boolean",
      "description": "Stored as given. It does not choose between the persona and corporate branches; `customerType` does."
     },
     "customerType": {
      "type": "string",
      "description": "Must be a defined customer type. It decides whether `persona` or `corporate` is required. Overwritten with the lite default when `isLite` is true.\n\nValues:\n\n- `1` — corporate\n- `2` — individual\n- `3` — employee\n- `4` — sole proprietorship\n\nNot set is `N`.",
      "maxLength": 1
     },
     "accountingCustomerType": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be a defined accounting customer type.\n\nValues:\n\n- `1` — corporate\n- `2` — individual\n- `3` — employee",
      "nullable": true,
      "maxLength": 1
     },
     "creditCustomerType": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be a defined credit customer type.\n\nValues:\n\n- `S` — standard\n- `V` — VIP\n- `P` — VIP platinum",
      "nullable": true,
      "maxLength": 3
     },
     "branchCode": {
      "type": "integer",
      "description": "Defaults to zero.",
      "format": "int32",
      "nullable": true
     },
     "isLite": {
      "type": "boolean",
      "description": "`Default` — Defaults to false. True requires `tenantId` and puts the request through the lite acceptance rules.",
      "nullable": true
     },
     "tenantId": {
      "type": "string",
      "description": "`Conditional · NotNullOrWhiteSpace` — Required when `isLite` is true, and must match a defined tenant.",
      "nullable": true
     }
    }
   },
   "CreateCustomerPersonalData": {
    "required": [
     "name",
     "surname",
     "birthDate"
    ],
    "type": "object",
    "properties": {
     "citizenshipNumber": {
      "type": "string",
      "description": "`LengthNotEquals` — When supplied it must be exactly eleven characters, and it must not already belong to a valid customer.",
      "nullable": true,
      "minLength": 11,
      "maxLength": 11
     },
     "residenceType": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be a defined residence type. Defaults to domestic residence.\n\nValues:\n\n- `I` — resident in Turkey\n- `D` — resident abroad",
      "nullable": true,
      "maxLength": 2
     },
     "disabledFlag": {
      "type": "boolean",
      "description": "`Default` — Defaults to false when the persona block is absent."
     },
     "name": {
      "type": "string",
      "description": "Given name.",
      "maxLength": 50
     },
     "middleName": {
      "type": "string",
      "description": "Customer Middle Name",
      "nullable": true,
      "maxLength": 50
     },
     "surname": {
      "type": "string",
      "description": "Family name.",
      "maxLength": 50
     },
     "birthDate": {
      "type": "string",
      "description": "Date of birth.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     },
     "birthPlace": {
      "type": "string",
      "description": "Customer Place Of Birth",
      "nullable": true,
      "maxLength": 100
     },
     "fatherName": {
      "type": "string",
      "description": "Customer Father's Name",
      "nullable": true,
      "maxLength": 50
     },
     "motherName": {
      "type": "string",
      "description": "Customer Mother's Name",
      "nullable": true,
      "maxLength": 50
     },
     "maritalStatus": {
      "type": "string",
      "description": "Customer Marital Status Code\n\nValues:\n\n- `1` — single\n- `EV` — married\n- `3` — divorced\n- `4` — widowed\n- `2` — other\n- `0` — unknown",
      "nullable": true,
      "maxLength": 2
     },
     "educationStatus": {
      "type": "string",
      "description": "Educational Status Code\n\nValues:\n\n- `1` — literate\n- `2` — primary\n- `4` — secondary\n- `5` — two-year college\n- `6` — university\n- `7` — master's\n- `8` — doctorate",
      "nullable": true,
      "maxLength": 1
     },
     "nationality": {
      "type": "string",
      "description": "Nationality Code, see Nationality_Def Table",
      "nullable": true,
      "maxLength": 3
     },
     "identityType": {
      "type": "string",
      "description": "Identity Type Code, see Identity_Type_Def table\n\nValues:\n\n- `1` — identity card\n- `PT` — identity card\n- `2` — driver's licence\n- `EH` — driver's permit\n- `3` — passport\n- `PS` — passport\n- `KK` — TRNC identity card\n- `MK` — blue card\n- `IT` — residence permit\n- `AA` — an identity document listed in the annex to the European Agreement\n- `DG` — another type of identity\n- `0` — unknown",
      "nullable": true,
      "maxLength": 2
     },
     "identityNumber": {
      "type": "string",
      "nullable": true,
      "maxLength": 20
     },
     "title": {
      "type": "string",
      "description": "Customer Title",
      "nullable": true,
      "maxLength": 20
     },
     "gender": {
      "type": "string",
      "description": "Gender Type, E=Male, K=Female, X=Unknown\n\nValues:\n\n- `E` — male\n- `K` — female\n- `X` — unknown",
      "nullable": true,
      "maxLength": 1
     },
     "occupation": {
      "type": "string",
      "description": "Occupation Type, see Occupation_Def table",
      "nullable": true,
      "maxLength": 100
     },
     "workplaceName": {
      "type": "string",
      "description": "Customer Workplace Name",
      "nullable": true,
      "maxLength": 150
     },
     "businessTitle": {
      "type": "string",
      "description": "Customer Business Title",
      "nullable": true,
      "maxLength": 50
     }
    }
   },
   "CreateCustomerPhoneData": {
    "required": [
     "phoneType",
     "phoneCountryId",
     "phoneAreaCode",
     "phoneNumber",
     "phoneNumberText",
     "isContactNumber"
    ],
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "description": "`Ignored` — Overwritten with the customer number the service allocates.",
      "format": "int64"
     },
     "phoneType": {
      "type": "string",
      "description": "Must be a defined phone type of at most two characters.\n\nValues:\n\n- `1` — telephone\n- `2` — fax\n- `0` — unknown",
      "maxLength": 2
     },
     "phoneCountryId": {
      "type": "integer",
      "description": "Mandatory although the schema marks it optional. It must be a defined country and must not exceed four digits.",
      "format": "int32",
      "nullable": false
     },
     "phoneAreaCode": {
      "type": "string",
      "description": "Mandatory although the schema marks it optional. At most ten characters, and it must contain at least one digit.",
      "nullable": false,
      "maxLength": 10
     },
     "phoneNumber": {
      "type": "string",
      "description": "Mandatory although the schema marks it optional. At most twenty characters, and it must contain at least one digit.",
      "nullable": false,
      "maxLength": 20
     },
     "phoneNumberText": {
      "type": "string",
      "description": "Mandatory although the schema marks it optional. At most fifty characters, and it must contain at least one digit.",
      "nullable": false,
      "maxLength": 50
     },
     "isContactNumber": {
      "type": "boolean",
      "description": "Exactly one phone number in the list must carry it."
     }
    }
   },
   "CreateCustomerPreferenceData": {
    "required": [],
    "type": "object",
    "properties": {
     "sendWarningLetterFlag": {
      "type": "boolean",
      "description": "`Default` — Defaults to false."
     },
     "communicationType": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be a defined communication language. Defaults to Turkish.\n\nValues:\n\n- `1` — dial-up\n- `2` — ADSL\n- `3` — GSM\n- `4` — GPRS",
      "nullable": true,
      "maxLength": 2
     },
     "autoLimitIncreaseFlag": {
      "type": "boolean",
      "description": "`Default` — Defaults to false."
     },
     "statementPostingFlag": {
      "type": "boolean",
      "description": "`Default` — Defaults to false."
     },
     "statementSmsSendFlag": {
      "type": "boolean",
      "description": "`Default` — Defaults to false."
     },
     "statementEMailSendFlag": {
      "type": "boolean",
      "description": "`Default` — Defaults to false."
     },
     "earnRewardFlag": {
      "type": "boolean",
      "description": "`Default` — Defaults to true, unlike the other preference flags."
     },
     "sensitiveDataPermissionFlag": {
      "type": "boolean",
      "description": "`Default` — Defaults to false."
     },
     "customLimitationFlag": {
      "type": "boolean",
      "description": "`Default` — Defaults to false."
     }
    }
   },
   "CreateCustomerRequest": {
    "required": [
     "channel",
     "customer"
    ],
    "type": "object",
    "properties": {
     "channel": {
      "type": "string",
      "description": "Three-digit code identifying the channel on behalf of which the request is made (e.g. `002` for Internet). Mandatory in every request. Used for entitlement checks, limit enforcement and audit logging. Channel codes are managed through configuration parameters and may change over time. Refer to the <a href=\"https://apiportal.dgpays.com/channels\" target=\"_parent\">Channels</a> page for the current list of valid codes.",
      "maxLength": 3
     },
     "customer": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CreateCustomerData"
       }
      ],
      "description": "Customer data. The `main` block inside it is mandatory as well."
     },
     "communications": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CustomerCommunicationData"
       }
      ],
      "description": "Address, GSM, e-mail and phone records created alongside the customer. Each list is validated up front and written after the customer master row.",
      "nullable": true
     }
    }
   },
   "CreateCustomerResponse": {
    "required": [
     "customerNumber",
     "personId"
    ],
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "personId": {
      "type": "integer",
      "format": "int64",
      "description": "The person behind the customer record."
     }
    }
   },
   "CreateCustomerSegmentData": {
    "type": "object",
    "properties": {
     "behavioralSegmentCode": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be a defined behavioural segment.",
      "nullable": true,
      "maxLength": 1
     },
     "valueSegmentCode": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be a defined value segment. Overwritten with the lite default when `isLite` is true.\n\nValues:\n\n- `02` — standard\n- `03` — private\n- `10` — prestige\n- `07` — prestige+\n- `09` — FES\n- `99` — Islamic\n\nNot set is `N`.",
      "nullable": true,
      "maxLength": 5
     },
     "valueSubSegmentCode": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be a defined value sub-segment. Cleared when `isLite` is true.\n\nValues:\n\n- `10` — private\n- `20` — private plus\n- `30` — investor\n- `40` — other",
      "nullable": true,
      "maxLength": 5
     }
    }
   },
   "CreateFollowUpByMainCustomerNumberRequest": {
    "required": [
     "mainCustomerNumber",
     "channel"
    ],
    "type": "object",
    "properties": {
     "channel": {
      "type": "string",
      "description": "Three-digit code identifying the channel on behalf of which the request is made (e.g. `002` for Internet). Mandatory in every request. Used for entitlement checks, limit enforcement and audit logging. Channel codes are managed through configuration parameters and may change over time. Refer to the <a href=\"https://apiportal.dgpays.com/channels\" target=\"_parent\">Channels</a> page for the current list of valid codes.",
      "nullable": false,
      "maxLength": 3
     },
     "mainCustomerNumber": {
      "type": "integer",
      "description": "Main customer number whose credit cards are closed and which is queued for legal follow-up. The null check cannot fail on this non-nullable integer, so 0 passes it and fails the customer lookup instead.",
      "format": "int64"
     }
    }
   },
   "CreditCardLogData": {
    "type": "object",
    "properties": {
     "cardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference, which identifies one issued card including its renewals. Returned by the create and listing operations alongside the shadow number."
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "logCode": {
      "type": "string",
      "nullable": true,
      "description": "What kind of log entry this is."
     },
     "logCodeDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `logCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "oldValue": {
      "type": "string",
      "nullable": true,
      "description": "The value before the change, as the log recorded it."
     },
     "newValue": {
      "type": "string",
      "nullable": true,
      "description": "The value after the change, as the log recorded it."
     },
     "cardLogDetail": {
      "type": "string",
      "nullable": true
     },
     "insertChannelId": {
      "type": "string",
      "nullable": true,
      "description": "Which channel created the row."
     },
     "insertChannelDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `insertChannelId`, carried alongside it for display. It is not a key: match on the code."
     },
     "insertUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who created the row, as the platform recorded it."
     },
     "insertDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was created.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     }
    }
   },
   "CreditCardStatementCutoffItem": {
    "required": [
     "customerNumber",
     "statementDate",
     "capitalAmount",
     "purchaseInterestAmount",
     "cashInterestAmount",
     "purchaseDueInterestAmount",
     "cashDueInterestAmount",
     "otherFeeAmount",
     "cashFeeAmount",
     "cardFeeAmount",
     "interestKkdfAmount",
     "interestBsmvAmount",
     "feeBsmvAmount",
     "cashInstallmentProfitAmount"
    ],
    "type": "object",
    "properties": {
     "cardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference, which identifies one issued card including its renewals. Returned by the create and listing operations alongside the shadow number."
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "statementDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "capitalAmount": {
      "type": "number",
      "format": "double"
     },
     "purchaseInterestAmount": {
      "type": "number",
      "format": "double"
     },
     "cashInterestAmount": {
      "type": "number",
      "format": "double"
     },
     "purchaseDueInterestAmount": {
      "type": "number",
      "format": "double"
     },
     "cashDueInterestAmount": {
      "type": "number",
      "format": "double"
     },
     "otherFeeAmount": {
      "type": "number",
      "format": "double"
     },
     "cashFeeAmount": {
      "type": "number",
      "format": "double"
     },
     "cardFeeAmount": {
      "type": "number",
      "format": "double"
     },
     "interestKkdfAmount": {
      "type": "number",
      "format": "double"
     },
     "interestBsmvAmount": {
      "type": "number",
      "format": "double"
     },
     "feeBsmvAmount": {
      "type": "number",
      "format": "double"
     },
     "cashInstallmentProfitAmount": {
      "type": "number",
      "format": "double"
     }
    }
   },
   "CreditTransactionList": {
    "type": "object",
    "properties": {
     "acqRefNumber": {
      "type": "string",
      "nullable": true
     },
     "authorizationMatchStatus": {
      "type": "string",
      "nullable": true,
      "description": "Whether the clearing record was matched to an authorisation."
     },
     "authorizationNumber": {
      "type": "string",
      "nullable": true,
      "description": "The authorisation code the issuer returned when the transaction was approved. Six characters, from the scheme."
     },
     "billingAmount": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "billingCurrency": {
      "type": "string",
      "nullable": true
     },
     "bkmUniqueMerchantId": {
      "type": "string",
      "nullable": true,
      "description": "The merchant's identifier at BKM, the domestic switch."
     },
     "campaignCodeAcq": {
      "type": "string",
      "nullable": true
     },
     "campaignCodeIss": {
      "type": "string",
      "nullable": true
     },
     "channelTypeDescription": {
      "type": "string",
      "nullable": true
     },
     "clearingChannel": {
      "type": "string",
      "nullable": true
     },
     "clearingDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "clearingNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true
     },
     "customerNumberList": {
      "type": "integer",
      "format": "int64",
      "nullable": true
     },
     "displayAtChannels": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "earnedRewardBank": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "earnedRewardCampaignAcq": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "earnedRewardCampaignIss": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "earnedRewardMerchant": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "embossName": {
      "type": "string",
      "nullable": true,
      "description": "The name embossed on the card."
     },
     "eodDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "invoiceNumber": {
      "type": "string",
      "nullable": true
     },
     "installmentAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "What each instalment comes to."
     },
     "installmentCount": {
      "type": "integer",
      "format": "int32",
      "nullable": true,
      "description": "How many instalments the plan has."
     },
     "installmentNumber": {
      "type": "integer",
      "format": "int32",
      "nullable": true,
      "description": "Which instalment this is."
     },
     "isChipFlag": {
      "type": "boolean",
      "nullable": true,
      "description": "Whether the card's chip was used rather than the stripe."
     },
     "localAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The amount converted into the bank's own currency."
     },
     "localCurrency": {
      "type": "string",
      "nullable": true
     },
     "mainCardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference of the main card. On a supplementary card this is the card it hangs from; on a main card it is the card's own reference."
     },
     "mainCustomerNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The main customer of a corporate relationship, as a number. The employees and supplementary holders under it carry their own `customerNumber`."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "matchStatusDescription": {
      "type": "string",
      "nullable": true
     },
     "mccDescription": {
      "type": "string",
      "nullable": true
     },
     "merchantAmexId": {
      "type": "string",
      "nullable": true
     },
     "merchantCity": {
      "type": "string",
      "nullable": true
     },
     "merchantCountryCode": {
      "type": "string",
      "nullable": true,
      "description": "Where the merchant is, as a country code."
     },
     "merchantName": {
      "type": "string",
      "nullable": true,
      "description": "The merchant's name as it reached the platform from the scheme."
     },
     "networkDescription": {
      "type": "string",
      "nullable": true,
      "description": "The network's name, for display."
     },
     "offlineFlag": {
      "type": "boolean",
      "nullable": true,
      "description": "Whether the terminal approved the transaction without asking the issuer."
     },
     "panEntryMode": {
      "type": "string",
      "nullable": true,
      "description": "How the card was read at the terminal — chip, stripe, contactless, keyed, or stored on file. The scheme's own code."
     },
     "pinEntryMode": {
      "type": "string",
      "nullable": true
     },
     "pinUsage": {
      "type": "string",
      "nullable": true,
      "description": "Whether the transaction was authorised with a PIN."
     },
     "responseCodeDescription": {
      "type": "string",
      "nullable": true
     },
     "responseReasonCodeDescription": {
      "type": "string",
      "nullable": true
     },
     "product": {
      "type": "string",
      "nullable": true
     },
     "refUtid": {
      "type": "string",
      "nullable": true,
      "description": "The transaction this one refers to — the original, for a reversal or a correction."
     },
     "requestDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "rewardTypeDescription": {
      "type": "string",
      "nullable": true
     },
     "rrn": {
      "type": "string",
      "nullable": true,
      "description": "The retrieval reference number — the card scheme's handle for the transaction, and what a bank quotes when asking the scheme about it."
     },
     "settlementAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The amount as it settles between the scheme and the bank."
     },
     "settlementCurrency": {
      "type": "string",
      "nullable": true
     },
     "terminalType": {
      "type": "string",
      "nullable": true,
      "description": "What kind of terminal that was — POS, ATM, or another."
     },
     "terminalDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `terminalType`, carried alongside it for display. It is not a key: match on the code."
     },
     "terminalNumber": {
      "type": "string",
      "nullable": true,
      "description": "The terminal the transaction was made at."
     },
     "trnAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The amount of the transaction, in its own currency."
     },
     "trnCodeMatrixDesc": {
      "type": "string",
      "nullable": true
     },
     "trnCode": {
      "type": "string",
      "nullable": true,
      "description": "What kind of transaction this is, as the platform's own code."
     },
     "trnCodeDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `trnCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "trnCurrency": {
      "type": "string",
      "nullable": true
     },
     "trnDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "trnDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `trnCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "trnOrigin": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "utid": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "CustomerAddress": {
    "required": [
     "validFlag",
     "recordId",
     "personId",
     "customerNumber"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "recordId": {
      "type": "integer",
      "format": "int64",
      "description": "The identifier of the row the operation created or acted on, returned so a later call can name it."
     },
     "personId": {
      "type": "integer",
      "format": "int64",
      "description": "The person behind the customer record."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "addressType": {
      "type": "string",
      "description": "Values:\n\n- `RA` — home\n- `AL` — business\n- `EA` — employer\n- `OO` — alternative\n- `WA` — previous\n- `SW` — SWIFT\n- `SS` — SWIFT name and address\n- `MR` — Mernis, registered\n- `MS` — Mernis, stated\n\nNot set is `--`.",
      "nullable": true,
      "x-everest-enum": true
     },
     "addressId": {
      "type": "integer",
      "format": "int64",
      "nullable": true
     },
     "countryId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "industrialZoneId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "industrialZoneName": {
      "type": "string",
      "nullable": true
     },
     "cityId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "cityName": {
      "type": "string",
      "nullable": true
     },
     "countyId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "countyName": {
      "type": "string",
      "nullable": true
     },
     "townshipId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "townshipName": {
      "type": "string",
      "nullable": true
     },
     "villageId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "villageName": {
      "type": "string",
      "nullable": true
     },
     "districtId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "districtName": {
      "type": "string",
      "nullable": true
     },
     "streetId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "streetName": {
      "type": "string",
      "nullable": true
     },
     "siteName": {
      "type": "string",
      "nullable": true
     },
     "buildingId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "buildingName": {
      "type": "string",
      "nullable": true
     },
     "buildingNumber": {
      "type": "string",
      "nullable": true
     },
     "buildingEntrance": {
      "type": "string",
      "nullable": true
     },
     "flatNo": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "apartmentNumber": {
      "type": "string",
      "nullable": true
     },
     "stateId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "stateName": {
      "type": "string",
      "nullable": true,
      "description": "The state or province of the address."
     },
     "zipCode": {
      "type": "string",
      "nullable": true,
      "description": "The post code of the address."
     },
     "poBoxNo": {
      "type": "string",
      "nullable": true
     },
     "addressText": {
      "type": "string",
      "nullable": true
     },
     "isDefault": {
      "type": "string",
      "nullable": true
     },
     "isCardAddress": {
      "type": "string",
      "nullable": true
     },
     "isConfirmed": {
      "type": "string",
      "nullable": true,
      "description": "Whether the record has been confirmed."
     },
     "channelCode": {
      "type": "string",
      "nullable": true,
      "description": "Which channel, as its code."
     },
     "companyCode": {
      "type": "string",
      "nullable": true,
      "description": "Which communication company the record belongs to."
     },
     "enteringChannelCode": {
      "type": "string",
      "nullable": true,
      "description": "Which channel the record was entered through."
     }
    }
   },
   "CustomerCommunicationData": {
    "type": "object",
    "properties": {
     "listOfAddress": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CreateCustomerAddressData"
      },
      "description": "`ListHasNoItem` — When the property is present it must hold at least one address.",
      "nullable": true
     },
     "listOfGsm": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CreateCustomerGsmData"
      },
      "description": "`ListHasNoItem` — When the property is present it must hold at least one mobile number.",
      "nullable": true
     },
     "listOfEmail": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CreateCustomerEmailData"
      },
      "description": "`ListHasNoItem` — When the property is present it must hold at least one e-mail address.",
      "nullable": true
     },
     "listOfPhone": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CreateCustomerPhoneData"
      },
      "description": "`ListHasNoItem` — When the property is present it must hold at least one phone number.",
      "nullable": true
     }
    },
    "required": []
   },
   "CustomerEMail": {
    "required": [
     "validFlag",
     "recordId",
     "personId"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "recordId": {
      "type": "integer",
      "format": "int64",
      "description": "The identifier of the row the operation created or acted on, returned so a later call can name it."
     },
     "personId": {
      "type": "integer",
      "format": "int64",
      "description": "The person behind the customer record."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "eMailId": {
      "type": "integer",
      "format": "int64",
      "nullable": true
     },
     "eMailAddress": {
      "type": "string",
      "nullable": true
     },
     "isConfirmed": {
      "type": "string",
      "nullable": true,
      "description": "Whether the record has been confirmed."
     },
     "confirmDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "channelCode": {
      "type": "string",
      "nullable": true,
      "description": "Which channel, as its code."
     },
     "companyCode": {
      "type": "string",
      "nullable": true,
      "description": "Which communication company the record belongs to."
     },
     "enteringChannelCode": {
      "type": "string",
      "nullable": true,
      "description": "Which channel the record was entered through."
     }
    }
   },
   "CustomerFirmInfo": {
    "required": [
     "validFlag",
     "customerNumber",
     "authorityCustomerNumber"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "firmName": {
      "type": "string",
      "nullable": true
     },
     "embossFirmName": {
      "type": "string",
      "nullable": true
     },
     "authorityCustomerNumber": {
      "type": "integer",
      "format": "int64"
     },
     "firmCustomerType": {
      "type": "string",
      "nullable": true
     },
     "tradeRegistrationNumber": {
      "type": "string",
      "nullable": true
     },
     "tradeRegistrationDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "foundationDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "tradeRegistrationOffice": {
      "type": "string",
      "nullable": true
     },
     "authorityName": {
      "type": "string",
      "nullable": true
     },
     "authorityGsmNumber": {
      "type": "string",
      "nullable": true
     },
     "authorityMailAddress": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "CustomerGsm": {
    "required": [
     "validFlag",
     "recordId",
     "personId",
     "gsmCountryId",
     "gsmAreaCode"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "recordId": {
      "type": "integer",
      "format": "int64",
      "description": "The identifier of the row the operation created or acted on, returned so a later call can name it."
     },
     "personId": {
      "type": "integer",
      "format": "int64",
      "description": "The person behind the customer record."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "gsmId": {
      "type": "integer",
      "format": "int64",
      "nullable": true
     },
     "gsmCountryId": {
      "type": "integer",
      "format": "int32"
     },
     "gsmAreaCode": {
      "type": "integer",
      "format": "int32"
     },
     "gsmNumber": {
      "type": "string",
      "nullable": true
     },
     "phoneNumberText": {
      "type": "string",
      "nullable": true
     },
     "isConfirmed": {
      "type": "string",
      "nullable": true,
      "description": "Whether the record has been confirmed."
     },
     "confirmDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "confirmType": {
      "type": "string",
      "nullable": true
     },
     "rejectDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "isContactNumber": {
      "type": "string",
      "nullable": true
     },
     "channelCode": {
      "type": "string",
      "nullable": true,
      "description": "Which channel, as its code."
     },
     "companyCode": {
      "type": "string",
      "nullable": true,
      "description": "Which communication company the record belongs to."
     },
     "enteringChannelCode": {
      "type": "string",
      "nullable": true,
      "description": "Which channel the record was entered through."
     }
    }
   },
   "CustomerMaster": {
    "required": [
     "insertDate",
     "validFlag",
     "customerNumber",
     "personId",
     "externalCustomerNumber",
     "firmCustomerFlag",
     "branchCode",
     "limit",
     "cashLimit",
     "sendWarningLetterFlag",
     "activityCount",
     "overlimitFlag",
     "overlimitCounter",
     "deficientPaymentCounter",
     "autoLimitIncreaseFlag",
     "blockedAccountFlag",
     "disabledFlag",
     "statementPostingFlag",
     "statementSmsSendFlag",
     "statementeMailSendFlag",
     "earnRewardFlag",
     "sensitiveDataPermissionFlag",
     "customLimitationFlag"
    ],
    "type": "object",
    "properties": {
     "insertDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was created.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "insertUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who created the row, as the platform recorded it."
     },
     "insertTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session the row was created under."
     },
     "updateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was last changed.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "updateUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who last changed the row."
     },
     "updateTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session that last changed it."
     },
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "personId": {
      "type": "integer",
      "format": "int64",
      "description": "The person behind the customer record."
     },
     "externalCustomerNumber": {
      "type": "integer",
      "format": "int64"
     },
     "firmCustomerFlag": {
      "type": "boolean"
     },
     "firmNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true
     },
     "taxNumber": {
      "type": "string",
      "nullable": true,
      "description": "The customer's tax number, as the customer record holds it."
     },
     "taxOffice": {
      "type": "string",
      "nullable": true
     },
     "citizenshipNumber": {
      "type": "string",
      "nullable": true
     },
     "branchCode": {
      "type": "integer",
      "format": "int32"
     },
     "limit": {
      "type": "number",
      "format": "double"
     },
     "cashLimit": {
      "type": "number",
      "format": "double"
     },
     "oldLimit": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "lastLimitUpdateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "proceedingStatusCode": {
      "type": "string",
      "description": "Values:\n\n- `N` — normal\n- `I` — administrative follow-up\n- `K` — legal follow-up\n- `Z` — loss recognised",
      "nullable": true
     },
     "proceedingStatusUpdateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "prevProceedingStatusCode": {
      "type": "string",
      "description": "Values:\n\n- `N` — normal\n- `I` — administrative follow-up\n- `K` — legal follow-up\n- `Z` — loss recognised",
      "nullable": true
     },
     "sendWarningLetterFlag": {
      "type": "boolean"
     },
     "delinquencyStatus": {
      "type": "string",
      "description": "Values:\n\n- `N` — normal\n- `D` — delinquent for the period\n- `G` — delinquent",
      "nullable": true
     },
     "delinquencyPeriod": {
      "type": "integer",
      "format": "int32",
      "nullable": true,
      "description": "How many periods the account has been in arrears."
     },
     "delinquencyStartDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "delinquencyChangeDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "activityStatus": {
      "type": "string",
      "description": "Values:\n\n- `A` — active\n- `I` — inactive\n- `N` — never activated",
      "nullable": true
     },
     "activityCount": {
      "type": "integer",
      "format": "int32"
     },
     "overlimitFlag": {
      "type": "boolean"
     },
     "overlimitCounter": {
      "type": "integer",
      "format": "int32"
     },
     "deficientPaymentCounter": {
      "type": "integer",
      "format": "int32"
     },
     "annualDeficientPaymentCounter": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "customerType": {
      "type": "string",
      "description": "Values:\n\n- `1` — corporate\n- `2` — individual\n- `3` — employee\n- `4` — sole proprietorship\n\nNot set is `N`.",
      "nullable": true
     },
     "accountingCustomerType": {
      "type": "string",
      "description": "Values:\n\n- `1` — corporate\n- `2` — individual\n- `3` — employee",
      "nullable": true
     },
     "creditCustomerType": {
      "type": "string",
      "description": "Values:\n\n- `S` — standard\n- `V` — VIP\n- `P` — VIP platinum",
      "nullable": true
     },
     "behavioralSegmentCode": {
      "type": "string",
      "nullable": true
     },
     "valueSubSegmentCode": {
      "type": "string",
      "description": "Values:\n\n- `10` — private\n- `20` — private plus\n- `30` — investor\n- `40` — other",
      "nullable": true
     },
     "valueSegmentCode": {
      "type": "string",
      "description": "Values:\n\n- `02` — standard\n- `03` — private\n- `10` — prestige\n- `07` — prestige+\n- `09` — FES\n- `99` — Islamic\n\nNot set is `N`.",
      "nullable": true
     },
     "residenceType": {
      "type": "string",
      "description": "Values:\n\n- `I` — resident in Turkey\n- `D` — resident abroad",
      "nullable": true
     },
     "communicationType": {
      "type": "string",
      "description": "Values:\n\n- `1` — dial-up\n- `2` — ADSL\n- `3` — GSM\n- `4` — GPRS",
      "nullable": true
     },
     "statusCode": {
      "type": "string",
      "description": "Values:\n\n- `A` — valid\n- `B` — pending\n- `C` — stolen\n- `D` — cancelled by the bank\n- `F` — fraud\n- `G` — temporarily blocked\n- `I` — cancelled\n- `L` — lost\n- `M` — cancelled by the customer\n- `T` — corporate dummy",
      "nullable": true
     },
     "statusUpdateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "prevStatusCode": {
      "type": "string",
      "nullable": true
     },
     "prevStatusUpdateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "limitAllocationIncome": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "firstTransactionDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "autoLimitIncreaseFlag": {
      "type": "boolean"
     },
     "firstCardIssueDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "kkbStatusCode": {
      "type": "string",
      "nullable": true
     },
     "kkbStatusUpdateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "blockedAccountFlag": {
      "type": "boolean"
     },
     "disabledFlag": {
      "type": "boolean"
     },
     "limitStatus": {
      "type": "string",
      "nullable": true
     },
     "limitStatusUpdateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "statementPostingFlag": {
      "type": "boolean",
      "description": "Whether the statement is posted on paper."
     },
     "statementSmsSendFlag": {
      "type": "boolean"
     },
     "statementeMailSendFlag": {
      "type": "boolean"
     },
     "earnRewardFlag": {
      "type": "boolean"
     },
     "sensitiveDataPermissionFlag": {
      "type": "boolean"
     },
     "customLimitationFlag": {
      "type": "boolean"
     }
    }
   },
   "CustomerPersonalInfo": {
    "required": [
     "validFlag",
     "personId",
     "customerNumber",
     "birthDate"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "personId": {
      "type": "integer",
      "format": "int64",
      "description": "The person behind the customer record."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "name": {
      "type": "string",
      "nullable": true
     },
     "middleName": {
      "type": "string",
      "nullable": true
     },
     "surname": {
      "type": "string",
      "nullable": true
     },
     "birthDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "birthPlace": {
      "type": "string",
      "nullable": true
     },
     "fatherName": {
      "type": "string",
      "nullable": true
     },
     "motherName": {
      "type": "string",
      "nullable": true
     },
     "maritalStatus": {
      "type": "string",
      "description": "Values:\n\n- `1` — single\n- `EV` — married\n- `3` — divorced\n- `4` — widowed\n- `2` — other\n- `0` — unknown",
      "nullable": true
     },
     "educationStatus": {
      "type": "string",
      "description": "Values:\n\n- `1` — literate\n- `2` — primary\n- `4` — secondary\n- `5` — two-year college\n- `6` — university\n- `7` — master's\n- `8` — doctorate",
      "nullable": true
     },
     "nationality": {
      "type": "string",
      "nullable": true
     },
     "identityType": {
      "type": "string",
      "description": "Values:\n\n- `1` — identity card\n- `PT` — identity card\n- `2` — driver's licence\n- `EH` — driver's permit\n- `3` — passport\n- `PS` — passport\n- `KK` — TRNC identity card\n- `MK` — blue card\n- `IT` — residence permit\n- `AA` — an identity document listed in the annex to the European Agreement\n- `DG` — another type of identity\n- `0` — unknown",
      "nullable": true
     },
     "identityNumber": {
      "type": "string",
      "nullable": true
     },
     "title": {
      "type": "string",
      "nullable": true
     },
     "gender": {
      "type": "string",
      "description": "Values:\n\n- `E` — male\n- `K` — female\n- `X` — unknown",
      "nullable": true
     },
     "occupation": {
      "type": "string",
      "nullable": true
     },
     "workplaceName": {
      "type": "string",
      "nullable": true
     },
     "businessTitle": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "CustomerPhone": {
    "required": [
     "validFlag",
     "recordId",
     "personId"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "recordId": {
      "type": "integer",
      "format": "int64",
      "description": "The identifier of the row the operation created or acted on, returned so a later call can name it."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "phoneType": {
      "type": "string",
      "description": "Values:\n\n- `1` — telephone\n- `2` — fax\n- `0` — unknown",
      "nullable": true
     },
     "phoneId": {
      "type": "integer",
      "format": "int64",
      "nullable": true
     },
     "addressId": {
      "type": "integer",
      "format": "int64",
      "nullable": true
     },
     "personId": {
      "type": "integer",
      "format": "int64",
      "description": "The person behind the customer record."
     },
     "phoneCountryId": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "phoneAreaCode": {
      "type": "string",
      "nullable": true
     },
     "phoneNumber": {
      "type": "string",
      "nullable": true
     },
     "phoneNumberText": {
      "type": "string",
      "nullable": true
     },
     "addressType": {
      "type": "string",
      "description": "Values:\n\n- `RA` — home\n- `AL` — business\n- `EA` — employer\n- `OO` — alternative\n- `WA` — previous\n- `SW` — SWIFT\n- `SS` — SWIFT name and address\n- `MR` — Mernis, registered\n- `MS` — Mernis, stated\n\nNot set is `--`.",
      "nullable": true,
      "x-everest-enum": true
     },
     "isContactNumber": {
      "type": "string",
      "nullable": true
     },
     "channelCode": {
      "type": "string",
      "nullable": true,
      "description": "Which channel, as its code."
     },
     "companyCode": {
      "type": "string",
      "nullable": true,
      "description": "Which communication company the record belongs to."
     },
     "enteringChannelCode": {
      "type": "string",
      "nullable": true,
      "description": "Which channel the record was entered through."
     }
    }
   },
   "DecryptDataBlockRequest": {
    "type": "object",
    "properties": {
     "encryptDataBlock": {
      "type": "string",
      "description": "Encrypted data block to decrypt, as returned by the encrypt operation in its `encryptedDataBlock` field. Rejected when null, empty or whitespace. The facade applies no length or format check and forwards the value as given.\n\nA cipher block rather than stored data; no column behind it.",
      "nullable": false
     }
    },
    "required": [
     "encryptDataBlock"
    ]
   },
   "DecryptDataBlockResponse": {
    "type": "object",
    "properties": {
     "clearDataBlock": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "DeviceData": {
    "type": "object",
    "properties": {
     "deviceChannel": {
      "type": "string",
      "nullable": true
     },
     "browserIP": {
      "type": "string",
      "nullable": true
     },
     "deviceInfo": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "EmbossReasonSubDef": {
    "required": [
     "validFlag",
     "useFlag"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "embossReasonSubCode": {
      "type": "string",
      "description": "Values:\n\n- `BRK` — broken card\n- `CHF` — damaged chip\n- `EXP` — renewal at maturity\n- `FRD` — fraud\n- `MGF` — magnetic stripe error\n- `NSU` — name update\n- `OTH` — other\n- `EXO` — bulk renewal at maturity\n- `LST` — lost card\n- `STL` — stolen card\n\nNot set is `---`.",
      "nullable": true
     },
     "embossReasonSubDesc": {
      "type": "string",
      "nullable": true,
      "description": "The description of `embossReasonSubCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "useFlag": {
      "type": "boolean"
     }
    }
   },
   "EncryptedAccountNumber": {
    "required": [
     "cryptoAlgorithm",
     "keyID"
    ],
    "type": "object",
    "properties": {
     "encData": {
      "type": "string",
      "nullable": true
     },
     "cryptoAlgorithm": {
      "type": "integer",
      "format": "int32"
     },
     "keyID": {
      "type": "integer",
      "format": "int32"
     }
    }
   },
   "Error": {
    "type": "object",
    "properties": {
     "transactionId": {
      "type": "string",
      "nullable": true,
      "description": "The platform's identifier for this call, for tracing it in the logs."
     },
     "errorCode": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own code for the error, and what to match on."
     },
     "description": {
      "type": "string",
      "nullable": true,
      "description": "The error in words. `errorCode` is the part to match on; this is for a log or a screen."
     },
     "message": {
      "type": "string",
      "nullable": true,
      "description": "The error in words. `errorCode` is the part to match on."
     },
     "messageFormat": {
      "type": "string",
      "nullable": true,
      "description": "The message before its arguments were substituted in, which is what groups two errors that differ only by their values."
     },
     "arguments": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "nullable": true,
      "description": "The values substituted into `messageFormat`."
     },
     "propertyName": {
      "type": "string",
      "nullable": true,
      "description": "Which field of the request the error is about."
     },
     "detail": {
      "type": "string",
      "nullable": true,
      "description": "More about the error than `message` carries, where there is more."
     },
     "items": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Error"
      },
      "nullable": true,
      "description": "The individual problems, where one error stands for several."
     },
     "isTechnicalError": {
      "type": "boolean",
      "nullable": true,
      "description": "Whether the failure is the platform's rather than the request's. A technical error is worth retrying; a business one is not."
     },
     "exceptionType": {
      "type": "string",
      "nullable": true,
      "description": "The platform's internal exception class. Useful in a support conversation and not something to match on."
     }
    }
   },
   "ExecuteCampaignTransactionRequest": {
    "required": [
     "shadowCardNumber",
     "trnCodeMatrixId",
     "amount",
     "requestChannel"
    ],
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "The card the campaign transaction is posted to.",
      "nullable": false,
      "maxLength": 19
     },
     "trnCodeMatrixId": {
      "type": "string",
      "description": "The transaction code matrix entry to post under. Must be one of the entries listed in the platform's campaign transaction code parameters; any other value is refused, whatever the transaction code matrix itself allows.",
      "nullable": false,
      "maxLength": 20
     },
     "amount": {
      "type": "number",
      "description": "The amount, in minor units. The facade divides it by 100 before doing anything else, so it must be sent as a whole number of the currency's smallest unit. It is then checked against the campaign minimum and maximum held in the platform's parameters: it must be strictly greater than the minimum and no greater than the maximum.",
      "format": "double"
     },
     "currency": {
      "type": "string",
      "description": "`Default` — The transaction currency. Left out or blank, the facade forces the local currency code 949.\n\nNo column of this name exists behind this API. `currencyCode`, which does, is three characters.",
      "nullable": true
     },
     "description": {
      "type": "string",
      "description": "`Default` — The transaction description. Left out or blank, the facade fills it from the campaign parameter that matches `trnCodeMatrixId`.",
      "nullable": true,
      "maxLength": 100
     },
     "requestChannel": {
      "type": "string",
      "description": "The channel the transaction is posted from. Must be a channel the platform defines; an unrecognised value resolves to the undefined channel and is refused.\n\nNot the `channel` every request carries: this is one of nineteen differently-named channel fields the platform uses for other purposes, and no column behind this API stores it.",
      "nullable": false
     }
    }
   },
   "ExecuteCampaignTransactionResponse": {
    "required": [
     "trnId"
    ],
    "type": "object",
    "properties": {
     "utid": {
      "type": "string",
      "nullable": true
     },
     "trnId": {
      "type": "integer",
      "format": "int64",
      "description": "The platform's identifier for the transaction row."
     }
    }
   },
   "GetApplicableProductsRequest": {
    "type": "object",
    "properties": {
     "queryDate": {
      "type": "string",
      "description": "`Ignored` — The operation never reads it. The result is the same whatever date is sent, and whether or not the property is present.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     }
    },
    "required": []
   },
   "GetApplicableProductsResponse": {
    "type": "object",
    "properties": {
     "listOfProduct": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GetApplicableProductsResponseItem"
      },
      "nullable": true,
      "description": "The products the search matched."
     }
    }
   },
   "GetApplicableProductsResponseItem": {
    "required": [
     "virtualAbility",
     "digitalAbility",
     "contactlessAbility",
     "emvAbility",
     "isNoName"
    ],
    "type": "object",
    "properties": {
     "productNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card product the card is issued on. Defined in the parameter tables; `getCardProductList` returns the ones a tenant may use."
     },
     "productName": {
      "type": "string",
      "nullable": true,
      "description": "The card product's full name."
     },
     "productShortName": {
      "type": "string",
      "nullable": true,
      "description": "The card product's short name, for a list or a statement line."
     },
     "brand": {
      "type": "string",
      "nullable": true,
      "description": "Which scheme the card is issued on."
     },
     "virtualAbility": {
      "type": "boolean"
     },
     "digitalAbility": {
      "type": "boolean",
      "description": "Whether the product can be issued as a digital card."
     },
     "typeCode": {
      "type": "string",
      "nullable": true
     },
     "segmentCode": {
      "type": "string",
      "nullable": true
     },
     "bin": {
      "type": "string",
      "nullable": true,
      "description": "The bank identification number — the leading digits of the card number that name the issuer and the product range."
     },
     "contactlessAbility": {
      "type": "boolean"
     },
     "emvAbility": {
      "type": "boolean"
     },
     "groupCode": {
      "type": "string",
      "nullable": true
     },
     "classCode": {
      "type": "string",
      "nullable": true
     },
     "isNoName": {
      "type": "boolean"
     },
     "typeCodeDetail": {
      "type": "string",
      "nullable": true
     },
     "tenantId": {
      "type": "string",
      "nullable": true
     },
     "listOfApplicableChannel": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "nullable": true
     }
    }
   },
   "GetAssetByShadowCardNumberRequest": {
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "The card whose asset record is read.",
      "nullable": false,
      "maxLength": 19
     }
    },
    "required": [
     "shadowCardNumber"
    ]
   },
   "GetAssetByShadowCardNumberResponse": {
    "required": [
     "customerNumber",
     "supplementaryCard",
     "mainCustomerNumber",
     "insertDate"
    ],
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "serviceDomainId": {
      "type": "string",
      "description": "Values:\n\n- `01` — credit\n- `02` — debit\n- `03` — prepaid",
      "nullable": true,
      "x-everest-enum": true
     },
     "ownerName": {
      "type": "string",
      "nullable": true,
      "description": "The cardholder's first name, as the customer record holds it."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "ownerSecondName": {
      "type": "string",
      "nullable": true,
      "description": "The cardholder's middle name, where there is one."
     },
     "ownerSurname": {
      "type": "string",
      "nullable": true,
      "description": "The cardholder's surname, as the customer record holds it."
     },
     "psn": {
      "type": "string",
      "nullable": true
     },
     "bin": {
      "type": "string",
      "nullable": true,
      "description": "The bank identification number — the leading digits of the card number that name the issuer and the product range."
     },
     "supplementaryCard": {
      "type": "boolean",
      "description": "Whether this is a supplementary card rather than a main one."
     },
     "cardStatusCode": {
      "type": "string",
      "description": "Values:\n\n- `A` — valid\n- `B` — pending\n- `C` — stolen\n- `D` — cancelled by the bank\n- `F` — fraud\n- `G` — temporarily blocked\n- `I` — cancelled\n- `L` — lost\n- `M` — cancelled by the customer\n- `T` — corporate dummy",
      "nullable": true
     },
     "cardStatusReasonCode": {
      "type": "string",
      "nullable": true
     },
     "productNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card product the card is issued on. Defined in the parameter tables; `getCardProductList` returns the ones a tenant may use."
     },
     "cardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference, which identifies one issued card including its renewals. Returned by the create and listing operations alongside the shadow number."
     },
     "maskedPanAlternative": {
      "type": "string",
      "nullable": true,
      "description": "A second masked form of the card number, masked differently for a channel that needs other digits."
     },
     "mainCardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference of the main card. On a supplementary card this is the card it hangs from; on a main card it is the card's own reference."
     },
     "ownerSearchName": {
      "type": "string",
      "nullable": true,
      "description": "The cardholder's name normalised for searching — accents and case removed. It is not the name on the card."
     },
     "mainCustomerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The main customer of a corporate relationship, as a number. The employees and supplementary holders under it carry their own `customerNumber`."
     },
     "insertUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who created the row, as the platform recorded it."
     },
     "insertDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was created.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     }
    }
   },
   "GetAuthorizationListByBegindateEnddateParam": {
    "type": "object",
    "properties": {
     "AuthStatus": {
      "type": "string",
      "description": "Only `1` returns rows. The query compares this value against a fixed constant rather than against a column, so any other value returns an empty list while leaving it out returns everything.",
      "nullable": true
     },
     "BeginDate": {
      "type": "string",
      "description": "`Required` — Start of the transaction date range. Inclusive. Nothing validates it, but omitting it returns nothing, because the query compares against it directly rather than treating it as absent.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "EndDate": {
      "type": "string",
      "description": "`Required` — End of the transaction date range. Inclusive. Omitting it returns nothing, for the same reason as `BeginDate`.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "MaxAmount": {
      "type": "number",
      "description": "Upper bound on the local amount.",
      "format": "double",
      "nullable": true
     },
     "MinAmount": {
      "type": "number",
      "description": "Lower bound on the local amount.",
      "format": "double",
      "nullable": true
     },
     "NetworkType": {
      "type": "string",
      "description": "Narrows the list to one source network.",
      "nullable": true
     },
     "ResponseCode": {
      "type": "string",
      "description": "Narrows the list to one response code. It is applied to the authorisation and non-financial sources only; on the daily pool source it is compared against a fixed approved constant instead, so any other value drops that source entirely.",
      "nullable": true
     },
     "ResponseReasonCode": {
      "type": "string",
      "description": "Narrows the list to one response reason code, with the same exception on the daily pool source as `ResponseCode`.",
      "nullable": true
     },
     "ShadowCardNumber": {
      "type": "string",
      "description": "`Required` — The card whose authorisations are listed. The document leaves this optional and nothing validates it, but all three queries behind the view match it exactly, so omitting it returns nothing.",
      "nullable": true
     },
     "TrnCodeMatrixId": {
      "type": "string",
      "description": "Narrows the list to one transaction code matrix entry.",
      "nullable": true
     }
    }
   },
   "GetAuthorizationListByBegindateEnddateRequest": {
    "type": "object",
    "properties": {
     "GetAuthorizationListByBegindateEnddateParam": {
      "allOf": [
       {
        "$ref": "#/components/schemas/GetAuthorizationListByBegindateEnddateParam"
       }
      ],
      "description": "The search criteria. The repository throws when this is missing, so it must be sent.",
      "nullable": false
     }
    },
    "required": [
     "GetAuthorizationListByBegindateEnddateParam"
    ]
   },
   "GetAuthorizationListByBegindateEnddateResponse": {
    "type": "object",
    "properties": {
     "GetAuthorizationListByBegindateEnddateResult": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GetAuthorizationListByBegindateEnddateResult"
      },
      "nullable": true
     }
    }
   },
   "GetAuthorizationListByBegindateEnddateResult": {
    "type": "object",
    "properties": {
     "AuthorizationMatchStatus": {
      "type": "string",
      "nullable": true,
      "description": "Whether the clearing record was matched to an authorisation."
     },
     "AuthorizationNumber": {
      "type": "string",
      "nullable": true,
      "description": "The authorisation code the issuer returned when the transaction was approved. Six characters, from the scheme."
     },
     "BkmUniqueMerchantId": {
      "type": "string",
      "nullable": true,
      "description": "The merchant's identifier at BKM, the domestic switch."
     },
     "CardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference, which identifies one issued card including its renewals. Returned by the create and listing operations alongside the shadow number."
     },
     "CardSeqNumber": {
      "type": "integer",
      "format": "int32",
      "nullable": true,
      "description": "Which chip on the card was used, where a customer holds more than one card on the same number."
     },
     "ChannelTypeDescription": {
      "type": "string",
      "nullable": true
     },
     "Customer": {
      "type": "string",
      "nullable": true
     },
     "CustomerNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "IsChipFlag": {
      "type": "boolean",
      "nullable": true,
      "description": "Whether the card's chip was used rather than the stripe."
     },
     "LocalAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The amount converted into the bank's own currency."
     },
     "LocalCurrencyDescription": {
      "type": "string",
      "nullable": true
     },
     "MainCustomerNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The main customer of a corporate relationship, as a number. The employees and supplementary holders under it carry their own `customerNumber`."
     },
     "MaskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key."
     },
     "MatchStatusDescription": {
      "type": "string",
      "nullable": true,
      "description": "That matching state in words."
     },
     "MccDescription": {
      "type": "string",
      "nullable": true
     },
     "MerchantCountryCode": {
      "type": "string",
      "nullable": true,
      "description": "Where the merchant is, as a country code."
     },
     "MerchantName": {
      "type": "string",
      "nullable": true,
      "description": "The merchant's name as it reached the platform from the scheme."
     },
     "NetworkTypeDescription": {
      "type": "string",
      "nullable": true
     },
     "OfflineFlag": {
      "type": "boolean",
      "nullable": true,
      "description": "Whether the terminal approved the transaction without asking the issuer."
     },
     "OpenReceiptFormIsEnabled": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "PanEntryMode": {
      "type": "string",
      "nullable": true,
      "description": "How the card was read at the terminal — chip, stripe, contactless, keyed, or stored on file. The scheme's own code."
     },
     "PinUsage": {
      "type": "string",
      "nullable": true,
      "description": "Whether the transaction was authorised with a PIN."
     },
     "PreAuthorizationStatus": {
      "type": "string",
      "nullable": true
     },
     "ProductName": {
      "type": "string",
      "nullable": true,
      "description": "The card product's full name."
     },
     "ResponseCodeDescription": {
      "type": "string",
      "nullable": true
     },
     "ResponseReasonCodeDescription": {
      "type": "string",
      "nullable": true
     },
     "Rrn": {
      "type": "string",
      "nullable": true,
      "description": "The retrieval reference number — the card scheme's handle for the transaction, and what a bank quotes when asking the scheme about it."
     },
     "SettlementAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The amount as it settles between the scheme and the bank."
     },
     "SettlementCurrencyDescription": {
      "type": "string",
      "nullable": true
     },
     "SuccessCode": {
      "type": "string",
      "nullable": true
     },
     "TerminalNumber": {
      "type": "string",
      "nullable": true,
      "description": "The terminal the transaction was made at."
     },
     "TerminalType": {
      "type": "string",
      "nullable": true,
      "description": "What kind of terminal that was — POS, ATM, or another."
     },
     "TransactionDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "TransactionDescription": {
      "type": "string",
      "nullable": true,
      "description": "The transaction in words, as it reached the platform."
     },
     "TransactionTime": {
      "type": "string",
      "nullable": true
     },
     "TrnAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The amount of the transaction, in its own currency."
     },
     "TrnCodeMatrixDescription": {
      "type": "string",
      "nullable": true
     },
     "TrnCurrencyDescription": {
      "type": "string",
      "nullable": true
     },
     "TrnStatusDescription": {
      "type": "string",
      "nullable": true,
      "description": "The transaction's state in words."
     },
     "Utid": {
      "type": "string",
      "nullable": true,
      "description": "The unique transaction identifier the platform gives a transaction, and the handle every later operation on it takes. Returned by the transaction listings."
     }
    }
   },
   "GetAutoPaymentQueueParam": {
    "required": [
     "dueDate",
     "startRowNo",
     "endRowNo"
    ],
    "type": "object",
    "properties": {
     "dueDate": {
      "type": "string",
      "description": "The due date to queue for. Matched as a whole day, so any time component is ignored, and matched exactly — this is a single day, not the start of a range.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     },
     "endRowNo": {
      "type": "integer",
      "description": "Last row of the window. Inclusive. Nothing caps the width of the window, and the response carries no total, so there is no way to tell from one call whether more rows remain.",
      "format": "int32"
     },
     "startRowNo": {
      "type": "integer",
      "description": "First row of the window, counting from one. Inclusive. Nothing validates it against `endRowNo`; a start beyond the end simply returns nothing.",
      "format": "int32"
     }
    }
   },
   "GetAutoPaymentQueueRequest": {
    "type": "object",
    "properties": {
     "getAutoPaymentQueueParam": {
      "allOf": [
       {
        "$ref": "#/components/schemas/GetAutoPaymentQueueParam"
       }
      ],
      "description": "The due date and the row window. The operation dereferences this without a null check, so it must be sent.",
      "nullable": false
     }
    },
    "required": [
     "getAutoPaymentQueueParam"
    ]
   },
   "GetAutoPaymentQueueResponse": {
    "type": "object",
    "properties": {
     "getAutoPaymentQueueResult": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GetAutoPaymentQueueResult"
      },
      "nullable": true
     }
    }
   },
   "GetAutoPaymentQueueResult": {
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "format": "int32",
      "nullable": true,
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "dailyPaymentAmount": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "dueDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "dueOptionDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "mainCardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference of the main card. On a supplementary card this is the card it hangs from; on a main card it is the card's own reference."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "paymentAccountBranchCode": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "paymentAccountNumber": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "paymentAccountOwnerName": {
      "type": "string",
      "nullable": true
     },
     "paymentAccountSuffix": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "paymentTotalCurrent": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "paymentType": {
      "type": "string",
      "nullable": true,
      "description": "What kind of payment this is."
     },
     "remainingMinimumPaymentAmount": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "remainingAmount": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     },
     "statementCurrencyCode": {
      "type": "string",
      "nullable": true
     },
     "statementDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "statementMinAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The least that may be paid against the statement."
     },
     "statementTotalAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "What the statement comes to."
     }
    }
   },
   "GetAvailableEmbossReasonByCardStatusResult": {
    "type": "object",
    "properties": {
     "embossReasonSubCode": {
      "type": "string",
      "description": "Values:\n\n- `BRK` — broken card\n- `CHF` — damaged chip\n- `EXP` — renewal at maturity\n- `FRD` — fraud\n- `MGF` — magnetic stripe error\n- `NSU` — name update\n- `OTH` — other\n- `EXO` — bulk renewal at maturity\n- `LST` — lost card\n- `STL` — stolen card\n\nNot set is `---`.",
      "nullable": true
     },
     "embossReasonSubDesc": {
      "type": "string",
      "nullable": true,
      "description": "The description of `embossReasonSubCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "statusCode": {
      "type": "string",
      "description": "Values:\n\n- `A` — valid\n- `B` — pending\n- `C` — stolen\n- `D` — cancelled by the bank\n- `F` — fraud\n- `G` — temporarily blocked\n- `I` — cancelled\n- `L` — lost\n- `M` — cancelled by the customer\n- `T` — corporate dummy",
      "nullable": true
     },
     "statusReasonCode": {
      "type": "string",
      "nullable": true,
      "description": "Why the status is what it is."
     }
    }
   },
   "GetAvailableEmbossReasonListRequest": {
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "Shadow card number whose permitted emboss reasons are listed. The facade does not validate it and passes it straight to the CIS online service.",
      "nullable": true,
      "maxLength": 19
     }
    }
   },
   "GetAvailableEmbossReasonListResponse": {
    "type": "object",
    "properties": {
     "getAvailableEmbossReasonByCardStatusResult": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GetAvailableEmbossReasonByCardStatusResult"
      },
      "nullable": true
     }
    }
   },
   "GetBasicCardInformationByPanRequest": {
    "type": "object",
    "properties": {
     "pan": {
      "type": "string",
      "description": "The card's PAN, in the clear.\n\nA card number is not stored by these services; the platform keeps a shadow card number instead.",
      "nullable": false
     }
    },
    "required": [
     "pan"
    ]
   },
   "GetBasicCardInformationByPanResponse": {
    "required": [
     "customerNumber"
    ],
    "type": "object",
    "properties": {
     "bin": {
      "type": "string",
      "nullable": true,
      "description": "The bank identification number — the leading digits of the card number that name the issuer and the product range."
     },
     "psn": {
      "type": "string",
      "nullable": true
     },
     "cardType": {
      "type": "string",
      "description": "Values:\n\n- `C` — credit\n- `D` — debit\n- `P` — prepaid",
      "nullable": true,
      "x-everest-enum": true
     },
     "encryptedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number encrypted under the platform's key, which is how it travels between services."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "hashCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "A one-way hash of the card number, for matching two records without carrying the number."
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     }
    }
   },
   "GetBinDomesticByBinRequest": {
    "type": "object",
    "properties": {
     "bin": {
      "type": "string",
      "description": "Card BIN. It is right-padded with zeros to twelve digits and then matched numerically against the minimum and maximum of each domestic BIN range, so a shorter prefix is accepted. The value must be numeric.",
      "nullable": false,
      "maxLength": 8
     }
    },
    "required": [
     "bin"
    ]
   },
   "GetBinDomesticByBinResponse": {
    "required": [
     "validFlag",
     "acqFlag",
     "bonusFlag",
     "businessFlag",
     "preAuthDebitFlag"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "binMinValue": {
      "type": "string",
      "nullable": true
     },
     "binMaxValue": {
      "type": "string",
      "nullable": true
     },
     "binDescription": {
      "type": "string",
      "nullable": true
     },
     "processorBin": {
      "type": "string",
      "nullable": true
     },
     "issuerBankCode": {
      "type": "string",
      "nullable": true
     },
     "cardType": {
      "type": "string",
      "description": "Values:\n\n- `C` — credit\n- `D` — debit\n- `P` — prepaid",
      "nullable": true,
      "x-everest-enum": true
     },
     "cardBrand": {
      "type": "string",
      "nullable": true,
      "description": "Which scheme the card is issued on."
     },
     "panLength": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "acqFlag": {
      "type": "boolean"
     },
     "rewardType": {
      "type": "string",
      "nullable": true,
      "description": "Which kind of reward was earned."
     },
     "bonusFlag": {
      "type": "boolean"
     },
     "businessFlag": {
      "type": "boolean"
     },
     "preAuthDebitFlag": {
      "type": "boolean"
     },
     "authenticationType": {
      "type": "string",
      "nullable": true
     },
     "loyaltyProgram": {
      "type": "string",
      "nullable": true
     },
     "binLength": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "GetCardByCardNumberRequest": {
    "type": "object",
    "properties": {
     "cardNumber": {
      "type": "string",
      "description": "The card's PAN, in the clear.",
      "nullable": false,
      "minLength": 12,
      "maxLength": 19
     },
     "panSequenceNumber": {
      "type": "string",
      "description": "The PAN sequence number, where one card number carries more than one card.\n\nPassed to the service that resolves the card; no column behind this API holds it.",
      "nullable": true
     }
    },
    "required": [
     "cardNumber"
    ]
   },
   "GetCardByCardNumberResponse": {
    "required": [
     "customerNumber",
     "expiryDate",
     "mainCustomerNumber"
    ],
    "type": "object",
    "properties": {
     "hashCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "A one-way hash of the card number, for matching two records without carrying the number."
     },
     "encryptedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number encrypted under the platform's key, which is how it travels between services."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "bin": {
      "type": "string",
      "nullable": true,
      "description": "The bank identification number — the leading digits of the card number that name the issuer and the product range."
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     },
     "expiryDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "cardSeqNumber": {
      "type": "string",
      "nullable": true,
      "description": "Which chip on the card was used, where a customer holds more than one card on the same number."
     },
     "statusCode": {
      "type": "string",
      "description": "Values:\n\n- `A` — valid\n- `B` — pending\n- `C` — stolen\n- `D` — cancelled by the bank\n- `F` — fraud\n- `G` — temporarily blocked\n- `I` — cancelled\n- `L` — lost\n- `M` — cancelled by the customer\n- `T` — corporate dummy",
      "nullable": true
     },
     "statusReasonCode": {
      "type": "string",
      "nullable": true,
      "description": "Why the status is what it is."
     },
     "cardNumber": {
      "type": "string",
      "nullable": true
     },
     "cardType": {
      "type": "string",
      "description": "Values:\n\n- `C` — credit\n- `D` — debit\n- `P` — prepaid",
      "nullable": true,
      "x-everest-enum": true
     },
     "productNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card product the card is issued on. Defined in the parameter tables; `getCardProductList` returns the ones a tenant may use."
     },
     "cardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference, which identifies one issued card including its renewals. Returned by the create and listing operations alongside the shadow number."
     },
     "maskedPanAlternative": {
      "type": "string",
      "nullable": true,
      "description": "A second masked form of the card number, masked differently for a channel that needs other digits."
     },
     "mainCardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference of the main card. On a supplementary card this is the card it hangs from; on a main card it is the card's own reference."
     },
     "ownerSearchName": {
      "type": "string",
      "nullable": true,
      "description": "The cardholder's name normalised for searching — accents and case removed. It is not the name on the card."
     },
     "mainCustomerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The main customer of a corporate relationship, as a number. The employees and supplementary holders under it carry their own `customerNumber`."
     }
    }
   },
   "GetCardByShadowCardNumberRequest": {
    "type": "object",
    "properties": {
     "channel": {
      "type": "string",
      "description": "Three-digit code identifying the channel on behalf of which the request is made (e.g. `002` for Internet). Mandatory in every request. Used for entitlement checks, limit enforcement and audit logging. Channel codes are managed through configuration parameters and may change over time. Refer to the <a href=\"https://apiportal.dgpays.com/channels\" target=\"_parent\">Channels</a> page for the current list of valid codes.",
      "nullable": false,
      "maxLength": 3
     },
     "shadowCardNumber": {
      "type": "string",
      "description": "The card to read.",
      "nullable": false,
      "maxLength": 19
     }
    },
    "required": [
     "channel",
     "shadowCardNumber"
    ]
   },
   "GetCardByShadowCardNumberResponse": {
    "required": [
     "customerNumber",
     "expiryDate",
     "mainCustomerNumber"
    ],
    "type": "object",
    "properties": {
     "hashCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "A one-way hash of the card number, for matching two records without carrying the number."
     },
     "encryptedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number encrypted under the platform's key, which is how it travels between services."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "bin": {
      "type": "string",
      "nullable": true,
      "description": "The bank identification number — the leading digits of the card number that name the issuer and the product range."
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     },
     "expiryDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "cardSeqNumber": {
      "type": "string",
      "nullable": true,
      "description": "Which chip on the card was used, where a customer holds more than one card on the same number."
     },
     "statusCode": {
      "type": "string",
      "description": "Values:\n\n- `A` — valid\n- `B` — pending\n- `C` — stolen\n- `D` — cancelled by the bank\n- `F` — fraud\n- `G` — temporarily blocked\n- `I` — cancelled\n- `L` — lost\n- `M` — cancelled by the customer\n- `T` — corporate dummy",
      "nullable": true
     },
     "statusReasonCode": {
      "type": "string",
      "nullable": true,
      "description": "Why the status is what it is."
     },
     "cardNumber": {
      "type": "string",
      "nullable": true
     },
     "cardType": {
      "type": "string",
      "description": "Values:\n\n- `C` — credit\n- `D` — debit\n- `P` — prepaid",
      "nullable": true,
      "x-everest-enum": true
     },
     "productNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card product the card is issued on. Defined in the parameter tables; `getCardProductList` returns the ones a tenant may use."
     },
     "cardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference, which identifies one issued card including its renewals. Returned by the create and listing operations alongside the shadow number."
     },
     "maskedPanAlternative": {
      "type": "string",
      "nullable": true,
      "description": "A second masked form of the card number, masked differently for a channel that needs other digits."
     },
     "mainCardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference of the main card. On a supplementary card this is the card it hangs from; on a main card it is the card's own reference."
     },
     "ownerSearchName": {
      "type": "string",
      "nullable": true,
      "description": "The cardholder's name normalised for searching — accents and case removed. It is not the name on the card."
     },
     "mainCustomerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The main customer of a corporate relationship, as a number. The employees and supplementary holders under it carry their own `customerNumber`."
     },
     "maskedPanSmart": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "GetCardInfoByClearPanRequest": {
    "type": "object",
    "properties": {
     "clearPan": {
      "type": "string",
      "description": "The card's PAN, in the clear.\n\nA card number is not stored by these services; the platform keeps a shadow card number instead.",
      "nullable": false
     }
    },
    "required": [
     "clearPan"
    ]
   },
   "GetCardInfoByClearPanResponse": {
    "required": [
     "customerNumber",
     "expiryDate",
     "mainCustomerNumber"
    ],
    "type": "object",
    "properties": {
     "hashCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "A one-way hash of the card number, for matching two records without carrying the number."
     },
     "encryptedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number encrypted under the platform's key, which is how it travels between services."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "bin": {
      "type": "string",
      "nullable": true,
      "description": "The bank identification number — the leading digits of the card number that name the issuer and the product range."
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     },
     "expiryDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "cardSeqNumber": {
      "type": "string",
      "nullable": true,
      "description": "Which chip on the card was used, where a customer holds more than one card on the same number."
     },
     "statusCode": {
      "type": "string",
      "description": "Values:\n\n- `A` — valid\n- `B` — pending\n- `C` — stolen\n- `D` — cancelled by the bank\n- `F` — fraud\n- `G` — temporarily blocked\n- `I` — cancelled\n- `L` — lost\n- `M` — cancelled by the customer\n- `T` — corporate dummy",
      "nullable": true
     },
     "statusReasonCode": {
      "type": "string",
      "nullable": true,
      "description": "Why the status is what it is."
     },
     "clearPan": {
      "type": "string",
      "nullable": true
     },
     "cardType": {
      "type": "string",
      "description": "Values:\n\n- `C` — credit\n- `D` — debit\n- `P` — prepaid",
      "nullable": true,
      "x-everest-enum": true
     },
     "productNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card product the card is issued on. Defined in the parameter tables; `getCardProductList` returns the ones a tenant may use."
     },
     "cardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference, which identifies one issued card including its renewals. Returned by the create and listing operations alongside the shadow number."
     },
     "maskedPanAlternative": {
      "type": "string",
      "nullable": true,
      "description": "A second masked form of the card number, masked differently for a channel that needs other digits."
     },
     "mainCardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference of the main card. On a supplementary card this is the card it hangs from; on a main card it is the card's own reference."
     },
     "ownerSearchName": {
      "type": "string",
      "nullable": true,
      "description": "The cardholder's name normalised for searching — accents and case removed. It is not the name on the card."
     },
     "mainCustomerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The main customer of a corporate relationship, as a number. The employees and supplementary holders under it carry their own `customerNumber`."
     }
    }
   },
   "GetCardStatementCutoffRequest": {
    "required": [
     "insertDate"
    ],
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "Narrows the report to one card. Matched exactly.",
      "nullable": true,
      "maxLength": 19
     },
     "mainCardRefNumber": {
      "type": "string",
      "description": "Narrows the report to one main card reference. Matched exactly.",
      "nullable": true,
      "maxLength": 19
     },
     "customerNumber": {
      "type": "integer",
      "description": "Narrows the report to one customer.",
      "format": "int64",
      "nullable": true
     },
     "insertDate": {
      "type": "string",
      "description": "The statement date to report on. Compared as a date, so any time component is ignored. Nothing validates it; a date with no cut-off statement returns an empty list.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     }
    }
   },
   "GetCardStatementCutoffResponse": {
    "type": "object",
    "properties": {
     "listOfCardStatementCutoff": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CreditCardStatementCutoffItem"
      },
      "nullable": true
     }
    }
   },
   "GetClearPanByShadowRequest": {
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "The card whose PAN is read.",
      "nullable": false,
      "maxLength": 19
     }
    },
    "required": [
     "shadowCardNumber"
    ]
   },
   "GetClearPanByShadowResponse": {
    "type": "object",
    "properties": {
     "clearPan": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "GetCreditCardLogDataListByShadowCardNumberRequest": {
    "required": [
     "startDate",
     "endDate"
    ],
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "`One-of · NotNullOrWhiteSpace` — Shadow card number to filter the log on. Either this or `customerNumber` must be supplied; when both are absent the failure is reported against both fields. An absent or empty value switches this filter off.",
      "nullable": true,
      "maxLength": 19
     },
     "logCode": {
      "type": "string",
      "description": "Card log code to filter on. An absent or empty value switches the filter off and returns every log code.",
      "nullable": true,
      "maxLength": 10
     },
     "customerNumber": {
      "type": "integer",
      "description": "`One-of · NotNull` — Customer number to filter the log on. Either this or `shadowCardNumber` must be supplied. Zero counts as absent, both for the check and for the query, where it switches this filter off.",
      "format": "int64",
      "minimum": 1
     },
     "startDate": {
      "type": "string",
      "description": "`CanNotBeNullOrLessThanSqlMinValue` — Start of the window matched against each log row's insert date. The window is inclusive at both ends and is compared as a full timestamp, not as a date.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     },
     "endDate": {
      "type": "string",
      "description": "`CanNotBeNullOrLessThanSqlMinValue` — End of the window matched against each log row's insert date. The window is inclusive at both ends and is compared as a full timestamp, not as a date.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     }
    }
   },
   "GetCreditCardLogDataListByShadowCardNumberResponse": {
    "type": "object",
    "properties": {
     "cardLogDataList": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CreditCardLogData"
      },
      "nullable": true
     }
    }
   },
   "GetCreditTransactionListRequest": {
    "required": [
     "shadowCardNumber",
     "transactiondatebegin",
     "transactiondateend"
    ],
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "The card whose transactions are listed. The document leaves this optional; the facade does not, and refuses a request without it.",
      "nullable": false,
      "maxLength": 19
     },
     "embossName": {
      "type": "string",
      "description": "Narrows the list to transactions on a card carrying this emboss name.\n\nDeclared at 26 on the card master and 30 on the customer asset, so no single width is published. `nameOnCard`, which the services truncate to 26 before writing, is the field to send a name on.",
      "nullable": true
     },
     "maxAmount": {
      "type": "number",
      "description": "Upper bound on the transaction amount.",
      "format": "double",
      "nullable": true
     },
     "minAmount": {
      "type": "number",
      "description": "Lower bound on the transaction amount.",
      "format": "double",
      "nullable": true
     },
     "sourceNetwork": {
      "type": "string",
      "description": "Narrows the list to one acquiring network.",
      "nullable": true,
      "maxLength": 5
     },
     "transactiondatebegin": {
      "type": "string",
      "description": "Start of the transaction date range.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     },
     "transactiondateend": {
      "type": "string",
      "description": "End of the transaction date range.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     },
     "trnCodeMatrixId": {
      "type": "string",
      "description": "Narrows the list to one transaction code matrix entry.",
      "nullable": true,
      "maxLength": 20
     },
     "trnCode": {
      "type": "string",
      "description": "Narrows the list to one transaction code.",
      "nullable": true,
      "maxLength": 2
     }
    }
   },
   "GetCreditTransactionListResponse": {
    "type": "object",
    "properties": {
     "creditTransaction": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CreditTransactionList"
      },
      "nullable": true
     }
    }
   },
   "GetCustomerDetailRequest": {
    "required": [
     "channel",
     "customerNumber",
     "getAddressDetail",
     "getEmailDetail",
     "getGsmDetail",
     "getPhoneDetail"
    ],
    "type": "object",
    "properties": {
     "channel": {
      "type": "string",
      "description": "Three-digit code identifying the channel on behalf of which the request is made (e.g. `002` for Internet). Mandatory in every request. Used for entitlement checks, limit enforcement and audit logging. Channel codes are managed through configuration parameters and may change over time. Refer to the <a href=\"https://apiportal.dgpays.com/channels\" target=\"_parent\">Channels</a> page for the current list of valid codes.",
      "nullable": false,
      "maxLength": 3
     },
     "customerNumber": {
      "type": "integer",
      "description": "Customer to read. It is not checked for zero or a negative value.",
      "format": "int64"
     },
     "getEmailDetail": {
      "type": "boolean",
      "description": "False leaves the e-mail list out of the response altogether."
     },
     "getAddressDetail": {
      "type": "boolean",
      "description": "False leaves the address list out of the response altogether."
     },
     "getPhoneDetail": {
      "type": "boolean",
      "description": "False leaves the phone list out of the response altogether."
     },
     "getGsmDetail": {
      "type": "boolean",
      "description": "False leaves the mobile number list out of the response altogether."
     },
     "commCompanyCode": {
      "type": "string",
      "description": "Restricts the address, e-mail, mobile and phone lists to records carrying this company code. When absent the code mapped to `channel` is used, falling back to the platform default.",
      "nullable": true,
      "maxLength": 2
     }
    }
   },
   "GetCustomerDetailResponse": {
    "type": "object",
    "properties": {
     "customer": {
      "allOf": [
       {
        "$ref": "#/components/schemas/GetCustomerInfo"
       }
      ],
      "nullable": true
     }
    }
   },
   "GetCustomerInfo": {
    "type": "object",
    "properties": {
     "masterInformation": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CustomerMaster"
       }
      ],
      "nullable": true
     },
     "firmInformation": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CustomerFirmInfo"
       }
      ],
      "nullable": true
     },
     "personalInformation": {
      "allOf": [
       {
        "$ref": "#/components/schemas/CustomerPersonalInfo"
       }
      ],
      "nullable": true
     },
     "listOfAddress": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CustomerAddress"
      },
      "nullable": true
     },
     "listOfPhone": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CustomerPhone"
      },
      "nullable": true
     },
     "listOfEmail": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CustomerEMail"
      },
      "nullable": true
     },
     "listOfGSM": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CustomerGsm"
      },
      "nullable": true
     }
    }
   },
   "GetDbttransactionByCardrefCustomernumParam": {
    "type": "object",
    "properties": {
     "AuthStatus": {
      "type": "string",
      "description": "Only `0` returns rows. The query compares this value against a fixed constant rather than against a column, so any other value returns an empty list while leaving it out returns everything.",
      "nullable": true
     },
     "CardRefNumber": {
      "type": "string",
      "description": "Narrows the list to one card reference. Matched exactly. An empty string is treated as not sent.",
      "nullable": true
     },
     "CustomerNumber": {
      "type": "integer",
      "description": "Narrows the list to one customer.",
      "format": "int64",
      "nullable": true
     },
     "EmbossName": {
      "type": "string",
      "description": "Narrows the list to cards carrying this emboss name. Matched exactly, not as a prefix or a pattern.",
      "nullable": true
     },
     "MaxAmount": {
      "type": "number",
      "description": "Upper bound on the billing amount.",
      "format": "double",
      "nullable": true
     },
     "MinAmount": {
      "type": "number",
      "description": "Lower bound on the billing amount.",
      "format": "double",
      "nullable": true
     },
     "ShadowCardNumber": {
      "type": "string",
      "description": "Narrows the list to one card. Matched exactly. An empty string is treated as not sent.",
      "nullable": true
     },
     "SourceNetwork": {
      "type": "string",
      "description": "Narrows the list to one acquiring network.",
      "nullable": true
     },
     "Transactiondatebegin": {
      "type": "string",
      "description": "Start of the transaction date range. Inclusive.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "Transactiondateend": {
      "type": "string",
      "description": "End of the transaction date range. Inclusive.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "TrnCodeMatrixId": {
      "type": "string",
      "description": "Narrows the list to one transaction code matrix entry. An empty string is treated as not sent.",
      "nullable": true
     }
    }
   },
   "GetDbttransactionByCardrefCustomernumRequest": {
    "type": "object",
    "properties": {
     "GetDbttransactionByCardrefCustomernumParam": {
      "allOf": [
       {
        "$ref": "#/components/schemas/GetDbttransactionByCardrefCustomernumParam"
       }
      ],
      "description": "The search criteria. The operation dereferences this without a null check, so it must be sent.",
      "nullable": false
     }
    },
    "required": [
     "GetDbttransactionByCardrefCustomernumParam"
    ]
   },
   "GetDbttransactionByCardrefCustomernumResponse": {
    "type": "object",
    "properties": {
     "GetDbttransactionByCardrefCustomernumResult": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GetDbttransactionByCardrefCustomernumResult"
      },
      "nullable": true
     }
    }
   },
   "GetDbttransactionByCardrefCustomernumResult": {
    "required": [
     "IsChipFlag"
    ],
    "type": "object",
    "properties": {
     "AcqRefNumber": {
      "type": "string",
      "nullable": true
     },
     "AuthorizationMatchStatus": {
      "type": "string",
      "nullable": true,
      "description": "Whether the clearing record was matched to an authorisation."
     },
     "AuthorizationNumber": {
      "type": "string",
      "nullable": true,
      "description": "The authorisation code the issuer returned when the transaction was approved. Six characters, from the scheme."
     },
     "BillingAmount": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "BillingCurrency": {
      "type": "string",
      "nullable": true
     },
     "BkmUniqueMerchantId": {
      "type": "string",
      "nullable": true,
      "description": "The merchant's identifier at BKM, the domestic switch."
     },
     "CampaignCodeAcq": {
      "type": "string",
      "nullable": true
     },
     "CampaignCodeIss": {
      "type": "string",
      "nullable": true
     },
     "CardSeqNumber": {
      "type": "integer",
      "format": "int32",
      "nullable": true,
      "description": "Which chip on the card was used, where a customer holds more than one card on the same number."
     },
     "ChannelTypeDescription": {
      "type": "string",
      "nullable": true
     },
     "ClearingChannel": {
      "type": "string",
      "nullable": true
     },
     "ClearingDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "ClearingNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true
     },
     "CurrencyCodeDescription": {
      "type": "string",
      "nullable": true
     },
     "CustomerNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "DisplayAtChannels": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "EarnedRewardBank": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "EarnedRewardCampaignAcq": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "EarnedRewardCampaignIss": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "EarnedRewardMerchant": {
      "type": "number",
      "format": "double",
      "nullable": true
     },
     "EmbossName": {
      "type": "string",
      "nullable": true,
      "description": "The name embossed on the card."
     },
     "EodDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "InvoiceNumber": {
      "type": "string",
      "nullable": true
     },
     "IsChipFlag": {
      "type": "boolean",
      "description": "Whether the card's chip was used rather than the stripe."
     },
     "LocalAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The amount converted into the bank's own currency."
     },
     "LocalCurrency": {
      "type": "string",
      "nullable": true
     },
     "MainCardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference of the main card. On a supplementary card this is the card it hangs from; on a main card it is the card's own reference."
     },
     "MainCustomerNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The main customer of a corporate relationship, as a number. The employees and supplementary holders under it carry their own `customerNumber`."
     },
     "MaskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key."
     },
     "MatchStatusDescription": {
      "type": "string",
      "nullable": true,
      "description": "That matching state in words."
     },
     "MccDescription": {
      "type": "string",
      "nullable": true
     },
     "MerchantAmexId": {
      "type": "string",
      "nullable": true
     },
     "MerchantCity": {
      "type": "string",
      "nullable": true
     },
     "MerchantCountryCode": {
      "type": "string",
      "nullable": true,
      "description": "Where the merchant is, as a country code."
     },
     "MerchantName": {
      "type": "string",
      "nullable": true,
      "description": "The merchant's name as it reached the platform from the scheme."
     },
     "NetworkDescription": {
      "type": "string",
      "nullable": true,
      "description": "The network's name, for display."
     },
     "OfflineFlag": {
      "type": "boolean",
      "nullable": true,
      "description": "Whether the terminal approved the transaction without asking the issuer."
     },
     "PanEntryMode": {
      "type": "string",
      "nullable": true,
      "description": "How the card was read at the terminal — chip, stripe, contactless, keyed, or stored on file. The scheme's own code."
     },
     "PinUsage": {
      "type": "string",
      "nullable": true,
      "description": "Whether the transaction was authorised with a PIN."
     },
     "Product": {
      "type": "string",
      "nullable": true
     },
     "RefUtid": {
      "type": "string",
      "nullable": true,
      "description": "The transaction this one refers to — the original, for a reversal or a correction."
     },
     "RequestDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "RewardTypeDescription": {
      "type": "string",
      "nullable": true
     },
     "Rrn": {
      "type": "string",
      "nullable": true,
      "description": "The retrieval reference number — the card scheme's handle for the transaction, and what a bank quotes when asking the scheme about it."
     },
     "SettlementAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The amount as it settles between the scheme and the bank."
     },
     "SettlementCurrency": {
      "type": "string",
      "nullable": true
     },
     "TerminalNumber": {
      "type": "string",
      "nullable": true,
      "description": "The terminal the transaction was made at."
     },
     "TerminalType": {
      "type": "string",
      "nullable": true,
      "description": "What kind of terminal that was — POS, ATM, or another."
     },
     "TrnAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The amount of the transaction, in its own currency."
     },
     "TrnCodeMatrixDesc": {
      "type": "string",
      "nullable": true
     },
     "TrnCurrency": {
      "type": "string",
      "nullable": true
     },
     "TrnDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "TrnDescription": {
      "type": "string",
      "nullable": true,
      "description": "The transaction in words, as it reached the platform."
     },
     "TrnOrigin": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "TrnStatusDescription": {
      "type": "string",
      "nullable": true,
      "description": "The transaction's state in words."
     },
     "Utid": {
      "type": "string",
      "nullable": true,
      "description": "The unique transaction identifier the platform gives a transaction, and the handle every later operation on it takes. Returned by the transaction listings."
     }
    }
   },
   "GetDebitCardForRewardByBankRequest": {
    "required": [
     "customerNumber"
    ],
    "type": "object",
    "properties": {
     "channel": {
      "type": "string",
      "description": "Three-digit code identifying the channel on behalf of which the request is made (e.g. `002` for Internet). Mandatory in every request. Used for entitlement checks, limit enforcement and audit logging. Channel codes are managed through configuration parameters and may change over time. Refer to the <a href=\"https://apiportal.dgpays.com/channels\" target=\"_parent\">Channels</a> page for the current list of valid codes.",
      "nullable": true,
      "maxLength": 3
     },
     "customerNumber": {
      "type": "integer",
      "description": "Customer whose reward card is selected.",
      "format": "int64"
     }
    }
   },
   "GetDebitCardForRewardByBankResponse": {
    "type": "object",
    "properties": {
     "accountNumber": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The account at the bank's core banking system that the card draws on. It must already exist, belong to the card's customer, and be neither shared nor a foreign-currency account."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     }
    }
   },
   "GetDebitCardLogDataListByShadowCardNumberRequest": {
    "required": [
     "shadowCardNumber",
     "startDate",
     "endDate"
    ],
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "Shadow card number to filter the log on. Unlike the credit equivalent, it is always required here; `customerNumber` does not stand in for it.",
      "nullable": false,
      "maxLength": 19
     },
     "logCode": {
      "type": "string",
      "description": "Card log code to filter on. An absent or empty value switches the filter off and returns every log code.",
      "nullable": true,
      "maxLength": 10
     },
     "customerNumber": {
      "type": "integer",
      "description": "Further narrows the log to one customer. It is not checked; zero switches this filter off.",
      "format": "int64"
     },
     "startDate": {
      "type": "string",
      "description": "`CanNotBeNullOrLessThanSqlMinValue` — Start of the window matched against each log row's insert date. The window is inclusive at both ends and is compared as a full timestamp, not as a date.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     },
     "endDate": {
      "type": "string",
      "description": "`CanNotBeNullOrLessThanSqlMinValue` — End of the window matched against each log row's insert date. The window is inclusive at both ends and is compared as a full timestamp, not as a date.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     }
    }
   },
   "GetDebitCardLogDataListByShadowCardNumberResponse": {
    "type": "object",
    "properties": {
     "cardLogDataList": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CardLogData"
      },
      "nullable": true
     }
    }
   },
   "GetDebitCardRestrictionRequest": {
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "The card whose restrictions are read.",
      "nullable": false,
      "maxLength": 19
     }
    },
    "required": [
     "shadowCardNumber"
    ]
   },
   "GetDebitCardRestrictionResponse": {
    "type": "object",
    "properties": {
     "cardRestrictionList": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CardRestriction"
      },
      "nullable": true
     }
    }
   },
   "GetDelinquencyInterestAmount": {
    "required": [
     "rate",
     "delayAmountWithTax"
    ],
    "type": "object",
    "properties": {
     "currencyCode": {
      "type": "string",
      "nullable": true
     },
     "mainCardRefNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card reference of the main card. On a supplementary card this is the card it hangs from; on a main card it is the card's own reference."
     },
     "rate": {
      "type": "number",
      "format": "double"
     },
     "delayAmountWithTax": {
      "type": "number",
      "format": "double"
     },
     "delayType": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "GetDelinquencyInterestAmountRequest": {
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "Shadow card number of the card. No check is applied to it; the value is passed straight to the query, where it is matched against valid card master rows.",
      "nullable": true,
      "maxLength": 19
     }
    },
    "required": []
   },
   "GetEmbossReasonSubDefByValidFlagResponse": {
    "type": "object",
    "properties": {
     "embossReasonSubDefList": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EmbossReasonSubDef"
      },
      "nullable": true
     }
    }
   },
   "GetEncryptDataBlockRequest": {
    "type": "object",
    "properties": {
     "dataBlock": {
      "type": "string",
      "description": "Clear data block to encrypt. Rejected when null, empty or whitespace. The facade applies no length, format or character check and forwards the value as given.\n\nA cipher block rather than stored data; no column behind it.",
      "nullable": false
     }
    },
    "required": [
     "dataBlock"
    ]
   },
   "GetEncryptDataBlockResponse": {
    "type": "object",
    "properties": {
     "encryptedDataBlock": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "GetMccGroupAllResponse": {
    "type": "object",
    "properties": {
     "listOfMccGroup": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MccGroup"
      },
      "nullable": true
     }
    }
   },
   "GetNetworkTypeDefByValidFlagResponse": {
    "type": "object",
    "properties": {
     "NetworkTypeDefList": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/NetworkTypeDef"
      },
      "nullable": true
     }
    }
   },
   "GetPaymentAndCashadvanceInformationByCriterias": {
    "type": "object",
    "properties": {
     "channelType": {
      "type": "string",
      "nullable": true,
      "description": "Which channel the row applies to."
     },
     "channelTypeDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `channelType`, carried alongside it for display. It is not a key: match on the code."
     },
     "maskedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number with its middle digits masked, as the platform stores it. It is a display form, not a key: operations take the shadow number."
     },
     "paymentDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "productTransactionRefNo": {
      "type": "string",
      "nullable": true
     },
     "provisionNo": {
      "type": "string",
      "nullable": true
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     },
     "statusCode": {
      "type": "string",
      "description": "Values:\n\n- `A` — valid\n- `B` — pending\n- `C` — stolen\n- `D` — cancelled by the bank\n- `F` — fraud\n- `G` — temporarily blocked\n- `I` — cancelled\n- `L` — lost\n- `M` — cancelled by the customer\n- `T` — corporate dummy",
      "nullable": true
     },
     "statusCodeDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `statusCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "trnAmount": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "description": "The amount of the transaction, in its own currency."
     },
     "trnCode": {
      "type": "string",
      "nullable": true,
      "description": "What kind of transaction this is, as the platform's own code."
     },
     "trnCodeMatrixId": {
      "type": "string",
      "nullable": true,
      "description": "Which row of the transaction-code matrix this transaction was classified by."
     },
     "trnCurrencyCode": {
      "type": "string",
      "nullable": true,
      "description": "The currency the transaction was made in."
     },
     "trnDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `trnCode`, carried alongside it for display. It is not a key: match on the code."
     }
    }
   },
   "GetPaymentAndCashadvanceInformationByCriteriasRequest": {
    "type": "object",
    "properties": {
     "channelType": {
      "type": "string",
      "description": "Narrows the list to one channel.",
      "nullable": true,
      "maxLength": 5
     },
     "customerNumber": {
      "type": "integer",
      "description": "Narrows the list to one customer.",
      "format": "int64",
      "nullable": true
     },
     "beginDate": {
      "type": "string",
      "description": "Start of the payment date range.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "endDate": {
      "type": "string",
      "description": "End of the payment date range.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "shadowCardNumber": {
      "type": "string",
      "description": "Narrows the list to one card.",
      "nullable": true,
      "maxLength": 19
     },
     "trnCodeMatrix": {
      "type": "string",
      "description": "Applied by the facade after the service has answered, not by the service. Only `06`, `08` and `CASHADVANCE` select anything; leaving it out returns every row. Any other value returns an empty list.\n\nThe matrix itself rather than the identifier of a row in it; no column behind it.",
      "nullable": true
     },
     "branchNo": {
      "type": "integer",
      "description": "Narrows the list to one branch.",
      "format": "int64",
      "nullable": true
     }
    }
   },
   "GetPaymentAndCashadvanceInformationByCriteriasResponse": {
    "type": "object",
    "properties": {
     "getPaymentAndCashadvanceInformationByCriterias": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GetPaymentAndCashadvanceInformationByCriterias"
      },
      "nullable": true
     }
    }
   },
   "GetProductByShadowCardNumberRequest": {
    "type": "object",
    "properties": {
     "shadowCardNumber": {
      "type": "string",
      "description": "The card whose product is returned. It is not format-checked; an absent or unknown value is reported as a missing asset.",
      "nullable": false,
      "maxLength": 19
     }
    },
    "required": [
     "shadowCardNumber"
    ]
   },
   "GetProductByShadowCardNumberResponse": {
    "required": [
     "cardType",
     "digitalAbility"
    ],
    "type": "object",
    "properties": {
     "cardType": {
      "enum": [
       0,
       1,
       2,
       3
      ],
      "type": "integer",
      "format": "int32",
      "x-enum-names": [
       "None",
       "Credit",
       "Debit",
       "Prepaid"
      ]
     },
     "brand": {
      "type": "string",
      "nullable": true,
      "description": "Which scheme the card is issued on."
     },
     "productNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card product the card is issued on. Defined in the parameter tables; `getCardProductList` returns the ones a tenant may use."
     },
     "productName": {
      "type": "string",
      "nullable": true,
      "description": "The card product's full name."
     },
     "productShortname": {
      "type": "string",
      "nullable": true
     },
     "digitalAbility": {
      "type": "boolean",
      "description": "Whether the product can be issued as a digital card."
     }
    }
   },
   "GetResponseCodeDefByValidFlagResponse": {
    "type": "object",
    "properties": {
     "ResponseCodeDefList": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ResponseCodeDef"
      },
      "nullable": true
     }
    }
   },
   "GetResponseReasonCodeDefByValidFlagResponse": {
    "type": "object",
    "properties": {
     "ResponseReasonCodeDefList": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ResponseReasonCodeDef"
      },
      "nullable": true
     }
    }
   },
   "GetSecureCardByPanRequest": {
    "type": "object",
    "properties": {
     "channel": {
      "type": "string",
      "description": "Three-digit code identifying the channel on behalf of which the request is made (e.g. `002` for Internet). Mandatory in every request. Used for entitlement checks, limit enforcement and audit logging. Channel codes are managed through configuration parameters and may change over time. Refer to the <a href=\"https://apiportal.dgpays.com/channels\" target=\"_parent\">Channels</a> page for the current list of valid codes.",
      "nullable": false,
      "maxLength": 3
     },
     "pan": {
      "type": "string",
      "description": "The card's PAN, in the clear.\n\nA card number is not stored by these services; the platform keeps a shadow card number instead.",
      "nullable": false
     }
    },
    "required": [
     "channel",
     "pan"
    ]
   },
   "GetSecureCardByPanResponse": {
    "type": "object",
    "properties": {
     "encryptedCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The card number encrypted under the platform's key, which is how it travels between services."
     },
     "hashCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "A one-way hash of the card number, for matching two records without carrying the number."
     },
     "firstEight": {
      "type": "string",
      "nullable": true
     },
     "firstSix": {
      "type": "string",
      "nullable": true
     },
     "lastFour": {
      "type": "string",
      "nullable": true
     },
     "recordId": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The identifier of the row the operation created or acted on, returned so a later call can name it."
     }
    }
   },
   "GetTrnCodeDefByValidFlagResponse": {
    "type": "object",
    "properties": {
     "TrnCodeDefList": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TrnCodeDef"
      },
      "nullable": true
     }
    }
   },
   "GetTrnCodeMatrixByValidFlagResponse": {
    "type": "object",
    "properties": {
     "TrnCodeMatrixList": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TrnCodeMatrix"
      },
      "nullable": true
     }
    }
   },
   "GetTrnStatusAllResponse": {
    "type": "object",
    "properties": {
     "listOfTrnStatus": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TrnStatus"
      },
      "nullable": true
     }
    }
   },
   "HealthCheckResponse": {
    "required": [
     "date"
    ],
    "type": "object",
    "properties": {
     "result": {
      "type": "string",
      "nullable": true,
      "description": "The outcome, as the downstream system words it."
     },
     "date": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "A date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     }
    }
   },
   "HomePhone": {
    "type": "object",
    "properties": {
     "cc": {
      "type": "string",
      "nullable": true,
      "description": "The copy recipients of the message."
     },
     "subscriber": {
      "type": "string",
      "nullable": true,
      "description": "The subscriber the record belongs to."
     }
    }
   },
   "IsSetCardPinViaSMSControlRequest": {
    "type": "object",
    "properties": {
     "mobilePhoneNumber": {
      "type": "string",
      "description": "`Format` — The cardholder's mobile number. Ten digits are accepted: the facade prefixes `90` before it searches, so `5xxxxxxxxx` and `905xxxxxxxxx` find the same cardholder.\n\nHanded to the SMS service rather than stored here. The platform prefixes `90` when it is given ten digits, which is the shape to send; it is not a maximum.",
      "nullable": false
     },
     "cardNumberLastFourDigits": {
      "type": "string",
      "description": "`Length 4` — The last four digits of the card number.\n\nThe last four digits of a card number, which is not itself stored by these services.",
      "nullable": false
     }
    },
    "required": [
     "mobilePhoneNumber",
     "cardNumberLastFourDigits"
    ]
   },
   "IsSetCardPinViaSMSControlResponse": {
    "required": [
     "isHaveAnyCard",
     "customerNumber"
    ],
    "type": "object",
    "properties": {
     "isHaveAnyCard": {
      "type": "boolean"
     },
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "shadowCardNumber": {
      "type": "string",
      "nullable": true,
      "description": "The platform's own handle for a card, and the identifier most operations take. It is returned by every operation that creates a card and by the card listings; a caller does not compose one."
     }
    }
   },
   "ListGetDelinquencyInterestAmountResponse": {
    "type": "object",
    "properties": {
     "listOfDelinquency": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GetDelinquencyInterestAmount"
      },
      "nullable": true
     }
    }
   },
   "MccGroup": {
    "required": [
     "validFlag",
     "useInApplicationFlag"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "institutionCode": {
      "type": "string",
      "nullable": true
     },
     "mccGroupCode": {
      "type": "string",
      "nullable": true,
      "description": "Which group of merchant categories the merchant falls in."
     },
     "mccGroupDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `mccGroupCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "useInApplicationFlag": {
      "type": "boolean"
     },
     "qualificationIndicatorCode": {
      "type": "string",
      "nullable": true
     },
     "kk100hOrderNumber": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     }
    }
   },
   "MerchantData": {
    "type": "object",
    "properties": {
     "acquirerMerchantID": {
      "type": "string",
      "nullable": true
     },
     "merchantRiskIndicator": {
      "allOf": [
       {
        "$ref": "#/components/schemas/MerchantRiskIndicator"
       }
      ],
      "nullable": true
     },
     "merchantCountryCode": {
      "type": "string",
      "nullable": true,
      "description": "Where the merchant is, as a country code."
     },
     "merchantName": {
      "type": "string",
      "nullable": true,
      "description": "The merchant's name as it reached the platform from the scheme."
     },
     "mcc": {
      "type": "string",
      "nullable": true,
      "description": "The merchant category code — the four-digit code the scheme classifies the merchant's trade with."
     }
    }
   },
   "MerchantRiskIndicator": {
    "type": "object",
    "properties": {
     "shipIndicator": {
      "type": "string",
      "nullable": true
     },
     "deliveryTimeframe": {
      "type": "string",
      "nullable": true
     },
     "deliveryEmailAddress": {
      "type": "string",
      "nullable": true
     },
     "reorderItemsInd": {
      "type": "string",
      "nullable": true
     },
     "preOrderPurchaseInd": {
      "type": "string",
      "nullable": true
     },
     "preOrderDate": {
      "type": "string",
      "nullable": true
     },
     "giftCardAmount": {
      "type": "string",
      "nullable": true
     },
     "giftCardCurr": {
      "type": "string",
      "nullable": true
     },
     "giftCardCount": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "MobileNo": {
    "type": "object",
    "properties": {
     "cc": {
      "type": "string",
      "nullable": true,
      "description": "The copy recipients of the message."
     },
     "subscriber": {
      "type": "string",
      "nullable": true,
      "description": "The subscriber the record belongs to."
     }
    }
   },
   "MobilePhone": {
    "type": "object",
    "properties": {
     "cc": {
      "type": "string",
      "nullable": true,
      "description": "The copy recipients of the message."
     },
     "subscriber": {
      "type": "string",
      "nullable": true,
      "description": "The subscriber the record belongs to."
     }
    }
   },
   "NetworkTypeDef": {
    "required": [
     "insertDate",
     "validFlag"
    ],
    "type": "object",
    "properties": {
     "insertDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was created.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "insertUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who created the row, as the platform recorded it."
     },
     "insertTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session the row was created under."
     },
     "updateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was last changed.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "updateUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who last changed the row."
     },
     "updateTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session that last changed it."
     },
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "networkType": {
      "type": "string",
      "description": "Values:\n\n- `O` — on-us\n- `D` — domestic, through BKM\n- `M` — Mastercard\n- `V` — Visa",
      "nullable": true
     },
     "networkTypeDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `networkType`, carried alongside it for display. It is not a key: match on the code."
     }
    }
   },
   "ResponseCodeDef": {
    "required": [
     "insertDate",
     "validFlag",
     "successFlag"
    ],
    "type": "object",
    "properties": {
     "insertDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was created.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "insertUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who created the row, as the platform recorded it."
     },
     "insertTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session the row was created under."
     },
     "updateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was last changed.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "updateUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who last changed the row."
     },
     "updateTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session that last changed it."
     },
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "transactionDomain": {
      "type": "string",
      "nullable": true
     },
     "responseCode": {
      "type": "string",
      "nullable": true,
      "description": "The downstream system's own result code, passed through. `00` and `0` are success; anything else is its refusal, and `responseReasonCode` or the description says which."
     },
     "responseCodeDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `responseCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "successFlag": {
      "type": "boolean"
     }
    }
   },
   "ResponseReasonCodeDef": {
    "required": [
     "insertDate",
     "validFlag"
    ],
    "type": "object",
    "properties": {
     "insertDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was created.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "insertUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who created the row, as the platform recorded it."
     },
     "insertTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session the row was created under."
     },
     "updateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was last changed.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "updateUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who last changed the row."
     },
     "updateTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session that last changed it."
     },
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "responseReasonCode": {
      "type": "string",
      "nullable": true,
      "description": "Why the downstream system answered as it did, where it narrows the response code."
     },
     "responseReasonDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `responseReasonCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "descriptionLocal": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "Result": {
    "type": "object",
    "properties": {
     "resultCode": {
      "type": "string",
      "nullable": true
     },
     "resultMsg": {
      "type": "string",
      "nullable": true
     },
     "resultDetail": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "SetStatementDocumentIdRequest": {
    "type": "object",
    "properties": {
     "listOfStatementDocument": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/StatementDocumentItem"
      },
      "description": "`ListHasNoItem` — The statements to attach document ids to. Must be sent and must hold at least one entry.",
      "nullable": false
     }
    },
    "required": [
     "listOfStatementDocument"
    ]
   },
   "SetStatementDocumentOnlyResponse": {
    "required": [
     "totalRowCount",
     "insertedRowCount",
     "updatedRowCount",
     "noActionRowCount"
    ],
    "type": "object",
    "properties": {
     "totalRowCount": {
      "type": "integer",
      "format": "int32"
     },
     "insertedRowCount": {
      "type": "integer",
      "format": "int32"
     },
     "updatedRowCount": {
      "type": "integer",
      "format": "int32"
     },
     "noActionRowCount": {
      "type": "integer",
      "format": "int32"
     }
    }
   },
   "StatementDocumentItem": {
    "required": [
     "maskedCardNumber",
     "customerNumber",
     "statementCurrencyCode",
     "statementDate",
     "documentId"
    ],
    "type": "object",
    "properties": {
     "maskedCardNumber": {
      "type": "string",
      "description": "The card the statement belongs to. The document leaves this optional, but the lookup matches it exactly, so an entry without it matches no statement. What each operation then does with that entry is on its own 200.",
      "nullable": false,
      "maxLength": 19
     },
     "customerNumber": {
      "type": "integer",
      "description": "The customer the card belongs to. Matched exactly alongside the masked card number.",
      "format": "int64"
     },
     "statementCurrencyCode": {
      "type": "string",
      "description": "The statement's currency. The document leaves this optional, but the lookup matches it exactly, so an entry without it matches no statement. What each operation then does with that entry is on its own 200.",
      "nullable": false,
      "maxLength": 3
     },
     "statementDate": {
      "type": "string",
      "description": "The statement date. Compared as a date, so any time component is ignored. Matched against both the live and the historical statement headers.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     },
     "documentId": {
      "type": "integer",
      "description": "The document to attach. Nothing checks that it names a document that exists.",
      "format": "int64"
     }
    }
   },
   "ThreeDSRequestorAuthenticationInfo": {
    "type": "object",
    "properties": {
     "threeDSReqAuthMethod": {
      "type": "string",
      "nullable": true
     },
     "threeDSReqAuthTimestamp": {
      "type": "string",
      "nullable": true
     },
     "threeDSReqAuthData": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "ThreeDSRequestorPriorAuthenticationInfo": {
    "type": "object",
    "properties": {
     "threeDSReqPriorAuthMethod": {
      "type": "string",
      "nullable": true
     },
     "threeDSReqPriorAuthTimestamp": {
      "type": "string",
      "nullable": true
     },
     "threeDSReqPriorAuthData": {
      "type": "string",
      "nullable": true
     },
     "threeDSReqPriorRef": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "TransactionData": {
    "type": "object",
    "properties": {
     "messageCategory": {
      "type": "string",
      "nullable": true
     },
     "threeDSRequestorAuthenticationInfo": {
      "allOf": [
       {
        "$ref": "#/components/schemas/ThreeDSRequestorAuthenticationInfo"
       }
      ],
      "nullable": true
     },
     "threeDSRequestorPriorAuthenticationInfo": {
      "allOf": [
       {
        "$ref": "#/components/schemas/ThreeDSRequestorPriorAuthenticationInfo"
       }
      ],
      "nullable": true
     },
     "threeDSRequestorAuthenticationInd": {
      "type": "string",
      "nullable": true
     },
     "threeDSRequestorChallengeInd": {
      "type": "string",
      "nullable": true
     },
     "purchaseAmount": {
      "type": "string",
      "nullable": true
     },
     "purchaseCurrency": {
      "type": "string",
      "nullable": true
     },
     "purchaseExponent": {
      "type": "string",
      "nullable": true
     },
     "purchaseInstallData": {
      "type": "string",
      "nullable": true
     },
     "purchaseDate": {
      "type": "string",
      "nullable": true
     },
     "transType": {
      "type": "string",
      "nullable": true
     },
     "recurringExpiry": {
      "type": "string",
      "nullable": true
     }
    }
   },
   "TrnCodeDef": {
    "required": [
     "validFlag",
     "insertDate"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "insertDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was created.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "insertUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who created the row, as the platform recorded it."
     },
     "insertTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session the row was created under."
     },
     "updateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was last changed.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "updateUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who last changed the row."
     },
     "updateTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session that last changed it."
     },
     "trnCode": {
      "type": "string",
      "nullable": true,
      "description": "What kind of transaction this is, as the platform's own code."
     },
     "trnCodeDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `trnCode`, carried alongside it for display. It is not a key: match on the code."
     }
    }
   },
   "TrnCodeMatrix": {
    "required": [
     "insertDate",
     "validFlag",
     "financialTrnFlag",
     "adjustmentTrnFlag",
     "reversalFlag",
     "refundFlag",
     "voidFlag",
     "adviceFlag",
     "offlineFlag",
     "recurringFlag",
     "autoBsmvFlag",
     "autoKkdfFlag",
     "cutOffCardPostingFlag",
     "acqRiskyTrnFlag",
     "cashFeeChargeFlag",
     "prepaidFlag",
     "discountFlag",
     "inflationFlag",
     "deferringFlag",
     "taxIncludeFlag"
    ],
    "type": "object",
    "properties": {
     "insertDate": {
      "type": "string",
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was created.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "insertUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who created the row, as the platform recorded it."
     },
     "insertTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session the row was created under."
     },
     "updateDate": {
      "type": "string",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z",
      "description": "When the row was last changed.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`."
     },
     "updateUserId": {
      "type": "string",
      "nullable": true,
      "description": "Who last changed the row."
     },
     "updateTokenId": {
      "type": "string",
      "nullable": true,
      "description": "The session that last changed it."
     },
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "trnCodeMatrixId": {
      "type": "string",
      "nullable": true,
      "description": "Which row of the transaction-code matrix this transaction was classified by."
     },
     "trnCode": {
      "type": "string",
      "nullable": true,
      "description": "What kind of transaction this is, as the platform's own code."
     },
     "trnCodeDetail": {
      "type": "string",
      "nullable": true
     },
     "trnCodeSpecial": {
      "type": "string",
      "nullable": true
     },
     "trnInstallmentType": {
      "type": "string",
      "nullable": true
     },
     "trnDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `trnCode`, carried alongside it for display. It is not a key: match on the code."
     },
     "onlineMessageType": {
      "type": "string",
      "nullable": true
     },
     "trnEffect": {
      "type": "string",
      "nullable": true,
      "description": "Whether the transaction adds to the balance or takes from it."
     },
     "trnEffectType": {
      "type": "string",
      "nullable": true
     },
     "financialTrnFlag": {
      "type": "boolean"
     },
     "adjustmentTrnFlag": {
      "type": "boolean"
     },
     "trnEffectedLimit": {
      "type": "string",
      "nullable": true
     },
     "trnRewardAbility": {
      "type": "string",
      "nullable": true,
      "description": "Whether the transaction can earn a reward."
     },
     "reversalFlag": {
      "type": "boolean"
     },
     "refundFlag": {
      "type": "boolean"
     },
     "voidFlag": {
      "type": "boolean"
     },
     "adviceFlag": {
      "type": "boolean"
     },
     "offlineFlag": {
      "type": "boolean",
      "description": "Whether the terminal approved the transaction without asking the issuer."
     },
     "recurringFlag": {
      "type": "boolean"
     },
     "preauthorizationStatus": {
      "type": "string",
      "nullable": true
     },
     "processType": {
      "type": "string",
      "nullable": true
     },
     "autoBsmvFlag": {
      "type": "boolean"
     },
     "autoKkdfFlag": {
      "type": "boolean"
     },
     "rewardEffectedSegment": {
      "type": "string",
      "nullable": true
     },
     "closingTrnCode": {
      "type": "string",
      "nullable": true
     },
     "closingTrnCodeDetail": {
      "type": "string",
      "nullable": true
     },
     "trnGroupCode": {
      "type": "string",
      "nullable": true
     },
     "trnCodeBucketGroupCode": {
      "type": "string",
      "nullable": true
     },
     "cutOffCardPostingFlag": {
      "type": "boolean"
     },
     "addValueDay": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "trnRewardGroupCode": {
      "type": "string",
      "nullable": true
     },
     "acqCommissionTrnGroupCode": {
      "type": "string",
      "nullable": true
     },
     "acqLoyaltyTrnGroupCode": {
      "type": "string",
      "nullable": true
     },
     "acqAccTrnGroupCode": {
      "type": "string",
      "nullable": true
     },
     "acqRiskyTrnFlag": {
      "type": "boolean"
     },
     "trnPermGroupCode": {
      "type": "string",
      "nullable": true
     },
     "cashFeeChargeFlag": {
      "type": "boolean"
     },
     "prepaidFlag": {
      "type": "boolean"
     },
     "discountFlag": {
      "type": "boolean"
     },
     "trnFeeGroupCode": {
      "type": "string",
      "nullable": true
     },
     "trnLimitationGroupCode": {
      "type": "string",
      "description": "Values:\n\n- `SA` — purchase\n- `NA` — cash advance\n- `ST` — purchase, main card",
      "nullable": true,
      "x-everest-enum": true
     },
     "accountingGroupCode": {
      "type": "string",
      "nullable": true
     },
     "closingMatrixId": {
      "type": "string",
      "nullable": true
     },
     "rewardEffectedSegmentGroup": {
      "type": "string",
      "nullable": true
     },
     "installingMatrixId": {
      "type": "string",
      "nullable": true
     },
     "inflationFlag": {
      "type": "boolean"
     },
     "manualClosingMatrixId": {
      "type": "string",
      "nullable": true
     },
     "deferringFlag": {
      "type": "boolean"
     },
     "taxIncludeFlag": {
      "type": "boolean"
     }
    }
   },
   "TrnStatus": {
    "required": [
     "validFlag"
    ],
    "type": "object",
    "properties": {
     "validFlag": {
      "type": "boolean",
      "description": "Whether the row is live. The platform sets it."
     },
     "trnStatusCode": {
      "type": "string",
      "nullable": true,
      "description": "Where the transaction has got to, as a code."
     },
     "trnStatusDescription": {
      "type": "string",
      "nullable": true,
      "description": "The description of `trnStatusCode`, carried alongside it for display. It is not a key: match on the code."
     }
    }
   },
   "UpdateCustomerAddressData": {
    "required": [
     "addressType",
     "addressText",
     "isDefault",
     "isCardAddress",
     "isConfirmed"
    ],
    "type": "object",
    "properties": {
     "updateAllData": {
      "type": "boolean",
      "description": "`Ignored` — The integration layer does not forward it.",
      "nullable": true
     },
     "customerNumber": {
      "type": "integer",
      "description": "`Ignored` — Overwritten with the customer number being updated.",
      "format": "int64"
     },
     "recordId": {
      "type": "integer",
      "description": "`Required · Ignored` — The integration layer does not forward it, so it never selects an existing address.",
      "format": "int64"
     },
     "validFlag": {
      "type": "boolean",
      "description": "`Ignored` — The integration layer does not forward it.",
      "nullable": true
     },
     "addressType": {
      "type": "string",
      "description": "Must be a defined address type.\n\nValues:\n\n- `RA` — home\n- `AL` — business\n- `EA` — employer\n- `OO` — alternative\n- `WA` — previous\n- `SW` — SWIFT\n- `SS` — SWIFT name and address\n- `MR` — Mernis, registered\n- `MS` — Mernis, stated\n\nNot set is `--`.",
      "maxLength": 2,
      "x-everest-enum": true
     },
     "addressText": {
      "type": "string",
      "description": "Full address text.",
      "maxLength": 500
     },
     "isDefault": {
      "type": "boolean",
      "description": "Counted against the addresses already stored for the customer; exactly one address in total must carry it."
     },
     "isCardAddress": {
      "type": "boolean",
      "description": "Counted against the addresses already stored for the customer; at most one in total may carry it."
     },
     "isConfirmed": {
      "type": "boolean",
      "description": "Mandatory although the schema marks it optional.",
      "nullable": false
     },
     "addressId": {
      "type": "integer",
      "description": "External System Relational Identifier, Correlation Identifier",
      "format": "int64",
      "nullable": true
     },
     "countryId": {
      "type": "integer",
      "description": "`NotNull` — When supplied it must be a defined country. It is mandatory whenever `cityId` is supplied.",
      "format": "int32",
      "nullable": true
     },
     "industrialZoneId": {
      "type": "integer",
      "description": "Industrial Zone Identifier",
      "format": "int32",
      "nullable": true
     },
     "industrialZoneName": {
      "type": "string",
      "nullable": true,
      "maxLength": 50
     },
     "cityId": {
      "type": "integer",
      "description": "`Dependent · NotNull` — Requires `countryId`, and the city must be defined for that country.",
      "format": "int32",
      "nullable": true
     },
     "cityName": {
      "type": "string",
      "description": "`Dependent` — When `cityId` and `countryId` are both supplied it must equal the defined name of that city.",
      "nullable": true,
      "maxLength": 50
     },
     "countyId": {
      "type": "integer",
      "description": "County Identifier, see County_Def table",
      "format": "int32",
      "nullable": true
     },
     "countyName": {
      "type": "string",
      "description": "County Name, see County_Def table",
      "nullable": true,
      "maxLength": 50
     },
     "townId": {
      "type": "integer",
      "description": "Town Identifier, see Town_Def table",
      "format": "int32",
      "nullable": true
     },
     "townName": {
      "type": "string",
      "description": "Town Name, see Town_Def table",
      "nullable": true,
      "maxLength": 50
     },
     "villageId": {
      "type": "integer",
      "description": "Village Identifier, see Village_Def table",
      "format": "int32",
      "nullable": true
     },
     "villageName": {
      "type": "string",
      "description": "Village Name, see Village_Def table",
      "nullable": true,
      "maxLength": 50
     },
     "districtId": {
      "type": "integer",
      "description": "District Identifier, see District_Def table",
      "format": "int32",
      "nullable": true
     },
     "districtName": {
      "type": "string",
      "description": "District Name, see District_Def table",
      "nullable": true,
      "maxLength": 50
     },
     "streetId": {
      "type": "integer",
      "description": "Street Identifier, see Street_Def table",
      "format": "int32",
      "nullable": true
     },
     "streetName": {
      "type": "string",
      "description": "Street Name, see Street_Def table",
      "nullable": true,
      "maxLength": 100
     },
     "siteName": {
      "type": "string",
      "description": "Address Site Name",
      "nullable": true,
      "maxLength": 40
     },
     "buildingId": {
      "type": "integer",
      "description": "Building Identifier",
      "format": "int32",
      "nullable": true
     },
     "buildingName": {
      "type": "string",
      "nullable": true,
      "maxLength": 40
     },
     "buildingNumber": {
      "type": "string",
      "nullable": true,
      "maxLength": 20
     },
     "buildingEntrance": {
      "type": "string",
      "description": "Building Entrance Number",
      "nullable": true,
      "maxLength": 10
     },
     "flatNumber": {
      "type": "integer",
      "format": "int32",
      "nullable": true
     },
     "apartmentNumber": {
      "type": "string",
      "nullable": true,
      "maxLength": 20
     },
     "stateId": {
      "type": "integer",
      "description": "State Identifier",
      "format": "int32",
      "nullable": true
     },
     "stateName": {
      "type": "string",
      "nullable": true,
      "maxLength": 100,
      "description": "The state or province of the address."
     },
     "zipCode": {
      "type": "string",
      "nullable": true,
      "maxLength": 10,
      "description": "The post code of the address."
     },
     "poBoxNumber": {
      "type": "string",
      "description": "Post Box Number",
      "nullable": true,
      "maxLength": 20
     }
    }
   },
   "UpdateCustomerCommunicationData": {
    "type": "object",
    "properties": {
     "listOfAddress": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UpdateCustomerAddressData"
      },
      "description": "`ListHasNoItem` — When the property is present it must hold at least one address.",
      "nullable": true
     },
     "listOfGsm": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UpdateCustomerGsmData"
      },
      "description": "`ListHasNoItem` — When the property is present it must hold at least one mobile number.",
      "nullable": true
     },
     "listOfEmail": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UpdateCustomerEmailData"
      },
      "description": "`ListHasNoItem` — When the property is present it must hold at least one e-mail address.",
      "nullable": true
     },
     "listOfPhone": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UpdateCustomerPhoneData"
      },
      "description": "`ListHasNoItem` — When the property is present it must hold at least one phone number.",
      "nullable": true
     }
    },
    "required": []
   },
   "UpdateCustomerData": {
    "required": [
     "main"
    ],
    "type": "object",
    "properties": {
     "main": {
      "allOf": [
       {
        "$ref": "#/components/schemas/UpdateCustomerMainData"
       }
      ],
      "description": "Identifies the customer and carries the fields written onto the customer master."
     },
     "persona": {
      "allOf": [
       {
        "$ref": "#/components/schemas/UpdateCustomerPersonalData"
       }
      ],
      "description": "`Conditional · NotNull` — Mandatory when `customerType` is the retail, employee or lite-default type. It is written only if the customer already has a personal information record.",
      "nullable": true
     },
     "corporate": {
      "allOf": [
       {
        "$ref": "#/components/schemas/UpdateCustomerFirmData"
       }
      ],
      "description": "`Conditional · NotNull` — Mandatory when `customerType` is not the retail, employee or lite-default type. Most of it is written only if the customer already has a firm information record.",
      "nullable": true
     },
     "segment": {
      "allOf": [
       {
        "$ref": "#/components/schemas/UpdateCustomerSegmentData"
       }
      ],
      "description": "Omitting the whole block still clears `valueSubSegmentCode`.",
      "nullable": true
     },
     "preferences": {
      "allOf": [
       {
        "$ref": "#/components/schemas/UpdateCustomerPreferenceData"
       }
      ],
      "description": "Each flag left null keeps its stored value, except `customLimitationFlag`."
     }
    }
   },
   "UpdateCustomerEmailData": {
    "required": [
     "eMailAddress",
     "isConfirmed"
    ],
    "type": "object",
    "properties": {
     "updateAllData": {
      "type": "boolean",
      "description": "`Ignored` — The integration layer does not forward it.",
      "nullable": true
     },
     "customerNumber": {
      "type": "integer",
      "description": "`Ignored` — Overwritten with the customer number being updated.",
      "format": "int64"
     },
     "recordId": {
      "type": "integer",
      "description": "`Required · Ignored` — The integration layer does not forward it, so it never selects an existing address.",
      "format": "int64"
     },
     "validFlag": {
      "type": "boolean",
      "description": "`Ignored` — The integration layer does not forward it.",
      "nullable": true
     },
     "eMailAddress": {
      "type": "string",
      "description": "`NotNull · InvalidEmailAddress` — Mandatory in practice, and it must parse as an e-mail address.",
      "nullable": false,
      "maxLength": 50
     },
     "isConfirmed": {
      "type": "boolean",
      "description": "Mandatory in practice, because the entry is written as a new record.",
      "nullable": false
     }
    }
   },
   "UpdateCustomerFirmData": {
    "required": [
     "firmName",
     "authorityCustomerNumber",
     "firmCustomerType"
    ],
    "type": "object",
    "properties": {
     "firmNumber": {
      "type": "integer",
      "description": "Written onto the customer master. Null keeps the stored value.",
      "format": "int64",
      "nullable": true
     },
     "taxNumber": {
      "type": "string",
      "description": "Written onto the customer master. Blank keeps the stored value.",
      "nullable": true,
      "maxLength": 10
     },
     "taxOffice": {
      "type": "string",
      "description": "Written onto the customer master. Blank keeps the stored value.",
      "nullable": true,
      "maxLength": 100
     },
     "firmName": {
      "type": "string",
      "description": "Registered name of the firm. A blank value keeps the stored name.",
      "maxLength": 150
     },
     "embossFirmName": {
      "type": "string",
      "description": "Firm Name On Card",
      "nullable": true,
      "maxLength": 150
     },
     "authorityCustomerNumber": {
      "type": "integer",
      "description": "`Ignored` — Mandatory, but the service does not write it.",
      "format": "int64"
     },
     "firmCustomerType": {
      "type": "string",
      "description": "Mandatory although the schema marks it optional. Blank keeps the stored value.",
      "nullable": false,
      "maxLength": 2
     },
     "tradeRegistrationNumber": {
      "type": "string",
      "description": "Trading Registration Number",
      "nullable": true,
      "maxLength": 20
     },
     "tradeRegistrationDate": {
      "type": "string",
      "description": "Trading Registration Date\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "tradeRegistrationOffice": {
      "type": "string",
      "description": "Trading Registration Office",
      "nullable": true,
      "maxLength": 100
     },
     "foundationDate": {
      "type": "string",
      "description": "Corporate Foundation Date\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "authorityName": {
      "type": "string",
      "description": "Corporate Responsable Employee Full Name",
      "nullable": true,
      "maxLength": 100
     },
     "authorityGsmNumber": {
      "type": "string",
      "description": "Corporate Responsable Employee Mobile Number",
      "nullable": true,
      "maxLength": 64
     },
     "authorityMailAddress": {
      "type": "string",
      "description": "Corporate Responsable Employee E-Mail Address",
      "nullable": true,
      "maxLength": 50
     }
    }
   },
   "UpdateCustomerGsmData": {
    "required": [
     "gsmCountryId",
     "gsmAreaCode",
     "gsmNumber",
     "phoneNumberText",
     "isContactNumber",
     "isConfirmed"
    ],
    "type": "object",
    "properties": {
     "updateAllData": {
      "type": "boolean",
      "description": "`Ignored` — The integration layer does not forward it.",
      "nullable": true
     },
     "customerNumber": {
      "type": "integer",
      "description": "`Ignored` — Overwritten with the customer number being updated.",
      "format": "int64",
      "nullable": true
     },
     "recordId": {
      "type": "integer",
      "description": "`Required · Ignored` — The integration layer does not forward it, so it never selects an existing mobile number.",
      "format": "int64"
     },
     "validFlag": {
      "type": "boolean",
      "description": "`Ignored` — The integration layer does not forward it.",
      "nullable": true
     },
     "gsmCountryId": {
      "type": "integer",
      "description": "Country code. It must not be negative and must not exceed four digits.",
      "format": "int32",
      "minimum": 1
     },
     "gsmAreaCode": {
      "type": "integer",
      "description": "Area code. It must not be negative and must not exceed four digits.",
      "format": "int32",
      "minimum": 1
     },
     "gsmNumber": {
      "type": "string",
      "description": "At most fifteen characters, and it must contain at least one digit.",
      "maxLength": 15
     },
     "phoneNumberText": {
      "type": "string",
      "description": "Mandatory in practice. At most two hundred and fifty characters, and it must contain at least one digit.",
      "nullable": false,
      "maxLength": 250
     },
     "isConfirmed": {
      "type": "boolean",
      "description": "Mandatory in practice, because the entry is written as a new record.",
      "nullable": false
     },
     "confirmDate": {
      "type": "string",
      "description": "Gsm Approve Date\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "nullable": true,
      "example": "2026-10-16T14:30:00Z"
     },
     "isContactNumber": {
      "type": "boolean",
      "description": "Counted against the mobile numbers already stored for the customer; exactly one in total must carry it.",
      "nullable": false
     }
    }
   },
   "UpdateCustomerMainData": {
    "required": [
     "customerNumber",
     "customerType"
    ],
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "description": "Identifies the customer to update. A null is read as zero, which matches no customer.",
      "format": "int64",
      "nullable": false
     },
     "externalCustomerNumber": {
      "type": "integer",
      "description": "`Ignored` — The service does not write it.",
      "format": "int64",
      "nullable": true
     },
     "customerType": {
      "type": "string",
      "description": "Must be a defined customer type. It decides whether `persona` or `corporate` is required. A blank value keeps the stored type.\n\nValues:\n\n- `1` — corporate\n- `2` — individual\n- `3` — employee\n- `4` — sole proprietorship\n\nNot set is `N`.",
      "maxLength": 1
     },
     "accountingCustomerType": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be defined. Blank keeps the stored value.\n\nValues:\n\n- `1` — corporate\n- `2` — individual\n- `3` — employee",
      "nullable": true,
      "maxLength": 1
     },
     "creditCustomerType": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be defined. Blank keeps the stored value.\n\nValues:\n\n- `S` — standard\n- `V` — VIP\n- `P` — VIP platinum",
      "nullable": true,
      "maxLength": 3
     },
     "branchCode": {
      "type": "integer",
      "description": "Null keeps the stored branch.",
      "format": "int32",
      "nullable": true
     },
     "isLite": {
      "type": "boolean",
      "description": "`Default` — Defaults to false. True requires `tenantId` and forces the lite defaults, but only if the customer has a register row.",
      "nullable": true
     },
     "tenantId": {
      "type": "string",
      "description": "`Conditional · NotNullOrWhiteSpace` — Required when `isLite` is true, and must match a defined tenant.",
      "nullable": true
     },
     "statusCode": {
      "type": "string",
      "description": "Blank keeps the stored status. It is not checked against a status definition table.\n\nValues:\n\n- `A` — valid\n- `B` — pending\n- `C` — stolen\n- `D` — cancelled by the bank\n- `F` — fraud\n- `G` — temporarily blocked\n- `I` — cancelled\n- `L` — lost\n- `M` — cancelled by the customer\n- `T` — corporate dummy",
      "nullable": true,
      "maxLength": 1
     },
     "blockedAccountFlag": {
      "type": "boolean",
      "description": "Null keeps the stored flag.",
      "nullable": true
     },
     "validFlag": {
      "type": "boolean",
      "description": "Null keeps the stored flag. It is copied onto the personal and firm records as well.",
      "nullable": true
     }
    }
   },
   "UpdateCustomerPersonalData": {
    "required": [
     "name",
     "surname",
     "birthDate"
    ],
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "Given name. A blank value keeps the stored name.",
      "maxLength": 50
     },
     "middleName": {
      "type": "string",
      "description": "Customer Middle Name",
      "nullable": true,
      "maxLength": 50
     },
     "surname": {
      "type": "string",
      "description": "Family name. A blank value keeps the stored surname.",
      "maxLength": 50
     },
     "birthDate": {
      "type": "string",
      "description": "Date of birth.\n\nA date and time as a string, in RFC 3339 form: `2026-10-16T14:30:00Z`, or with an offset, `2026-10-16T17:30:00+03:00`.",
      "example": "2026-10-16T14:30:00Z"
     },
     "birthPlace": {
      "type": "string",
      "description": "Customer Place Of Birth",
      "nullable": true,
      "maxLength": 100
     },
     "fatherName": {
      "type": "string",
      "description": "Customer Father's Name",
      "nullable": true,
      "maxLength": 50
     },
     "motherName": {
      "type": "string",
      "description": "Customer Mother's Name",
      "nullable": true,
      "maxLength": 50
     },
     "maritalStatus": {
      "type": "string",
      "description": "Customer Marital Status Code\n\nValues:\n\n- `1` — single\n- `EV` — married\n- `3` — divorced\n- `4` — widowed\n- `2` — other\n- `0` — unknown",
      "nullable": true,
      "maxLength": 2
     },
     "educationStatus": {
      "type": "string",
      "description": "Educational Status Code\n\nValues:\n\n- `1` — literate\n- `2` — primary\n- `4` — secondary\n- `5` — two-year college\n- `6` — university\n- `7` — master's\n- `8` — doctorate",
      "nullable": true,
      "maxLength": 1
     },
     "nationality": {
      "type": "string",
      "description": "Nationality Code, see Nationality_Def Table",
      "nullable": true,
      "maxLength": 3
     },
     "identityType": {
      "type": "string",
      "description": "Identity Type Code, see Identity_Type_Def table\n\nValues:\n\n- `1` — identity card\n- `PT` — identity card\n- `2` — driver's licence\n- `EH` — driver's permit\n- `3` — passport\n- `PS` — passport\n- `KK` — TRNC identity card\n- `MK` — blue card\n- `IT` — residence permit\n- `AA` — an identity document listed in the annex to the European Agreement\n- `DG` — another type of identity\n- `0` — unknown",
      "nullable": true,
      "maxLength": 2
     },
     "identityNumber": {
      "type": "string",
      "nullable": true,
      "maxLength": 20
     },
     "residenceType": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be a defined residence type. Blank keeps the stored value.\n\nValues:\n\n- `I` — resident in Turkey\n- `D` — resident abroad",
      "nullable": true,
      "maxLength": 2
     },
     "disabledFlag": {
      "type": "boolean",
      "description": "Null keeps the stored flag.",
      "nullable": true
     },
     "title": {
      "type": "string",
      "description": "Customer Title",
      "nullable": true,
      "maxLength": 20
     },
     "gender": {
      "type": "string",
      "description": "Gender Type, E=Male, K=Female, X=Unknown\n\nValues:\n\n- `E` — male\n- `K` — female\n- `X` — unknown",
      "nullable": true,
      "maxLength": 1
     },
     "occupation": {
      "type": "string",
      "description": "Occupation Type, see Occupation_Def table",
      "nullable": true,
      "maxLength": 100
     },
     "workplaceName": {
      "type": "string",
      "description": "Customer Workplace Name",
      "nullable": true,
      "maxLength": 150
     },
     "businessTitle": {
      "type": "string",
      "description": "Customer Business Title",
      "nullable": true,
      "maxLength": 50
     }
    }
   },
   "UpdateCustomerPhoneData": {
    "required": [
     "phoneType",
     "phoneCountryId",
     "phoneAreaCode",
     "phoneNumber",
     "phoneNumberText",
     "isContactNumber"
    ],
    "type": "object",
    "properties": {
     "updateAllData": {
      "type": "boolean",
      "description": "`Ignored` — The integration layer does not forward it.",
      "nullable": true
     },
     "customerNumber": {
      "type": "integer",
      "description": "`Ignored` — Overwritten with the customer number being updated.",
      "format": "int64"
     },
     "recordId": {
      "type": "integer",
      "description": "`Required · Ignored` — The integration layer does not forward it, so it never selects an existing phone number.",
      "format": "int64"
     },
     "validFlag": {
      "type": "boolean",
      "description": "`Ignored` — The integration layer does not forward it.",
      "nullable": true
     },
     "phoneType": {
      "type": "string",
      "description": "Must be a defined phone type of at most two characters.\n\nValues:\n\n- `1` — telephone\n- `2` — fax\n- `0` — unknown",
      "maxLength": 2
     },
     "phoneCountryId": {
      "type": "integer",
      "description": "Mandatory in practice. It must be a defined country and must not exceed four digits.",
      "format": "int32",
      "nullable": false
     },
     "phoneAreaCode": {
      "type": "string",
      "description": "Mandatory in practice. At most ten characters, and it must contain at least one digit.",
      "nullable": false,
      "maxLength": 10
     },
     "phoneNumber": {
      "type": "string",
      "description": "Mandatory in practice. At most twenty characters, and it must contain at least one digit.",
      "nullable": false,
      "maxLength": 20
     },
     "phoneNumberText": {
      "type": "string",
      "description": "Mandatory in practice. At most fifty characters, and it must contain at least one digit.",
      "nullable": false,
      "maxLength": 50
     },
     "isContactNumber": {
      "type": "boolean",
      "description": "Counted against the phone numbers already stored for the customer; exactly one in total must carry it.",
      "nullable": false
     }
    }
   },
   "UpdateCustomerPreferenceData": {
    "type": "object",
    "properties": {
     "sendWarningLetterFlag": {
      "type": "boolean",
      "description": "Null keeps the stored flag.",
      "nullable": true
     },
     "communicationType": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be a defined communication language. Blank keeps the stored value.\n\nValues:\n\n- `1` — dial-up\n- `2` — ADSL\n- `3` — GSM\n- `4` — GPRS",
      "nullable": true,
      "maxLength": 2
     },
     "autoLimitIncreaseFlag": {
      "type": "boolean",
      "description": "Null keeps the stored flag.",
      "nullable": true
     },
     "statementPostingFlag": {
      "type": "boolean",
      "description": "Null keeps the stored flag.",
      "nullable": true
     },
     "statementSmsSendFlag": {
      "type": "boolean",
      "description": "Null keeps the stored flag.",
      "nullable": true
     },
     "statementEMailSendFlag": {
      "type": "boolean",
      "description": "Null keeps the stored flag.",
      "nullable": true
     },
     "earnRewardFlag": {
      "type": "boolean",
      "description": "Null keeps the stored flag.",
      "nullable": true
     },
     "sensitiveDataPermissionFlag": {
      "type": "boolean",
      "description": "Null keeps the stored flag.",
      "nullable": true
     },
     "customLimitationFlag": {
      "type": "boolean",
      "description": "When it is null the service falls back to the stored sensitive data permission flag rather than to the stored custom limitation flag.",
      "nullable": true
     }
    },
    "required": []
   },
   "UpdateCustomerRequest": {
    "required": [
     "channel",
     "customer"
    ],
    "type": "object",
    "properties": {
     "channel": {
      "type": "string",
      "description": "Three-digit code identifying the channel on behalf of which the request is made (e.g. `002` for Internet). Mandatory in every request. Used for entitlement checks, limit enforcement and audit logging. Channel codes are managed through configuration parameters and may change over time. Refer to the <a href=\"https://apiportal.dgpays.com/channels\" target=\"_parent\">Channels</a> page for the current list of valid codes.",
      "maxLength": 3
     },
     "customer": {
      "allOf": [
       {
        "$ref": "#/components/schemas/UpdateCustomerData"
       }
      ],
      "description": "Customer data. The `main` block inside it is mandatory as well."
     },
     "communications": {
      "allOf": [
       {
        "$ref": "#/components/schemas/UpdateCustomerCommunicationData"
       }
      ],
      "description": "Communication records. Every entry is created as a new record; see the 200 description.",
      "nullable": true
     }
    }
   },
   "UpdateCustomerResponse": {
    "required": [
     "customerNumber",
     "personId"
    ],
    "type": "object",
    "properties": {
     "customerNumber": {
      "type": "integer",
      "format": "int64",
      "description": "The customer at the bank's core banking system, as a number. The platform stores it rather than issuing it, so it comes from the core."
     },
     "personId": {
      "type": "integer",
      "format": "int64",
      "description": "The person behind the customer record."
     }
    }
   },
   "UpdateCustomerSegmentData": {
    "type": "object",
    "properties": {
     "behavioralSegmentCode": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be defined. Blank keeps the stored value.",
      "nullable": true,
      "maxLength": 1
     },
     "valueSegmentCode": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be defined. Blank keeps the stored value.\n\nValues:\n\n- `02` — standard\n- `03` — private\n- `10` — prestige\n- `07` — prestige+\n- `09` — FES\n- `99` — Islamic\n\nNot set is `N`.",
      "nullable": true,
      "maxLength": 5
     },
     "valueSubSegmentCode": {
      "type": "string",
      "description": "`NotNull` — When supplied it must be defined. Unlike the other two it is written unconditionally, so leaving it out clears the stored value.\n\nValues:\n\n- `10` — private\n- `20` — private plus\n- `30` — investor\n- `40` — other",
      "nullable": true,
      "maxLength": 5
     }
    }
   },
   "WorkPhone": {
    "type": "object",
    "properties": {
     "cc": {
      "type": "string",
      "nullable": true,
      "description": "The copy recipients of the message."
     },
     "subscriber": {
      "type": "string",
      "nullable": true,
      "description": "The subscriber the record belongs to."
     }
    }
   }
  },
  "responses": {
   "ActionNotFound": {
    "description": "Action Not Found"
   },
   "BusinessFailure": {
    "description": "Business Failure",
    "content": {
     "application/json": {
      "schema": {
       "$ref": "#/components/schemas/Error"
      }
     }
    }
   },
   "TechnicalFailure": {
    "description": "Technical Failure"
   }
  }
 },
 "tags": [
  {
   "name": "Card issuance and personalisation",
   "description": "Create individual, corporate and virtual cards, and check which products a customer is eligible to hold before you issue."
  },
  {
   "name": "Card lifecycle",
   "description": "Move a card through its states after issuance — status changes, replacement, renewal, blocking and closure."
  },
  {
   "name": "Customers",
   "description": "Read the customer behind the cards — portfolio summary, corporate relationships and total assets."
  },
  {
   "name": "Account linking",
   "description": "Attach and detach the accounts a card draws on, and read back what a card is currently linked to."
  },
  {
   "name": "Transactions",
   "description": "Read what happened on a card and correct it — transaction history, pending provisions, reversals and slip receipts."
  },
  {
   "name": "Card and customer limits",
   "description": "Raise, lower and reverse the spending limit on a card or on the customer behind it. Every change returns a log id you can reverse with."
  },
  {
   "name": "Operation limits",
   "description": "Cap what a card may do per transaction, per day, per week and per month, by channel and operation type."
  },
  {
   "name": "Permissions and restrictions",
   "description": "Turn individual capabilities on and off for a card — e-commerce, international use, mail order and other miscellaneous options."
  },
  {
   "name": "Collections and legal follow-up",
   "description": "Follow up arrears — delinquency state, collection detail and the legal process behind an unpaid balance."
  },
  {
   "name": "Debt payment",
   "description": "Take a payment against card debt, check a card is eligible to be paid down, and cancel a payment that should not have run."
  },
  {
   "name": "Statements and billing",
   "description": "Produce the statement a cardholder reads, and manage the period, delivery preference and address behind it."
  },
  {
   "name": "PIN and card security",
   "description": "Set and change a PIN, manage the try counter, and generate or verify the card verification values."
  },
  {
   "name": "Disputes and chargebacks",
   "description": "Open a dispute against a transaction, attach the evidence, and cancel a case that should not have been raised."
  },
  {
   "name": "Campaigns and rewards",
   "description": "Read the reward and campaign periods a customer's cards qualify for."
  },
  {
   "name": "Platform operations",
   "description": "Health checks and cache refresh. Called by your monitoring, not by a cardholder journey."
  },
  {
   "name": "Reference data",
   "description": "Look up the reference data a card programme is configured against — products, codes and parameters."
  }
 ],
 "x-tagGroups": [
  {
   "name": "Cards",
   "tags": [
    "Card issuance and personalisation",
    "Card lifecycle"
   ]
  },
  {
   "name": "Customers and accounts",
   "tags": [
    "Customers",
    "Account linking"
   ]
  },
  {
   "name": "Transactions",
   "tags": [
    "Transactions"
   ]
  },
  {
   "name": "Limits and controls",
   "tags": [
    "Card and customer limits",
    "Operation limits",
    "Permissions and restrictions"
   ]
  },
  {
   "name": "Billing and statements",
   "tags": [
    "Collections and legal follow-up",
    "Debt payment",
    "Statements and billing"
   ]
  },
  {
   "name": "Security",
   "tags": [
    "PIN and card security"
   ]
  },
  {
   "name": "Disputes",
   "tags": [
    "Disputes and chargebacks"
   ]
  },
  {
   "name": "Rewards",
   "tags": [
    "Campaigns and rewards"
   ]
  },
  {
   "name": "Platform",
   "tags": [
    "Platform operations",
    "Reference data"
   ]
  }
 ]
}
