generated: '2026-07-21' method: derived source: openapi/suncorp-bank-cds-banking-products-openapi.yml (product + account schema $ref graph) notes: >- Entity graph derived from the full CDS Banking API spec in the repo. The public Product Reference Data surface is rooted at BankingProduct, whose detail payload embeds arrays of features, constraints, eligibility, fees, and category-specific rate structures. The authenticated (consumer-authorized, mTLS) tier is rooted at BankingAccount — accounts fan out to balance, detail, transactions, direct debits, scheduled payments and instalment plans, with scheduled payments referencing a Payee. There is deliberately no id link from a product to an account in the CDR model (product data is a separate public surface). entities: - name: BankingProduct id_field: productId id_type: BankingProductId (ASCIIString) key_fields: [productId, productCategory, name, description, brand, lastUpdated, effectiveFrom, effectiveTo] source_schema: BankingProductV4 / BankingProductDetailV7 - name: BankingProductFeature belongs_to: BankingProduct via: features[] - name: BankingProductConstraint belongs_to: BankingProduct via: constraints[] - name: BankingProductEligibility belongs_to: BankingProduct via: eligibility[] - name: BankingProductFee belongs_to: BankingProduct via: fees[] - name: BankingProductDepositRate belongs_to: BankingProduct via: depositRates[] - name: BankingProductLendingRate belongs_to: BankingProduct via: lendingRates[] - name: BankingProductCardArt belongs_to: BankingProduct via: cardArt[] - name: BankingAccount id_field: accountId id_type: BankingAccountId (ASCIIString) key_fields: [accountId, displayName, nickname, maskedNumber, productCategory, productName, openStatus, isOwned] source_schema: BankingAccountV2 / BankingAccountDetailV4 tier: authenticated - name: BankingBalance belongs_to: BankingAccount via: accountId key_fields: [accountId, currentBalance, availableBalance, creditLimit, amortisedLimit, currency, purses] source_schema: BankingBalanceV2 tier: authenticated - name: BankingTransaction id_field: transactionId belongs_to: BankingAccount via: accountId key_fields: [transactionId, accountId, type, status, description, postingDateTime, valueDateTime, amount, currency, reference] source_schema: BankingTransactionV2 / BankingTransactionDetailV2 tier: authenticated - name: BankingDirectDebit belongs_to: BankingAccount via: accountId key_fields: [accountId, authorisedEntity, lastDebitDateTime, lastDebitAmount] source_schema: BankingDirectDebitV1 tier: authenticated - name: BankingScheduledPayment id_field: scheduledPaymentId belongs_to: BankingAccount via: from.accountId references: BankingPayee key_fields: [scheduledPaymentId, nickname, payerReference, payeeReference, status, from, paymentSet, recurrence] source_schema: BankingScheduledPaymentV2 tier: authenticated - name: BankingInstalmentPlan belongs_to: BankingAccount via: accountId source_schema: BankingProductInstalmentPlan tier: authenticated - name: BankingPayee id_field: payeeId key_fields: [payeeId, nickname, description, type, creationDate] source_schema: BankingPayeeV2 / BankingPayeeDetailV3 tier: authenticated relationships: - from: BankingProduct to: BankingProductFeature type: has_many via: features - from: BankingProduct to: BankingProductConstraint type: has_many via: constraints - from: BankingProduct to: BankingProductEligibility type: has_many via: eligibility - from: BankingProduct to: BankingProductFee type: has_many via: fees - from: BankingProduct to: BankingProductDepositRate type: has_many via: depositRates - from: BankingProduct to: BankingProductLendingRate type: has_many via: lendingRates enumerations: productCategory: BankingProductCategoryV2 (TRANS_AND_SAVINGS_ACCOUNTS, TERM_DEPOSITS, RESIDENTIAL_MORTGAGES, CRED_AND_CHRG_CARDS, PERS_LOANS, BUSINESS_LOANS, and others per CDS)