P&N Bank Banking Products API

Banking Product endpoints

OpenAPI Specification

pn-bank-banking-products-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  contact:
    email: contact@dsb.gov.au
    name: Data Standards Body
    url: https://dsb.gov.au/
  description: Specifications for resource endpoints applicable to data holders in the Banking sector.
  license:
    name: MIT License
    url: https://opensource.org/licenses/MIT
  title: CDR Banking Banking Account Balances Banking Products API
  version: 1.36.0
servers:
- description: MTLS
  url: https://mtls.dh.example.com/cds-au/v1
tags:
- description: Banking Product endpoints
  name: Banking Products
  x-shortName: Products
paths:
  /banking/products:
    get:
      description: 'Obtain a list of products that are currently openly offered to the market.


        Note that the results returned by this endpoint are expected to be ordered in descending order according to _lastUpdated_.


        ### Conventions

        In the product reference payloads there are a number of recurring conventions that are explained below.


        #### Arrays Of Features


        In the product detail payload there are a number of arrays articulating generic features, constraints, prices, etc. The intent of these arrays is as follows:


        - Each element in an array has the same structure so that clients can reliably interpret the payloads

        - Each element as a type element that is an enumeration of the specific aspect of a product being described, such as types of fees.

        - Each element has a field named [_additionalValue_](#productfeaturetypedoc). This is a generic field with contents that will vary based on the type of object being described. The contents of this field for the `ADDITIONAL_CARDS` feature is the number of cards allowed while the contents of this field for the `MAX_LIMIT` constraint would be the maximum credit limit allowed for the product.

        - An element in these arrays of the same type may appear more than once. For instance, a product may offer two separate loyalty programs that the customer can select from. A fixed term mortgage may have different rates for different term lengths.

        - An element in these arrays may contain an _additionalInfo_ and _additionalInfoUri_ field. The _additionalInfo_ field is used to provide displayable text clarifying the purpose of the element in some way when the product is presented to a customer. The _additionalInfoUri_ provides a link to externally hosted information specifically relevant to that feature of the product.

        - Depending on the type of data being represented there may be additional specific fields.


        #### URIs To More Information


        As the complexities and nuances of a financial product can not easily be fully expressed in a data structure without a high degree of complexity it is necessary to provide additional reference information that a potential customer can access so that they are fully informed of the features and implications of the product. The payloads for product reference therefore contain numerous fields that are provided to allow the product holder to describe the product more fully using a web page hosted on their online channels.


        These URIs do not need to all link to different pages. If desired, they can all link to a single hosted page and use different HTML anchors to focus on a specific topic such as eligibility or fees.


        #### Linkage To Accounts

        From the moment that a customer applies for a product and an account is created the account and the product that spawned it will diverge. Rates and features of the product may change and a discount may be negotiated for the account.


        For this reason, while _productCategory_ is a common field between accounts and products, there is no specific ID that can be used to link an account to a product within the regime.


        Similarly, many of the fields and objects in the product payload will appear in the account detail payload but the structures and semantics are not identical as one refers to a product that can potentially be originated and one refers to an account that actually has been instantiated and created along with the associated decisions inherent in that process.


        #### Dates

        It is expected that data consumers needing this data will call relatively frequently to ensure the data they have is representative of the current offering from a bank. To minimise the volume and frequency of these calls the ability to set a _lastUpdated_ field with the date and time of the last update to this product is included. A call for a list of products can then be filtered to only return products that have been updated since the last time that data was obtained using the _updated-since_ query parameter.


        In addition, the concept of effective date and time has also been included. This allows for a product to be marked for obsolescence, or introduction, from a certain time without the need for an update to show that a product has been changed. The inclusion of these dates also removes the need to represent deleted products in the payload. Products that are no longer offered can be marked not effective for a few weeks before they are then removed from the product set as an option entirely.


        Obsolete versions: [v1](includes/obsolete/get-products-v1.html), [v2](includes/obsolete/get-products-v2.html), [v3](includes/obsolete/get-products-v3.html), [v4](includes/obsolete/get-products-v4.html).'
      operationId: listBankingProducts
      parameters:
      - description: Allows for the filtering of products based on whether the current time is within the period of time defined as effective by the _effectiveFrom_ and _effectiveTo_ fields. Valid values are `CURRENT`, `FUTURE` and `ALL`. If absent defaults to `CURRENT`.
        explode: true
        in: query
        name: effective
        required: false
        schema:
          default: CURRENT
          enum:
          - ALL
          - CURRENT
          - FUTURE
          type: string
        style: form
      - description: Only include products that have been updated after the specified date and time. If absent defaults to include all products.
        explode: true
        in: query
        name: updated-since
        required: false
        schema:
          type: string
        style: form
        x-cds-type: DateTimeString
      - description: Filter results based on a specific brand.
        explode: true
        in: query
        name: brand
        required: false
        schema:
          type: string
        style: form
      - description: Used to filter results on the _productCategory_ field applicable to accounts. Any one of the valid values for this field can be supplied. If absent then all accounts returned.
        explode: true
        in: query
        name: product-category
        required: false
        schema:
          $ref: '#/components/schemas/BankingProductCategoryV2'
        style: form
      - description: Page of results to request (standard pagination).
        explode: true
        in: query
        name: page
        required: false
        schema:
          default: 1
          type: integer
        style: form
        x-cds-type: PositiveInteger
      - description: Page size to request. Default is 25 (standard pagination).
        explode: true
        in: query
        name: page-size
        required: false
        schema:
          default: 25
          type: integer
        style: form
        x-cds-type: PositiveInteger
      - description: Version of the API endpoint requested by the client. Must be set to a positive integer. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If the value of [_x-min-v_](#request-headers) is equal to or higher than the value of [_x-v_](#request-headers) then the [_x-min-v_](#request-headers) header should be treated as absent. If all versions requested are not supported then the endpoint **MUST** respond with a `406 Not Acceptable`. See [HTTP Headers](#request-headers).
        explode: false
        in: header
        name: x-v
        required: true
        schema:
          type: string
        style: simple
      - description: Minimum version of the API endpoint requested by the client. Must be set to a positive integer if provided. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If all versions requested are not supported then the endpoint **MUST** respond with a `406 Not Acceptable`.
        explode: false
        in: header
        name: x-min-v
        required: false
        schema:
          type: string
        style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBankingProductListV4'
          description: Successful response
          headers:
            x-v:
              $ref: '#/components/headers/XV'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseErrorListV2'
          description: The following error codes **MUST** be supported:<br/><ul class="error-code-list"><li>[400 - Invalid Field](#error-400-field-invalid)</li><li>[400 - Missing Required Field](#error-400-field-missing)</li><li>[400 - Missing Required Header](#error-400-header-missing)</li><li>[400 - Invalid Version](#error-400-header-invalid-version)</li><li>[400 - Invalid Date](#error-400-field-invalid-date-time)</li><li>[400 - Invalid Page Size](#error-400-field-invalid-page-size)</li></ul>
        '406':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseErrorListV2'
          description: The following error codes **MUST** be supported:<br/><ul class="error-code-list"><li>[406 - Unsupported Version](#error-406-header-unsupported-version)</li></ul>
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseErrorListV2'
          description: The following error codes **MUST** be supported:<br/><ul class="error-code-list"><li>[422 - Invalid Page](#error-422-field-invalid-page)</li></ul>
      servers:
      - description: TLS
        url: https://tls.dh.example.com/cds-au/v1
      summary: Get Products
      tags:
      - Banking Products
      x-version: '5'
  /banking/products/{productId}:
    get:
      description: 'Obtain detailed information on a single product offered openly to the market.


        Obsolete versions: [v1](includes/obsolete/get-product-detail-v1.html), [v2](includes/obsolete/get-product-detail-v2.html), [v3](includes/obsolete/get-product-detail-v3.html), [v4](includes/obsolete/get-product-detail-v4.html), [v5](includes/obsolete/get-product-detail-v5.html), [v6](includes/obsolete/get-product-detail-v6.html).'
      operationId: getBankingProductDetail
      parameters:
      - description: The _productId_ to obtain data for. _productId_ values are returned by product list endpoints.
        explode: false
        in: path
        name: productId
        required: true
        schema:
          $ref: '#/components/schemas/BankingProductId'
        style: simple
        x-cds-type: ASCIIString
      - description: Version of the API endpoint requested by the client. Must be set to a positive integer. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If the value of [_x-min-v_](#request-headers) is equal to or higher than the value of [_x-v_](#request-headers) then the [_x-min-v_](#request-headers) header should be treated as absent. If all versions requested are not supported then the endpoint **MUST** respond with a `406 Not Acceptable`. See [HTTP Headers](#request-headers).
        explode: false
        in: header
        name: x-v
        required: true
        schema:
          type: string
        style: simple
      - description: Minimum version of the API endpoint requested by the client. Must be set to a positive integer if provided. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If all versions requested are not supported then the endpoint **MUST** respond with a `406 Not Acceptable`.
        explode: false
        in: header
        name: x-min-v
        required: false
        schema:
          type: string
        style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBankingProductByIdV7'
          description: Successful response
          headers:
            x-v:
              $ref: '#/components/headers/XV'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseErrorListV2'
          description: The following error codes **MUST** be supported:<br/><ul class="error-code-list"><li>[400 - Invalid Field](#error-400-field-invalid)</li><li>[400 - Missing Required Field](#error-400-field-missing)</li><li>[400 - Missing Required Header](#error-400-header-missing)</li><li>[400 - Invalid Version](#error-400-header-invalid-version)</li></ul>
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseErrorListV2'
          description: The following error codes **MUST** be supported:<br/><ul class="error-code-list"><li>[404 - Unavailable Resource](#error-404-resource-unavailable)</li><li>[404 - Invalid Resource](#error-404-resource-invalid)</li></ul>
        '406':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseErrorListV2'
          description: The following error codes **MUST** be supported:<br/><ul class="error-code-list"><li>[406 - Unsupported Version](#error-406-header-unsupported-version)</li></ul>
      servers:
      - description: TLS
        url: https://tls.dh.example.com/cds-au/v1
      summary: Get Product Detail
      tags:
      - Banking Products
      x-version: '7'
components:
  schemas:
    ErrorV2_meta:
      description: Additional data for customised error codes.
      properties:
        urn:
          description: The CDR error code URN which the application-specific error code extends. Mandatory if the error _code_ is an application-specific error rather than a standardised error code.
          type: string
      type: object
      x-conditional:
      - urn
    ResponseBankingProductListV4:
      example:
        data:
          products:
          - brandGroup: brandGroup
            additionalInformation:
              eligibilityUri: eligibilityUri
              additionalFeesAndPricingUris:
              - additionalInfoUri: additionalInfoUri
                description: description
              - additionalInfoUri: additionalInfoUri
                description: description
              additionalTermsUris:
              - additionalInfoUri: additionalInfoUri
                description: description
              - additionalInfoUri: additionalInfoUri
                description: description
              bundleUri: bundleUri
              feesAndPricingUri: feesAndPricingUri
              additionalBundleUris:
              - additionalInfoUri: additionalInfoUri
                description: description
              - additionalInfoUri: additionalInfoUri
                description: description
              additionalEligibilityUris:
              - additionalInfoUri: additionalInfoUri
                description: description
              - additionalInfoUri: additionalInfoUri
                description: description
              additionalOverviewUris:
              - additionalInfoUri: additionalInfoUri
                description: description
              - additionalInfoUri: additionalInfoUri
                description: description
              termsUri: termsUri
              overviewUri: overviewUri
            brandName: brandName
            productId: productId
            description: description
            effectiveTo: effectiveTo
            cardArt:
            - imageUri: imageUri
              cardScheme: AMEX
              cardType: CHARGE
              title: title
            - imageUri: imageUri
              cardScheme: AMEX
              cardType: CHARGE
              title: title
            lastUpdated: lastUpdated
            isTailored: true
            name: name
            applicationUri: applicationUri
            effectiveFrom: effectiveFrom
            brand: brand
          - brandGroup: brandGroup
            additionalInformation:
              eligibilityUri: eligibilityUri
              additionalFeesAndPricingUris:
              - additionalInfoUri: additionalInfoUri
                description: description
              - additionalInfoUri: additionalInfoUri
                description: description
              additionalTermsUris:
              - additionalInfoUri: additionalInfoUri
                description: description
              - additionalInfoUri: additionalInfoUri
                description: description
              bundleUri: bundleUri
              feesAndPricingUri: feesAndPricingUri
              additionalBundleUris:
              - additionalInfoUri: additionalInfoUri
                description: description
              - additionalInfoUri: additionalInfoUri
                description: description
              additionalEligibilityUris:
              - additionalInfoUri: additionalInfoUri
                description: description
              - additionalInfoUri: additionalInfoUri
                description: description
              additionalOverviewUris:
              - additionalInfoUri: additionalInfoUri
                description: description
              - additionalInfoUri: additionalInfoUri
                description: description
              termsUri: termsUri
              overviewUri: overviewUri
            brandName: brandName
            productId: productId
            description: description
            effectiveTo: effectiveTo
            cardArt:
            - imageUri: imageUri
              cardScheme: AMEX
              cardType: CHARGE
              title: title
            - imageUri: imageUri
              cardScheme: AMEX
              cardType: CHARGE
              title: title
            lastUpdated: lastUpdated
            isTailored: true
            name: name
            applicationUri: applicationUri
            effectiveFrom: effectiveFrom
            brand: brand
        meta:
          totalRecords: 0
          totalPages: 6
        links:
          next: next
          last: last
          prev: prev
          self: self
          first: first
      properties:
        data:
          $ref: '#/components/schemas/ResponseBankingProductListV4_data'
        links:
          $ref: '#/components/schemas/LinksPaginated'
        meta:
          $ref: '#/components/schemas/MetaPaginated'
      required:
      - data
      - links
      - meta
      type: object
    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
    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.
          example: 4
          type: integer
          x-cds-type: PositiveInteger
        maximumSplit:
          description: Maximum number of instalment payments a plan can be created with.
          example: 4
          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
          example: FIXED
          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
          example: PERIODIC
          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: '#/components/schemas/BankingProductRateTierV4'
          type: array
        applicabilityConditions:
          description: Applicability conditions for the rate.
          items:
            $ref: '#/components/schemas/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
    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
    BankingProductCardArt:
      example:
        imageUri: imageUri
        cardScheme: AMEX
        cardType: CHARGE
        title: title
      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
    ResponseBankingProductListV4_data:
      example:
        products:
        - brandGroup: brandGroup
          additionalInformation:
            eligibilityUri: eligibilityUri
            additionalFeesAndPricingUris:
            - additionalInfoUri: additionalInfoUri
              description: description
            - additionalInfoUri: additionalInfoUri
              description: description
            additionalTermsUris:
            - additionalInfoUri: additionalInfoUri
              description: description
            - additionalInfoUri: additionalInfoUri
              description: description
            bundleUri: bundleUri
            feesAndPricingUri: feesAndPricingUri
            additionalBundleUris:
            - additionalInfoUri: additionalInfoUri
              description: description
            - additionalInfoUri: additionalInfoUri
              description: description
            additionalEligibilityUris:
            - additionalInfoUri: additionalInfoUri
              description: description
            - additionalInfoUri: additionalInfoUri
              description: description
            additionalOverviewUris:
            - additionalInfoUri: additionalInfoUri
              description: description
            - additionalInfoUri: additionalInfoUri
              description: description
            termsUri: termsUri
            overviewUri: overviewUri
          brandName: brandName
          productId: productId
          description: description
          effectiveTo: effectiveTo
          cardArt:
          - imageUri: imageUri
            cardScheme: AMEX
            cardType: CHARGE
            title: title
          - imageUri: imageUri
            cardScheme: AMEX
            cardType: CHARGE
            title: title
          lastUpdated: lastUpdated
          isTailored: true
          name: name
          applicationUri: applicationUri
          effectiveFrom: effectiveFrom
          brand: brand
        - brandGroup: brandGroup
          additionalInformation:
            eligibilityUri: eligibilityUri
            additionalFeesAndPricingUris:
            - additionalInfoUri: additionalInfoUri
              description: description
            - additionalInfoUri: additionalInfoUri
              description: description
            additionalTermsUris:
            - additionalInfoUri: additionalInfoUri
              description: description
            - additionalInfoUri: additionalInfoUri
              description: description
            bundleUri: bundleUri
            feesAndPricingUri: feesAndPricingUri
            additionalBundleUris:
            - additionalInfoUri: additionalInfoUri
              description: description
            - additionalInfoUri: additionalInfoUri
              description: description
            additionalEligibilityUris:
            - additionalInfoUri: additionalInfoUri
              description: description
            - additionalInfoUri: additionalInfoUri
              description: description
            additionalOverviewUris:
            - additionalInfoUri: additionalInfoUri
              description: description
            - additionalInfoUri: additionalInfoUri
              description: description
            termsUri: termsUri
            overviewUri: overviewUri
          brandName: brandName
          productId: productId
          description: description
          effectiveTo: effectiveTo
          cardArt:
          - imageUri: imageUri
            cardScheme: AMEX
            cardType: CHARGE
            title: title
          - imageUri: imageUri
            cardScheme: AMEX
            cardType: CHARGE
            title: title
          lastUpdated: lastUpdated
          isTailored: true
          name: name
          applicationUri: applicationUri
          effectiveFrom: effectiveFrom
          brand: brand
      properties:
        products:
          description: The list of products returned. If the filter results in an empty set then this array may have no records.
          items:
            $ref: '#/components/schemas/BankingProductV6'
          type: array
      required:
      - products
      type: object
    ResponseErrorListV2:
      properties:
        errors:
          description: List of errors.
          items:
            $ref: '#/components/schemas/ErrorV2'
          type: array
      required:
      - errors
      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
    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
    BankingProductDepositRateV2:
      properties:
        depositRateType:
          des

# --- truncated at 32 KB (68 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pn-bank/refs/heads/main/openapi/pn-bank-banking-products-api-openapi.yml