ConsumerDataStandardsAustralia / standards

Work space for data standards development in Australia under the Consumer Data Right regime
Other
321 stars 56 forks source link

Decision Proposal 031 - Detailed Account Payload #31

Closed JamesMBligh closed 5 years ago

JamesMBligh commented 6 years ago

This decision proposal outlines a recommendation for the final account payload defined in decision proposal 015. This one is for account details.

Feedback is now open for this proposal. Feedback is planned to be closed on the 1st November. Decision Proposal 031 - Detailed Account Payload.pdf

Please note the specific concerns. Also note that the date is very close to the scheduled date for publishing the first version of the standard. As a result I will respond with an amended version based on feedback to date on the 26th October.

anzbankau commented 6 years ago

As discussed during ABA meeting on 24/10/18, ANZ propose that 'accountCategory' be changed to 'productCategory'. For consistency, the same change should be made to the 'Basic Account' [#27] and 'Detailed Account' [#31] decision proposals. Given James' explanation of the intention of 'providerType' in the same discussion, we also suggest that it be changed to 'productName' (not 'accountType' as discussed). Accounts are instances of a product so the product represents its type. Since it's the name used by the provider (i.e. consistent with other channels but not consistently applied across providers - so not an enum) it's not 'productType'. The description should state that it's the provider's product name with no reliable relationship to the productCategory.

JamesMBligh commented 6 years ago

Please note, we have brought the feedback date back 1 day to allow for a draft standard to be published on the 2nd of November.

-JB-

da-banking commented 5 years ago

specificAccount$type The defined values for specificAccount$type do not cover all of the kinds of accounts that banks have. For example a transaction account would be a low interest account with a debit card, and a savings account might offer better interest than a transaction account, but only work through Internet Banking. We don't think these other kinds of accounts would carry any specific fields, so we do not propose to introduce other enum values and subtypes. Instead we recommend that the specificAccount$type be made optional and is set to one of the defined values only when an account has the additional data for one of the defined types.

loanAccountType The offsetAccountId may refer to an account that has not been shared with the third-party at the customers discretion. In this scenario, our preference would be to omit the property as though there was no offset account, rather than generate and maintain an ID token that would invariably get a HTTP 404 response if used on the /banking/accounts/{accountId} endpoint.

address We have no direct relationship between an account and an address. Our systems are customer-centric, not account-centric, and therefore addresses can only be related to an account via a customer who could be an owner or a signatory on an account.

We are unclear on the use-case that this inclusion is supporting, and it makes the "Detailed Bank Account Data" and "Customer Data" authorisation scopes ambiguous.

We recommend removing this property from the account object, or making it optional. The customer's address should be determined via the /common/customer/detail endpoint, or the #36 OIDC userinfo discussion if it is adopted.

Fees, discounts and rates We have made specific feedback regarding fees, discounts and rates on Decision Proposal 030 - Product Payloads, and won't repeat it here, though we would expect any decision made on the Product Reference Payload that was applicable here to be applied consistently.

JamesMBligh commented 5 years ago

Hi @da-banking, comments on feedback.

specificAccount$type - fair enough. Probably should be optional

loanAccountType - that sounds like a reasonable treatment. I'll add a comment along these lines to the description

address - some institutions have the ability to specify addresses at account level and at customer level which is why the address data is included here. We can make the field optional to accommodate institutions that don't capture the data at the account level

Fees, etc The changes here and on product will be synchronised

-JB-

JamesMBligh commented 5 years ago

@anzbankau, if we change providerType to productName that implies that the string is able to used for display rather than just as an identifier ('Name' normally implies displayable text). As this is a field specifically included to aid the bank I am fine with this but wanted to clarify.

Alternatives would be to call the field productType or to have productName and productType as two fields.

-JB-

jh-a commented 5 years ago

@JamesMBligh given the comments on the basic payload around accountID permanence, wouldn't there be a problem in a scenario where a data consumer requests basic access to an account, then wants to subsequently request detailed access to the same account.

It is difficult to understand how a random, alpha numeric code as an identifier only understood at the API layer could become sensitive. The lack of an immutable accountID is likely to cause problems for data consumers, and the rationale provided doesn't ring true, as this would be purely a data point understood at the API layer for the identification of resources and their sub-resources.

Account ID Permance As per a previous decision proposal record IDs (including the accountId) are designed to be permanent only in the context of a specific authorisation. The intent is to ensure that a new, and potentially sensitive, reusable identifier is not inadvertently created under the CDR regime. As such, there will be no intent to link the accountId to another data delivery mechanism.

anzbankau commented 5 years ago

S/RC/RD (181031-2)

MacquarieBank commented 5 years ago

Macquarie has the following feedback on the Account Detail Payload: • Should the specificAccount$type be Conditional (only required if the account is one of these types)?

NationalAustraliaBank commented 5 years ago

While NAB supports the need to provide detailed account data, before finalising the payload there is a need to update it to:

Common Object Types

Credit Card Account Type

Loan Account Type

This common object as defined is only applicable to term loans and not overdrafts/line of credit, because overdrafts and lines of credit do not have scheduled repayments.

missing fields

Detailed Account Data

WestpacOpenBanking commented 5 years ago

Westpac has preliminary comments and questions with regard to this proposal. We are likely to provide additional feedback, including on the suitability and fairness of the proposed structure for different product types during the draft standard feedback period.

Many of our comments and questions on this proposal, including those made about the overall structure are common with those given for the product payload proposal and we won’t repeat them. Instead we provide the following additional comments and questions:

WestpacOpenBanking commented 5 years ago

We're including our feedback for the generic product payload proposal here because we reference it above and we were not able to post it before closure on that page.

Westpac has preliminary comments and questions with regard to this proposal. We are likely to provide additional feedback, including on the suitability and fairness of the proposed structure for different product types during the draft standard feedback period.

Payload Structure

A given product may have many different available combinations of features, fees, constraints, eligibility criteria and rates associated with it. Although elements in arrays can appear more than once, this approach risks ambiguities and there are likely to be many cases where the only way to represent these combinations in the current structure is as separate resources (“product offers”) with separate productId values.

The use of enumeration types and the additionalValue field in a key value pair fashion is unusual. Example:

{
  "data": {
    "productId": "1234",
    "lastUpdated": "2018-10-30T21:58:52+00:00",
    "accountCategory": "Term Deposit",
    "name": "Term Deposit",
    "description": "A Westpac Term Deposit lets you invest your money with the certainty of a fixed interest rate and a choice of terms.",
    "isNegotiable": "False",
    "depositRates": [
      {
        "depositRateType": "FIXED_MONTHS",
        "rate": "3%",
        "additionalValue": "24"
      }
    ]
  }
}

Use of the normal JSON syntax for representing this data instead as

{
  "data": {
    "productId": "1234",
    "lastUpdated": "2018-10-30T21:58:52+00:00",
    "accountCategory": "Term Deposit",
    "name": "Term Deposit",
    "description": "A Westpac Term Deposit lets you invest your money with the certainty of a fixed interest rate and a choice of terms.",
    "isNegotiable": "False",
    "depositRates": [
      {
        "FixedMonths": 24,
        "rate": "2.40%"
      }
    ]
  }
}

would:

{
  "data": {
    "productId": "1234",
    "lastUpdated": "2018-10-30T21:58:52+00:00",
    "accountCategory": "Term Deposit",
    "name": "Term Deposit",
    "description": "A Westpac Term Deposit lets you invest your money with the certainty of a fixed interest rate and a choice of terms.",
    "isNegotiable": "False",
    "depositRates": [
      {
        "minFixedMonths": 24,
        "maxFixedMonths": 35,
        "rate": "2.40%",
        "calculationPeriod": "monthly",
        "criteria": [
          {
            "and": [
              {
                "minAmount": "5000",
                "maxAmount": "250000",
                "minimumAge": "18"
              }
            ]
          }
        ]
      }
    ]
  }

We suggest that properly structured payloads are defined for each product as in the UK. These definitions could be simple at first and be iterated on over time. Initially these structures would be defined for term deposits, savings accounts, transaction accounts and credit cards before moving on to other product types. For the reasons outlined above this approach will be more flexible and reduce the need for frequent endpoint versions overall.

Updating of product information

Caching, filtering and pagination

URIs

Features

Eligibility

Deposit rates

Lending rates

Fees and discounts

Other Comments

JamesMBligh commented 5 years ago

@jh-a I would refer you to the discussions and proposal on id permanence (https://github.com/ConsumerDataStandardsAustralia/standards/issues/9)

-JB-

JamesMBligh commented 5 years ago

@NationalAustraliaBank, apologies for missing the comment on balance$type in proposal 27. I assume it was this line:

If balance$type is used as the sub-type field how will the scheme ensure that banks use consistent balance structures for similar product types?

The response is that there is no need for consistency. The consistency is implied from the choice of balance type. If a deposit balance is presented it is because it is an account that is best represented as a deposit account and vice versa for a lending balance.

-JB-

JamesMBligh commented 5 years ago

As we are publishing tomorrow we’re being strict with feedback closure. Here are responses to feedback provided.

Please note that feedback that was also provided on product data (as their is overlap) won’t be commented on again here. Any relevant changes to product will be carried into the equivalent structures in this payload.

General Feedback

TDs

Credit Cards

Loans

Fees

Rates

-JB-

JamesMBligh commented 5 years ago

@WestpacOpenBanking, I have provided response to your comment regarding product payload on the product payload thread.

-JB-

JamesMBligh commented 5 years ago

The finalised decision for this topic has been endorsed. Please refer to the attached document. Decision 031 - Detailed Account Payload.pdf

-JB-