{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/up-bank/main/json-schema/up-bank-response-banking-product-by-id-v7-schema.json",
  "title": "ResponseBankingProductByIdV7",
  "x-generated": "2026-10-21",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/up-bank-banking-products-api-openapi.yml#/components/schemas/ResponseBankingProductByIdV7",
  "properties": {
    "data": {
      "$ref": "#/$defs/BankingProductDetailV7"
    },
    "links": {
      "$ref": "#/$defs/Links"
    },
    "meta": {
      "$ref": "#/$defs/Meta"
    }
  },
  "required": [
    "data",
    "links"
  ],
  "type": "object",
  "$defs": {
    "BankingFeeAmount": {
      "properties": {
        "amount": {
          "description": "The specific amount charged for the fee each time it is incurred.",
          "type": "string",
          "x-cds-type": "AmountString"
        }
      },
      "required": [
        "amount"
      ],
      "type": "object"
    },
    "BankingFeeDiscountAmount": {
      "properties": {
        "amount": {
          "description": "The specific amount discounted from the fee each time it is incurred.",
          "type": "string",
          "x-cds-type": "AmountString"
        }
      },
      "required": [
        "amount"
      ],
      "type": "object"
    },
    "BankingFeeDiscountRange": {
      "description": "A minimum or maximum fee discount amount where a specific fixed amount is not known until the fee is incurred.",
      "properties": {
        "discountMinimum": {
          "description": "The minimum fee discount that will be applied per occurrence.",
          "type": "string",
          "x-cds-type": "AmountString"
        },
        "discountMaximum": {
          "description": "The maximum fee discount that will be applied per occurrence.",
          "type": "string",
          "x-cds-type": "AmountString"
        }
      },
      "type": "object"
    },
    "BankingFeeDiscountRate": {
      "properties": {
        "rateType": {
          "description": "Type of fee rate discount calculation.<ul><li>`BALANCE` A fee rate discount based on a balance</li><li>`FEE` A fee rate discount based on the fee to which the discount is attached</li><li>`INTEREST_ACCRUED` A fee rate discount based on interest accrued</li><li>`TRANSACTION` A fee rate discount based on a transaction.</li></ul>",
          "enum": [
            "BALANCE",
            "FEE",
            "INTEREST_ACCRUED",
            "TRANSACTION"
          ],
          "type": "string"
        },
        "rate": {
          "description": "The fee rate discount calculated according to the _rateType_.",
          "type": "string",
          "x-cds-type": "RateString"
        },
        "amountRange": {
          "$ref": "#/$defs/BankingFeeDiscountRange"
        }
      },
      "required": [
        "rate",
        "rateType"
      ],
      "type": "object"
    },
    "BankingFeeRange": {
      "description": "A minimum or maximum fee amount where a specific fixed amount is not known until the fee is incurred.",
      "properties": {
        "feeMinimum": {
          "description": "The minimum fee that will be charged per occurrence.",
          "type": "string",
          "x-cds-type": "AmountString"
        },
        "feeMaximum": {
          "description": "The maximum fee that will be charged per occurrence.",
          "type": "string",
          "x-cds-type": "AmountString"
        }
      },
      "type": "object"
    },
    "BankingFeeRate": {
      "properties": {
        "rateType": {
          "description": "Type of fee rate calculation.<ul><li>`BALANCE` A fee rate based on a balance</li><li>`INTEREST_ACCRUED` A fee rate based on interest accrued</li><li>`TRANSACTION` A fee rate based on a transaction.</li></ul>",
          "enum": [
            "BALANCE",
            "INTEREST_ACCRUED",
            "TRANSACTION"
          ],
          "type": "string"
        },
        "rate": {
          "description": "The fee rate calculated according to the _rateType_.",
          "type": "string",
          "x-cds-type": "RateString"
        },
        "accrualFrequency": {
          "description": "The indicative frequency with which the fee is calculated on the account if applicable. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax).",
          "type": "string",
          "x-cds-type": "ExternalRef"
        },
        "amountRange": {
          "$ref": "#/$defs/BankingFeeRange"
        }
      },
      "required": [
        "rate",
        "rateType"
      ],
      "type": "object",
      "x-conditional": [
        "balanceRate",
        "transactionRate",
        "accruedRate"
      ]
    },
    "BankingProductAdditionalInformationV2": {
      "description": "Object that contains links to additional information on specific topics.",
      "properties": {
        "overviewUri": {
          "description": "General overview of the product. Mandatory if _additionalOverviewUris_ includes one or more supporting documents.",
          "type": "string",
          "x-cds-type": "URIString"
        },
        "termsUri": {
          "description": "Terms and conditions for the product. Mandatory if _additionalTermsUris_ includes one or more supporting documents.",
          "type": "string",
          "x-cds-type": "URIString"
        },
        "eligibilityUri": {
          "description": "Eligibility rules and criteria for the product. Mandatory if _additionalEligibilityUris_ includes one or more supporting documents.",
          "type": "string",
          "x-cds-type": "URIString"
        },
        "feesAndPricingUri": {
          "description": "Description of fees, pricing, discounts, exemptions and bonuses for the product. Mandatory if _additionalFeesAndPricingUris_ includes one or more supporting documents.",
          "type": "string",
          "x-cds-type": "URIString"
        },
        "bundleUri": {
          "description": "Description of a bundle that this product can be part of. Mandatory if _additionalBundleUris_ includes one or more supporting documents.",
          "type": "string",
          "x-cds-type": "URIString"
        },
        "additionalOverviewUris": {
          "description": "An array of additional general overviews for the product or features of the product, if applicable. To be treated as secondary documents to the _overviewUri_. Only to be used if there is a primary _overviewUri_.",
          "items": {
            "$ref": "#/$defs/BankingProductAdditionalInformationV2_additionalInformationUris"
          },
          "type": "array"
        },
        "additionalTermsUris": {
          "description": "An array of additional terms and conditions for the product, if applicable. To be treated as secondary documents to the _termsUri_. Only to be used if there is a primary _termsUri_.",
          "items": {
            "$ref": "#/$defs/BankingProductAdditionalInformationV2_additionalInformationUris"
          },
          "type": "array"
        },
        "additionalEligibilityUris": {
          "description": "An array of additional eligibility rules and criteria for the product, if applicable. To be treated as secondary documents to the _eligibilityUri_. Only to be used if there is a primary _eligibilityUri_.",
          "items": {
            "$ref": "#/$defs/BankingProductAdditionalInformationV2_additionalInformationUris"
          },
          "type": "array"
        },
        "additionalFeesAndPricingUris": {
          "description": "An array of additional fees, pricing, discounts, exemptions and bonuses for the product, if applicable. To be treated as secondary documents to the _feesAndPricingUri_. Only to be used if there is a primary _feesAndPricingUri_.",
          "items": {
            "$ref": "#/$defs/BankingProductAdditionalInformationV2_additionalInformationUris"
          },
          "type": "array"
        },
        "additionalBundleUris": {
          "description": "An array of additional bundles for the product, if applicable. To be treated as secondary documents to the _bundleUri_. Only to be used if there is a primary _bundleUri_.",
          "items": {
            "$ref": "#/$defs/BankingProductAdditionalInformationV2_additionalInformationUris"
          },
          "type": "array"
        }
      },
      "type": "object",
      "x-conditional": [
        "overviewUri",
        "termsUri",
        "eligibilityUri",
        "feesAndPricingUri",
        "bundleUri"
      ]
    },
    "BankingProductAdditionalInformationV2_additionalInformationUris": {
      "properties": {
        "description": {
          "description": "Display text providing more information about the document URI.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "The URI describing the additional information.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "additionalInfoUri"
      ],
      "type": "object"
    },
    "BankingProductBundle": {
      "properties": {
        "name": {
          "description": "Name of the bundle.",
          "type": "string"
        },
        "description": {
          "description": "Description of the bundle.",
          "type": "string"
        },
        "additionalInfo": {
          "description": "Display text providing more information on the bundle.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on the bundle criteria and benefits.",
          "type": "string",
          "x-cds-type": "URIString"
        },
        "productIds": {
          "description": "Array of _productID_ values for products included in the bundle that are available via the product endpoints. Note that this array is not intended to represent a comprehensive model of the products included in the bundle and some products available for the bundle may not be available via the product reference endpoints.",
          "items": {
            "$ref": "#/$defs/BankingProductId"
          },
          "type": "array"
        }
      },
      "required": [
        "description",
        "name"
      ],
      "type": "object"
    },
    "BankingProductCardArt": {
      "properties": {
        "cardScheme": {
          "description": "Card scheme available with the account.",
          "enum": [
            "AMEX",
            "EFTPOS",
            "MASTERCARD",
            "VISA",
            "OTHER"
          ],
          "type": "string"
        },
        "cardType": {
          "description": "Card type available with the account.",
          "enum": [
            "CHARGE",
            "CREDIT",
            "DEBIT"
          ],
          "type": "string"
        },
        "title": {
          "description": "Display label for the specific image.",
          "type": "string"
        },
        "imageUri": {
          "description": "URI reference to a PNG, JPG or GIF image with proportions defined by ISO 7810 ID-1 and width no greater than 512 pixels. The URI reference may be a link or url-encoded data URI according to **[[RFC2397]](#nref-RFC2397)**.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "cardScheme",
        "cardType",
        "imageUri"
      ],
      "type": "object"
    },
    "BankingProductCategoryV2": {
      "description": "The category to which a product or account belongs. See [here](#product-categories) for more details.",
      "enum": [
        "BUSINESS_LOANS",
        "BUY_NOW_PAY_LATER",
        "CRED_AND_CHRG_CARDS",
        "LEASES",
        "MARGIN_LOANS",
        "OVERDRAFTS",
        "PERS_LOANS",
        "REGULATED_TRUST_ACCOUNTS",
        "RESIDENTIAL_MORTGAGES",
        "TERM_DEPOSITS",
        "TRADE_FINANCE",
        "TRANS_AND_SAVINGS_ACCOUNTS",
        "TRAVEL_CARDS"
      ],
      "type": "string"
    },
    "BankingProductConstraintV3": {
      "properties": {
        "constraintType": {
          "description": "The type of constraint described. For further details, refer to [Product Constraint Types](#tocSproductconstrainttypedoc).",
          "enum": [
            "MAX_BALANCE",
            "MAX_LIMIT",
            "MAX_LVR",
            "MIN_BALANCE",
            "MIN_LIMIT",
            "MIN_LVR",
            "OPENING_BALANCE",
            "OTHER"
          ],
          "type": "string"
        },
        "additionalValue": {
          "description": "Generic field containing additional information relevant to the [_constraintType_](#tocSproductconstrainttypedoc) specified. Whether mandatory or not is dependent on the value of [_constraintType_](#tocSproductconstrainttypedoc).",
          "type": "string"
        },
        "additionalInfo": {
          "description": "Display text providing more information on the constraint. Mandatory if the [_constraintType_](#tocSproductconstrainttypedoc) value is `OTHER`.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on the constraint.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "constraintType"
      ],
      "type": "object",
      "x-conditional": [
        "additionalValue",
        "additionalInfo"
      ]
    },
    "BankingProductDepositRateV2": {
      "properties": {
        "depositRateType": {
          "description": "The type of rate (`FIXED`, `VARIABLE`, `BONUS`, etc.) For further details, refer to [Product Deposit Rate Types](#tocSproductdepositratetypedoc).",
          "enum": [
            "BONUS",
            "BUNDLE_BONUS",
            "FIXED",
            "FLOATING",
            "INTRODUCTORY",
            "MARKET_LINKED",
            "VARIABLE"
          ],
          "type": "string"
        },
        "rate": {
          "description": "The rate to be applied.",
          "type": "string",
          "x-cds-type": "RateString"
        },
        "calculationFrequency": {
          "description": "The period after which the rate is applied to the balance to calculate the amount due for the period. Calculation of the amount is often daily (as balances may change) but accumulated until the total amount is 'applied' to the account (see _applicationFrequency_). Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax).",
          "type": "string",
          "x-cds-type": "ExternalRef"
        },
        "applicationType": {
          "description": "The type of approach used to apply the rate to the account.",
          "enum": [
            "MATURITY",
            "PERIODIC",
            "UPFRONT"
          ],
          "type": "string"
        },
        "applicationFrequency": {
          "description": "The period after which the calculated amount(s) (see _calculationFrequency_) are 'applied' (i.e. debited or credited) to the account. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax). Mandatory if the _applicationType_ value is `PERIODIC`.",
          "type": "string",
          "x-cds-type": "ExternalRef"
        },
        "tiers": {
          "description": "Qualifying criteria or conditions relevant to the associated rate.",
          "items": {
            "$ref": "#/$defs/BankingProductRateTierV4"
          },
          "type": "array"
        },
        "applicabilityConditions": {
          "description": "Applicability conditions for the rate.",
          "items": {
            "$ref": "#/$defs/BankingProductRateConditionV2"
          },
          "type": "array"
        },
        "additionalValue": {
          "description": "Generic field containing additional information relevant to the [_depositRateType_](#tocSproductdepositratetypedoc) specified. Whether mandatory or not is dependent on the value of [_depositRateType_](#tocSproductdepositratetypedoc).",
          "type": "string"
        },
        "additionalInfo": {
          "description": "Display text providing more information on the rate.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on this rate.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "applicationType",
        "depositRateType",
        "rate"
      ],
      "type": "object",
      "x-conditional": [
        "additionalValue",
        "applicationFrequency"
      ]
    },
    "BankingProductDetailV7": {
      "allOf": [
        {
          "$ref": "#/$defs/BankingProductV6"
        },
        {
          "$ref": "#/$defs/BankingProductDetailV7_allOf"
        }
      ]
    },
    "BankingProductDetailV7_allOf": {
      "properties": {
        "bundles": {
          "description": "An array of bundles that this product participates in. Each bundle is described by free form information but also by a list of _productID_ values of the other products that are included in the bundle. It is assumed that the current product is included in the bundle also.",
          "items": {
            "$ref": "#/$defs/BankingProductBundle"
          },
          "type": "array"
        },
        "features": {
          "description": "Array of features and limitations of the product.",
          "items": {
            "$ref": "#/$defs/BankingProductFeatureV4"
          },
          "type": "array"
        },
        "constraints": {
          "description": "Constraints on the application for the product such as minimum balances or limit thresholds.",
          "items": {
            "$ref": "#/$defs/BankingProductConstraintV3"
          },
          "type": "array"
        },
        "eligibility": {
          "description": "Eligibility criteria for the product.",
          "items": {
            "$ref": "#/$defs/BankingProductEligibilityV2"
          },
          "type": "array"
        },
        "fees": {
          "description": "Fees applicable to the product.",
          "items": {
            "$ref": "#/$defs/BankingProductFeeV2"
          },
          "type": "array"
        },
        "depositRates": {
          "description": "Interest rates available for deposits.",
          "items": {
            "$ref": "#/$defs/BankingProductDepositRateV2"
          },
          "type": "array"
        },
        "lendingRates": {
          "description": "Interest rates charged against lending balances.",
          "items": {
            "$ref": "#/$defs/BankingProductLendingRateV3"
          },
          "type": "array"
        },
        "instalments": {
          "$ref": "#/$defs/BankingProductInstalments"
        }
      },
      "type": "object"
    },
    "BankingProductDiscountEligibility": {
      "properties": {
        "discountEligibilityType": {
          "description": "The type of the specific eligibility constraint for a discount. For further details, refer to [Product Discount Eligibility Types](#tocSproductdiscounteligibilitydoc).",
          "enum": [
            "BUSINESS",
            "EMPLOYMENT_STATUS",
            "INTRODUCTORY",
            "MAX_AGE",
            "MIN_AGE",
            "MIN_INCOME",
            "MIN_TURNOVER",
            "NATURAL_PERSON",
            "OTHER",
            "PENSION_RECIPIENT",
            "RESIDENCY_STATUS",
            "STAFF",
            "STUDENT"
          ],
          "type": "string"
        },
        "additionalValue": {
          "description": "Generic field containing additional information relevant to the [_discountEligibilityType_](#tocSproductdiscounteligibilitydoc) specified. Whether mandatory or not is dependent on the value of [_discountEligibilityType_](#tocSproductdiscounteligibilitydoc).",
          "type": "string"
        },
        "additionalInfo": {
          "description": "Display text providing more information on this eligibility constraint. Mandatory if the [_discountEligibilityType_](#tocSproductdiscounteligibilitydoc) value is `OTHER`.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on this eligibility constraint.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "discountEligibilityType"
      ],
      "type": "object",
      "x-conditional": [
        "additionalInfo",
        "additionalValue"
      ]
    },
    "BankingProductDiscountV2": {
      "description": "Note that the currency of the fee discount is expected to be the same as the currency of the fee itself.",
      "properties": {
        "description": {
          "description": "Description of the discount.",
          "type": "string"
        },
        "discountType": {
          "description": "The type of discount. For further details, refer to [Product Discount Types](#tocSproductdiscounttypedoc).",
          "enum": [
            "BALANCE",
            "DEPOSITS",
            "ELIGIBILITY_ONLY",
            "FEE_CAP",
            "PAYMENTS"
          ],
          "type": "string"
        },
        "discountMethodUType": {
          "description": "Reference to the applicable fee discount method structure.",
          "enum": [
            "fixedAmount",
            "rateBased"
          ],
          "type": "string"
        },
        "fixedAmount": {
          "allOf": [
            {
              "$ref": "#/$defs/BankingFeeDiscountAmount"
            }
          ],
          "description": "Mandatory if the _discountMethodUType_ value is `fixedAmount`. Where the discount is a specific amount."
        },
        "rateBased": {
          "allOf": [
            {
              "$ref": "#/$defs/BankingFeeDiscountRate"
            }
          ],
          "description": "Mandatory if the _discountMethodUType_ value is `rateBased`. Where the discount is based on a type of rate. Unless noted in _additionalInfo_, assumes the application and calculation frequency are the same as the corresponding fee."
        },
        "additionalValue": {
          "description": "Generic field containing additional information relevant to the [_discountType_](#tocSproductdiscounttypedoc) specified. Whether mandatory or not is dependent on the value of [_discountType_](#tocSproductdiscounttypedoc).",
          "type": "string"
        },
        "additionalInfo": {
          "description": "Display text providing more information on the discount.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on this discount.",
          "type": "string",
          "x-cds-type": "URIString"
        },
        "eligibility": {
          "description": "Eligibility constraints that apply to this discount. Mandatory if the [_discountType_](#tocSproductdiscounttypedoc) value is `ELIGIBILITY_ONLY`.",
          "items": {
            "$ref": "#/$defs/BankingProductDiscountEligibility"
          },
          "type": "array"
        }
      },
      "required": [
        "description",
        "discountMethodUType",
        "discountType"
      ],
      "type": "object",
      "x-conditional": [
        "fixedAmount",
        "rateBased",
        "additionalValue",
        "eligibility"
      ]
    },
    "BankingProductEligibilityV2": {
      "properties": {
        "eligibilityType": {
          "description": "The type of eligibility criteria described. For further details, refer to [Product Eligibility Types](#tocSproducteligibilitytypedoc).",
          "enum": [
            "BUSINESS",
            "EMPLOYMENT_STATUS",
            "MAX_AGE",
            "MIN_AGE",
            "MIN_INCOME",
            "MIN_TURNOVER",
            "NATURAL_PERSON",
            "OTHER",
            "PENSION_RECIPIENT",
            "RESIDENCY_STATUS",
            "STAFF",
            "STUDENT"
          ],
          "type": "string"
        },
        "additionalValue": {
          "description": "Generic field containing additional information relevant to the [_eligibilityType_](#tocSproducteligibilitytypedoc) specified. Whether mandatory or not is dependent on the value of [_eligibilityType_](#tocSproducteligibilitytypedoc).",
          "type": "string"
        },
        "additionalInfo": {
          "description": "Display text providing more information on the [eligibility](#tocSproducteligibilitytypedoc) criteria. Mandatory if the [_eligibilityType_](#tocSproducteligibilitytypedoc) value is `OTHER`.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on this eligibility criteria.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "eligibilityType"
      ],
      "type": "object",
      "x-conditional": [
        "additionalValue",
        "additionalInfo"
      ]
    },
    "BankingProductFeatureV4": {
      "properties": {
        "featureType": {
          "description": "The type of feature described. For further details, refer to [Product Feature Types](#tocSproductfeaturetypedoc).",
          "enum": [
            "ADDITIONAL_CARDS",
            "BALANCE_TRANSFERS",
            "BILL_PAYMENT",
            "BONUS_REWARDS",
            "CARD_ACCESS",
            "CASHBACK_OFFER",
            "COMPLEMENTARY_PRODUCT_DISCOUNTS",
            "EXTRA_DOWN_PAYMENT",
            "DIGITAL_BANKING",
            "DIGITAL_WALLET",
            "DONATE_INTEREST",
            "EXTRA_REPAYMENTS",
            "FRAUD_PROTECTION",
            "FREE_TXNS",
            "FREE_TXNS_ALLOWANCE",
            "FUNDS_AVAILABLE_AFTER",
            "GUARANTOR",
            "INSTALMENT_PLAN",
            "INSURANCE",
            "INTEREST_FREE",
            "INTEREST_FREE_TRANSFERS",
            "LOYALTY_PROGRAM",
            "NOTIFICATIONS",
            "NPP_ENABLED",
            "NPP_PAYID",
            "OFFSET",
            "OTHER",
            "OVERDRAFT",
            "REDRAW",
            "RELATIONSHIP_MANAGEMENT",
            "UNLIMITED_TXNS"
          ],
          "type": "string"
        },
        "additionalValue": {
          "description": "Generic field containing additional information relevant to the [_featureType_](#tocSproductfeaturetypedoc) specified. Whether mandatory or not is dependent on the value of the [_featureType_](#tocSproductfeaturetypedoc).",
          "type": "string"
        },
        "additionalInfo": {
          "description": "Display text providing more information on the feature. Mandatory if the [_featureType_](#tocSproductfeaturetypedoc) value is `OTHER`.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on this feature.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "featureType"
      ],
      "type": "object",
      "x-conditional": [
        "additionalValue",
        "additionalInfo"
      ]
    },
    "BankingProductFeeV2": {
      "properties": {
        "name": {
          "description": "Name of the fee.",
          "type": "string"
        },
        "feeType": {
          "description": "The type of fee. For further details, refer to [Product Fee Types](#tocSproductfeetypedoc).",
          "enum": [
            "CASH_ADVANCE",
            "DEPOSIT",
            "DISHONOUR",
            "ENQUIRY",
            "EVENT",
            "EXIT",
            "LATE_PAYMENT",
            "OTHER",
            "PAYMENT",
            "PERIODIC",
            "PURCHASE",
            "REPLACEMENT",
            "TRANSACTION",
            "UPFRONT",
            "UPFRONT_PER_PLAN",
            "VARIATION",
            "WITHDRAWAL"
          ],
          "type": "string"
        },
        "feeMethodUType": {
          "description": "Reference to the applicable fee charging method structure.",
          "enum": [
            "fixedAmount",
            "rateBased",
            "variable"
          ],
          "type": "string"
        },
        "fixedAmount": {
          "allOf": [
            {
              "$ref": "#/$defs/BankingFeeAmount"
            }
          ],
          "description": "Mandatory if the _feeMethodUType_ value is `fixedAmount`. Where the fee is a specific amount."
        },
        "rateBased": {
          "allOf": [
            {
              "$ref": "#/$defs/BankingFeeRate"
            }
          ],
          "description": "Mandatory if the _feeMethodUType_ value is `rateBased`. Where the fee is based on a type of rate."
        },
        "variable": {
          "allOf": [
            {
              "$ref": "#/$defs/BankingFeeRange"
            }
          ],
          "description": "Mandatory if the _feeMethodUType_ value is `variable`. Where the amount or rate may not be known until the fee is incurred."
        },
        "feeCap": {
          "description": "The cap amount if multiple occurrences of the fee are capped to a limit.",
          "type": "string",
          "x-cds-type": "AmountString"
        },
        "feeCapPeriod": {
          "description": "Specifies a duration over which multiple occurrences of the fee will be capped. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax).",
          "type": "string",
          "x-cds-type": "ExternalRef"
        },
        "currency": {
          "default": "AUD",
          "description": "The currency the fee will be charged in. Assumes `AUD` if absent.",
          "type": "string",
          "x-cds-type": "CurrencyString"
        },
        "additionalValue": {
          "description": "Generic field containing additional information relevant to the [_feeType_](#tocSproductfeetypedoc) specified. Whether mandatory or not is dependent on the value of [_feeType_](#tocSproductfeetypedoc).",
          "type": "string"
        },
        "additionalInfo": {
          "description": "Display text providing more information on the fee. Mandatory if the [_feeType_](#tocSproductfeetypedoc) value is `OTHER`.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on this fee.",
          "type": "string",
          "x-cds-type": "URIString"
        },
        "discounts": {
          "description": "An optional list of discounts to this fee that may be available.",
          "items": {
            "$ref": "#/$defs/BankingProductDiscountV2"
          },
          "type": "array"
        }
      },
      "required": [
        "feeMethodUType",
        "feeType",
        "name"
      ],
      "type": "object",
      "x-conditional": [
        "fixedAmount",
        "rateBased",
        "variable",
        "additionalValue",
        "additionalInfo"
      ]
    },
    "BankingProductId": {
      "description": "A data holder-specific unique identifier for a Banking product. This identifier must be unique to a product but does not otherwise need to adhere to ID permanence guidelines.",
      "type": "string",
      "x-cds-type": "ASCIIString"
    },
    "BankingProductInstalments": {
      "description": "Details of instalment features on the account.",
      "properties": {
        "maximumConcurrentPlans": {
          "description": "Maximum number of concurrent active instalment plans that may be created on the account. If `null`, there is no predetermined maximum number.",
          "type": "integer",
          "x-cds-type": "NaturalNumber"
        },
        "instalmentsLimit": {
          "description": "Maximum combined limit of all instalment plans that may be created on the account. If `null` or not present, an opened account balance _creditLimit_ may be assumed to provide a maximum limit for instalments.",
          "type": "string",
          "x-cds-type": "AmountString"
        },
        "minimumPlanValue": {
          "description": "Minimum value that can be opened as an instalment plan.",
          "type": "string",
          "x-cds-type": "AmountString"
        },
        "maximumPlanValue": {
          "description": "Maximum value that can be opened as an instalment plan. If `null` or not present, _instalmentsLimit_ is assumed to be the maximum individual plan value.",
          "type": "string",
          "x-cds-type": "AmountString"
        },
        "minimumSplit": {
          "description": "Minimum number of instalment payments a plan can be created with.",
          "type": "integer",
          "x-cds-type": "PositiveInteger"
        },
        "maximumSplit": {
          "description": "Maximum number of instalment payments a plan can be created with.",
          "type": "integer",
          "x-cds-type": "PositiveInteger"
        }
      },
      "required": [
        "maximumSplit",
        "minimumSplit"
      ],
      "type": "object"
    },
    "BankingProductLendingRateV3": {
      "properties": {
        "lendingRateType": {
          "description": "The type of rate (`FIXED`, `VARIABLE`, etc.) For further details, refer to [Product Lending Rate Types](#tocSproductlendingratetypedoc).",
          "enum": [
            "BALANCE_TRANSFER",
            "BUNDLE_DISCOUNT_FIXED",
            "BUNDLE_DISCOUNT_VARIABLE",
            "CASH_ADVANCE",
            "DISCOUNT",
            "FIXED",
            "FLOATING",
            "INTRODUCTORY",
            "MARKET_LINKED",
            "PENALTY",
            "PURCHASE",
            "VARIABLE"
          ],
          "type": "string"
        },
        "rate": {
          "description": "The rate to be applied.",
          "type": "string",
          "x-cds-type": "RateString"
        },
        "comparisonRate": {
          "description": "A comparison rate equivalent for this rate.",
          "type": "string",
          "x-cds-type": "RateString"
        },
        "calculationFrequency": {
          "description": "The period after which the rate is applied to the balance to calculate the amount due for the period. Calculation of the amount is often daily (as balances may change) but accumulated until the total amount is 'applied' to the account (see _applicationFrequency_). Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax).",
          "type": "string",
          "x-cds-type": "ExternalRef"
        },
        "applicationType": {
          "description": "The type of approach used to apply the rate to the account.",
          "enum": [
            "MATURITY",
            "PERIODIC",
            "UPFRONT"
          ],
          "type": "string"
        },
        "applicationFrequency": {
          "description": "The period after which the calculated amount(s) (see _calculationFrequency_) are 'applied' (i.e. debited or credited) to the account. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax). Mandatory if the _applicationType_ value is `PERIODIC`.",
          "type": "string",
          "x-cds-type": "ExternalRef"
        },
        "interestPaymentDue": {
          "description": "When loan payments are due to be paid within each period. The investment benefit of earlier payments affect the rate that can be offered.",
          "enum": [
            "IN_ADVANCE",
            "IN_ARREARS"
          ],
          "type": "string"
        },
        "repaymentType": {
          "description": "Option in place for repayments.",
          "enum": [
            "INTEREST_ONLY",
            "OTHER",
            "PRINCIPAL_AND_INTEREST",
            "UNCONSTRAINED"
          ],
          "type": "string"
        },
        "loanPurpose": {
          "description": "The reason for taking out the loan.",
          "enum": [
            "INVESTMENT",
            "OTHER",
            "OWNER_OCCUPIED",
            "UNCONSTRAINED"
          ],
          "type": "string"
        },
        "tiers": {
          "description": "Qualifying criteria or conditions relevant to the associated rate.",
          "items": {
            "$ref": "#/$defs/BankingProductRateTierV4"
          },
          "type": "array"
        },
        "applicabilityConditions": {
          "description": "Applicability conditions for the rate.",
          "items": {
            "$ref": "#/$defs/BankingProductRateConditionV2"
          },
          "type": "array"
        },
        "additionalValue": {
          "description": "Generic field containing additional information relevant to the [_lendingRateType_](#tocSproductlendingratetypedoc) specified. Whether mandatory or not is dependent on the value of [_lendingRateType_](#tocSproductlendingratetypedoc).",
          "type": "string"
        },
        "additionalInfo": {
          "description": "Display text providing more information on the rate.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on this rate.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "applicationType",
        "lendingRateType",
        "loanPurpose",
        "rate",
        "repaymentType"
      ],
      "type": "object",
      "x-conditional": [
        "additionalValue",
        "applicationFrequency"
      ]
    },
    "BankingProductRateConditionV2": {
      "description": "Defines a condition for the applicability of a rate.",
      "properties": {
        "rateApplicabilityType": {
          "description": "Category of applicability condition associated with the rate. For more information refer to [Rate and Tier Applicability Types](#tocSbankingproductrateconditiondoc).",
          "enum": [
            "MIN_DEPOSITS",
            "MIN_DEPOSIT_AMOUNT",
            "DEPOSIT_BALANCE_INCREASED",
            "EXISTING_CUST",
            "NEW_ACCOUNTS",
            "NEW_CUSTOMER",
            "NEW_CUSTOMER_TO_GROUP",
            "ONLINE_ONLY",
            "OTHER",
            "MIN_PURCHASES",
            "MAX_WITHDRAWALS",
            "MAX_WITHDRAWAL_AMOUNT"
          ],
          "type": "string"
        },
        "additionalValue": {
          "description": "Generic field containing additional information relevant to the _rateApplicabilityType_ specified. Whether mandatory or not is dependent on the value of [_rateApplicabilityType_](#tocSbankingproductrateconditiondoc).",
          "type": "string"
        },
        "additionalInfo": {
          "description": "Display text providing more information on the condition. Mandatory if the [_rateApplicabilityType_](#tocSbankingproductrateconditiondoc) value is `OTHER`.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on this condition.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "rateApplicabilityType"
      ],
      "type": "object",
      "x-conditional": [
        "additionalValue",
        "additionalInfo"
      ]
    },
    "BankingProductRateTierV4": {
      "description": "Defines the criteria and conditions for which a rate applies.",
      "properties": {
        "name": {
          "description": "A display name for the tier.",
          "type": "string"
        },
        "unitOfMeasure": {
          "description": "The unit of measure that applies to the _minimumValue_ and _maximumValue_ values, e.g.,<ul><li>`DOLLAR` for a dollar amount (with values in AmountString format)<li>`PERCENT` for Loan-to-Value Ratio or LVR (with values in RateString format)<li>`MONTH` or `DAY` for a period representing a discrete number of months or days for a fixed-term deposit or loan (with values as a string containing a positive integer).</ul>",
          "enum": [
            "DAY",
            "DOLLAR",
            "MONTH",
            "PERCENT"
          ],
          "type": "string"
        },
        "minimumValue": {
          "description": "The number of _unitOfMeasure_ units that form the lower bound of the tier. The tier should be inclusive of this value.",
          "type": "string"
        },
        "maximumValue": {
          "description": "The number of _unitOfMeasure_ units that form the upper bound of the tier or band. For a tier with a discrete value (as opposed to a range of values e.g., 1 month) this must be the same as _minimumValue_. Where this is the same as the _minimumValue_ value of the next-higher tier the referenced tier should be exclusive of this value. For example a term deposit of 2 months falls into the upper tier of the following tiers: (1 – 2 months, 2 – 3 months). If absent the tier's range has no upper bound.",
          "type": "string"
        },
        "rateApplicationMethod": {
          "description": "The method used to calculate the amount to be applied using one or more tiers. A single rate may be applied to the entire balance or each applicable tier rate is applied to the portion of the balance that falls into that tier (referred to as 'bands' or 'steps').",
          "enum": [
            "PER_TIER",
            "WHOLE_BALANCE"
          ],
          "type": "string"
        },
        "applicabilityConditions": {
          "description": "Applicability conditions for the rate tier.",
          "items": {
            "$ref": "#/$defs/BankingProductRateConditionV2"
          },
          "type": "array"
        },
        "additionalInfo": {
          "description": "Display text providing more information on the rate tier.",
          "type": "string"
        },
        "additionalInfoUri": {
          "description": "Link to a web page with more information on this rate tier.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "minimumValue",
        "name",
        "unitOfMeasure"
      ],
      "type": "object"
    },
    "BankingProductV6": {
      "properties": {
        "productId": {
          "$ref": "#/$defs/BankingProductId"
        },
        "effectiveFrom": {
          "description": "The date and time from which this product is effective (i.e. is available for origination). Used to enable the articulation of products to the regime before they are available for customers to originate.",
          "type": "string",
          "x-cds-type": "DateTimeString"
        },
        "effectiveTo": {
          "description": "The date and time at which this product will be retired and will no longer be offered. Used to enable the managed deprecation of products.",
          "type": "string",
          "x-cds-type": "DateTimeString"
        },
        "lastUpdated": {
          "description": "The last date and time that the information for this product was changed (or the creation date for the product if it has never been altered).",
          "type": "string",
          "x-cds-type": "DateTimeString"
        },
        "productCategory": {
          "$ref": "#/$defs/BankingProductCategoryV2"
        },
        "name": {
          "description": "The display name of the product.",
          "type": "string"
        },
        "description": {
          "description": "A description of the product.",
          "type": "string"
        },
        "brand": {
          "description": "A label of the brand for the product. Able to be used for filtering. For data holders with single brands this value is still required.",
          "type": "string"
        },
        "brandName": {
          "description": "An optional display name of the brand.",
          "type": "string"
        },
        "brandGroup": {
          "description": "The *brandGroup* of a consumer data sharing brand that the product is associated with.",
          "type": "string",
          "x-cds-type": "ASCIIString"
        },
        "applicationUri": {
          "description": "A link to an application web page where this product can be applied for.",
          "type": "string",
          "x-cds-type": "URIString"
        },
        "isTailored": {
          "description": "Indicates whether the product is specifically tailored to a circumstance. In this case fees and prices are significantly negotiated depending on context. While all products are open to a degree of tailoring this flag indicates that tailoring is expected and thus that the provision of specific fees and rates is not applicable.",
          "type": "boolean"
        },
        "additionalInformation": {
          "$ref": "#/$defs/BankingProductAdditionalInformationV2"
        },
        "cardArt": {
          "description": "Information about any cards available with the account.",
          "items": {
            "$ref": "#/$defs/BankingProductCardArt"
          },
          "type": "array"
        }
      },
      "required": [
        "brand",
        "description",
        "isTailored",
        "lastUpdated",
        "name",
        "productCategory",
        "productId"
      ],
      "type": "object"
    },
    "Links": {
      "properties": {
        "self": {
          "description": "Fully qualified link that generated the current response document.",
          "type": "string",
          "x-cds-type": "URIString"
        }
      },
      "required": [
        "self"
      ],
      "type": "object"
    },
    "Meta": {
      "type": "object"
    }
  }
}