{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/citi/main/json-schema/citi-balance-request-schema.json",
  "title": "BalanceRequest",
  "description": "For XML content-type requests, elements in the request must appear in the same order as mentioned in the schema. Otherwise, the API will return a schema validation error.",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/citi-balance-api-openapi.yml#/components/schemas/BalanceRequest",
  "properties": {
    "account_identifier": {
      "type": "string",
      "description": "Identifier of the account as defined by the account service provider. You must include at least 1 account and can specify up to 50 accounts in the `account_identifier` field by comma-seperated values. You must specify either `account_identifier` or `branch_number` in order to receive a successful response. If none of these fields are provided, then the API will return a reject response along with an error message."
    },
    "branch_number": {
      "type": "string",
      "description": "Branch Number as defined by the account service provider. You can send only one Branch Number in the request. If you send a `branch_number` without an `account_number`, the API returns balances for all accounts belonging to the branch specified in the request. You must specify either `account_identifier` or `branch_number` in order to receive a successful response. If none of these fields are provided, then the API will return a reject response along with an error message."
    },
    "base_currency": {
      "type": "string",
      "pattern": "^[A-Z]{3,3}$",
      "description": "3-digit currency code for the currency in which the balance needs to be retrieved. You may only one value in this field. If `base_currency` is provided in the request, the API will return balances in the requested currency after applying any applicable FX currency conversations. If `base_currency` is not provided in the request, then the response will return balances in the account's currency."
    },
    "from_date": {
      "type": "string",
      "description": "Calendar date expressed in YYYY-MM-DD format. Cannot be more than 180 days from the current date. This is defined in \"XML Schema Part 2: Datatypes Second Edition - W3C Recommendation 28 October 2004\" which is aligned with ISO 8601.",
      "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$"
    },
    "to_date": {
      "type": "string",
      "description": "Calendar date expressed in YYYY-MM-DD format. Cannot be more than 180 days from the current date. This is defined in \"XML Schema Part 2: Datatypes Second Edition - W3C Recommendation 28 October 2004\" which is aligned with ISO 8601.",
      "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$"
    }
  }
}