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 048 - Draft Standards Feedback Cycle 4 #48

Closed JamesMBligh closed 5 years ago

JamesMBligh commented 5 years ago

This issue has been opened to capture feedback on the standards as a whole. The standards site will be incrementally updated to accommodate this feedback. This is the fourth cycle of holistic feedback for the standards.

-JB-

anzbankau commented 5 years ago

Hi James,

A couple of small points/clarifications this week.

JamesMBligh commented 5 years ago

Hi @anzbankau, responses below:

Hope that helps, if any of the above doesn't make sense let me know.

-JB-

jnflint commented 5 years ago

Hi James, I am not associated with any organisation so I hope you don't mind me reviewing the standard. The default values for some of the parameters are of the wrong type. As per the extract below, the default values are quoted. e.g. ParamPage and ParamPageSize are quoted strings - "default": "1" should be "default": 1 and "default": "25" should be "default": 25 isOwned default value should be "default": true i.e. without the quotes.

This trips up some strict validators.

I base the correct format from https://json-schema.org/understanding-json-schema/reference/numeric.html

 "ParamPage": {
      "name": "page",
      "in": "query",
      "description": "Page of results to request (standard pagination)",
      "required": false,
      "type": "integer",
      "default": "1"
    },
 "ParamPageSize": {
      "name": "page-size",
      "in": "query",
      "description": "Page size to request. Default is 25 (standard pagination)",
      "required": false,
      "type": "integer",
      "default": "25"
    }
"isOwned": {
       "type": "boolean",
       "description": "Flag indicating that the customer associated with the authorisation is an owner of the account.  Does not indicate sole ownership, however.  If no present then 'true' is assumed",
       "default": "true"
    }

jf

JamesMBligh commented 5 years ago

Thanks for picking that up @jnflint. All reviews are welcome. Feedback is judged on merit, not source of origin.

I will add these changes to the backlog of minor corrections to be made.

-JB-

anzbankau commented 5 years ago

James, Just for clarification and confirmation please, the feeType = 'EXIT' enum (for 'Product Fee Types' and 'BankingAccountFee' in 'Product & Account Components' section) is for early/abnormal/unscheduled/irregular/customer-initiated termination/closure of an account (sometimes called 'break fees') as opposed to 'normal' termination/closure such as at loan maturity where security-related fees (e.g. release of mortgage) may apply. Could the description please be amended to clarify this (in a more succinct way than stated here). (Renaming it to 'EARLY_EXIT' is probably not warranted given the common understanding of 'EXIT'). Thanks.

JamesMBligh commented 5 years ago

Hi @anzbankau, the EXIT type would apply to both types of fees (early exit and normal maturity). The difference can be expressed in other fields such as the name or additionalInfo. If this type were implied to be only early exit then there would be no type for normal closure.

-JB-

JamesMBligh commented 5 years ago

For those that may not have noticed I have now updated product reference with recommendations regarding product fees/discounts and rate tiering. I will be completing the remainder of the recommendations on product reference shortly.

I suggest that feedback for product reference be moved to this thread.

-JB-

JamesMBligh commented 5 years ago

For the product reference changes for fees/discounts and rate tiers I deviated from the ABA recommendation as follows as a result of converting the recommendations to swagger:

-JB-

anzbankau commented 5 years ago

James, Could a 'tierName' string property please be added to the TieredRateType to represent the 'dimension' or collection of like tiers. For example 'Term' tier (e.g. 1 year) and 'Balance' (e.g. $10,000 - $100,000) subtier for term deposits. This will enable data consumers to provide 'column' and 'row' headers for presentation to users and better enable cross-comparisons - rather than trying to interpret the meaning or comparison-basis of a dimension on the tierUnitOfMeasure and other properties. Note: We consider this just an omission in the original proposal for tiering. Note: Since the model is flattened (to rate level) the alternative to have additional properties at the higher level of ProductDepositRate.[depositRateTierName, depositRateSubTierName] and ProductLendingRate.[lendingdepositRateTierName, lendingdepositRateSubTierName, lendingdepositRateSubSubTierName] is no less redundant and adds more properties to the specification. Thanks.

JamesMBligh commented 5 years ago

A tier name and sub-tier name are good additions. I will add these in.

-JB-

anzbankau commented 5 years ago

James, This probably warrants further discussion, but with BankingProductDetail.[depositRates, lendingRates] being arrays, each instance (of type [BankingProductDepositRate|BankingProductLendingRate]) should have a single rate, with the other properties representing the qualifying criteria for the rate to apply (including the intersecting tiers in a ‘multi-dimensional’ model). The new standards provides an array of tiers, allowing a set of ‘criteria’/’conditions’ (or set thereof when representing the intersection of multiple dimensional tiers) to apply to a single rate. While this may coincidentally be the case, I doubt that this was what you intended.

Option 2 in the ABA proposal used a nested structure, but it had rates within the nesting so that they were associated with all the necessary ‘criteria’. However option 1 was proposed because it ‘flattened’ the multi-dimensional model based upon the rate (much like a fact table in a dimensional model) to preserve the simple ‘array-of-rates’ structure that supports most rates. ...Rod

JamesMBligh commented 5 years ago

This could have been my misinterpretation of the ABA proposal. It was unclear if the tier object was intended to be plural or not. If the feedback is to change tiers from array to singleton then I’m happy to do that. Is that what you are recommending Rod?

-JB-

JamesMBligh commented 5 years ago

I have made the above change and also updated the product category enumeration values as per the ABA recommendations. I believe that all feedback for product reference is now incorporated into the standard.

I would appreciate a review as to whether any items were missed or if further changes were made.

-JB-

anzbankau commented 5 years ago

Hi James, some product related questions we have for GET /banking/accounts/{accountId}

Thanks

anzbankau commented 5 years ago

Hi James, one more - this time on Transaction end points

Thanks

anzbankau commented 5 years ago

Re: Proposal for Product Reference API for Rate Tiers within Deposit and Lending Rates

The ABA proposal (and selection of option 1) was guided by not making too much of a change but since James suggested tier arrays, I incorporated them in a revision of the proposal with a TierSet type to support aspects of the structure in option 2. The following is a stripped-down, compressed format of the proposed schema and examples to make it easier to appreciate ‘tierSet’ examples (also in a vain attempt to fit it into a post). If this is acceptable a tabular specification (update to previous document) will follow.

Schema (Non-elementary types are of the form :{}. Product:{name,rateSetType,repaymentType ,depositRates=[DepositRate:{rate,rateSetType,calculationFrequency,applicationFrequency ,[tierSet=tiersSet:{setName,name,unitOfMeasure,valueMinimum,valueMaximum} ] ] } or ,lendingRates=[LendingRate:{rate,rateClass,repaymentType,rateSetType,calculationFrequency,applicationFrequency ,[tierSet=tierSet:{setName,name,unitOfMeasure,valueMinimum,valueMaximum} ] ] }

Enumerations Product.repaymentType=[PRINCIPAL_INTEREST|INTEREST_ONLY] [Product|DepositRate|LendingRate].rateSetType=[VARIABLE|FIXED] LendingRate.rateClass=[INTEREST|COMPARISON]

Example: Transaction and Savings {XBank Transaction,FIXED,,[{0.4%,,P1D,P1M}]} // FIXED is inherited to all depositRates (singular in these cases) – but could be re-stated {XBank Savings,FIXED,,[{1.6%,,P1D,P1M}]}

Example: Term Deposits Note: Key tier discriminator is applicationFrequency {XBank Term Deposit,FIXED,,[ // Interest credited: {1.2%,,P1M,,{Term,11 < 12 Months,MONTH,11,12} // at maturity ,{1.19%,,P1M,P1M,{Term,11 < 12 Months,MONTH,11,12} // monthly ,{1.19%,,P1M,P3M,{Term,11 < 12 Months,MONTH,11,12} // quarterly ,{1.2%,,P1M,P6M,{Term,11 < 12 Months,MONTH,11,12} ] } // half-yearly

For the full post see the attached document. Proposal Product Reference Rate Tiers.20190227.docx

NationalAustraliaBank commented 5 years ago

Summary

NAB welcomes the opportunity to continue to provide feedback to this cycle of the draft CDR standards.

Our response will primarily focus on the Product and Account schemas.

Product

Product - General

Product categories have not been updated throughout the whole standard. It is now in the response messages in all the get messages which still include the old product categories.

Product - Eligibility

As per feedback to https://github.com/ConsumerDataStandardsAustralia/standards/issues/39, we recommend the inclusion of another enumerated value for eligibilityType to indicate that a product is available to an individual / natural person. This feedback has not been applied, please address as it is key to be able to differentiate between products available only to an actual person, only to a business / trust or available to both.

Product - Fees

Product - Rates

depositRateType

lendingRateType

We question again the levelling of some of the rate types. The following bullets are our observations of where Conditions of a rate have blurred with lendingRateType:

Can we please change the paymentStructureType field to interestPaymentDue (or something similar) as IN_ADVANCE and IN_ARREARS refers to when interest is paid and is not about the payment structure

BankingProductRateTier

We need to do some more worked examples to prove whether tier & subTier are sufficient, but the initial feel is it not quite flexible enough. This may be better represented as an array allowing more than two levels (to show $100k-$500K, 1yr Fixed, LVR 60% - 80%, IO-Advance, Investment Purpose appears to need three tiering groups but our read of the proposal only allows for two so LVR would need to be captured in additional info. This problem won't present itself fully until we have Home Lending products in scope so may be held over if this can be looked at yet. Another option may be to change subTier into an array.

Account

Account Balance Data Field

v0.2.0 of the CDR standard has removed balances from account list endpoint, but balances have not yet appeared in the account details endpoint as previously advised. Is this an oversight?

Account - General

Account and Product

We suggest the CARD_ACCESS Product Feature Type be modified to allow use of the additionalValue field (currently NA) to allow text to list the names of the different cards it may be able to be linked to (e.g. to allow a narrative like "Account may be linked NAB Visa Debit card, NAB Platinum Visa Debit card, or any eligible NAB Credit Card")

Schedule Payment Endpoint(s) Definition

We look forward to providing feedback on the proposed schedule payment related endpoint(s), when they are released. Will this be captured in a separate Decision Proposal / GitHub issue?

Administration Endpoint(s) Definition

We look forward to providing feedback on the proposed administration related endpoint(s), when they are released. Will this be captured in https://github.com/ConsumerDataStandardsAustralia/standards/issues/18 ?

anzbankau commented 5 years ago

Hi James,

For the transaction filters, we understand there is the following pending update:

Get Transactions end-time description will be amended to say “minus” 90 days. Based on feedback from commbankoss the 100 days will be changed to 90 days to approximately match 3 months.

However based on this the current description of end-time being 'effective time at or before this date/time' would also need to be updated to say 'effective time at or after this date/time'. Or the default conditions could be switched so that start-time is earlier than end-time.

Thanks.

MacquarieBank commented 5 years ago

Decision Proposal 048 - Draft Standards Feedback Cycle 4

In the Product Detail API, we would like to see the addition of the following enumerated values to the BankingProductFeature.featureType field:

  1. DISCOUNTS - a feature type that can describe what types of discounts are available to consumers, such as discount gift cards, discount travel, etc …
  2. BONUS_REWARDS - a feature type that is used to show how many bonus reward points are given for switching to a product. This is primarily for credit cards. This is analogous to an introductory interest rate, which we note has been included as a rate type in the API. We can foresee that this would be useful in comparing credit cards.
  3. BALANCE_NOTIFICATIONS - ability for near real-time notifications to be sent to a consumer when their balances changes (e.g. payment, interest, etc …). This is a highly valued feature, and we could see this as a differentiator when comparing deposit products.
  4. OTHER - a generic feature type that can be used to describe all other features of a product. We feel this is really important, as it is the additional features that can differentiate a product, and help customers understand pricing differences when comparing products. We also note that the UK spec includes OTHER as a featureType.
anzbankau commented 5 years ago

James, If you could please align the Product Category enum lists in their various forms in Product and Account including parameters e.g. Get Accounts product-category (it still has PERS_AT_CALL_DEPOSITS etc.). Thanks

JamesMBligh commented 5 years ago

Hi All, some response to the minor queries since the last response:

Syncing Account Payload Yes the structures in the account end points including features, rates etc will be synced with the Product Reference changes. Some of this has occurred but it isn't yet complete

Active vs Available On the topic of activated vs available features being included in the Account payloads: I will add an optional boolean flag labelled isAvailable. If this flag is absent or false it will be assumed the feature is activated. If it is true it will be assumed the feature is available but not yet activated.

Account Data Accuracy Responding to the comment below:

It is understood that for product end points the best accuracy of the information possible in the data structure should be provided. However for account - if the fees or features are too complex to accurately represent in the available data structure, should it not be included in the response? For both Account and Product data it is up to the holder how comprehensively they represent the data they hold so that they are in conformance with regulator requirements (including ACCC rules but also other, industry specific, regulators). The standards do not make a specific statement on this topic outside of the definitions of optionality and the NFRs related to data latency and extent.

Consent To Transaction Extent The question regarding how to deal with transactions periods requested outside of consent is interesting. There is no inclusion in the regime at the moment for data based consent for data extent. Data based consent is only included for the duration of authorisation. Data extent in response to queries is not limited by consent but by the data extent NFRs. In light of this, a request that queries for data outside of the NFR period (e.g. prior to 1/1/2017 or more than 24 months in the past for open accounts) should be covered by the existing rules around empty result sets. An error should not be returned but an empty, or truncated, result set should.

Clarification Over Previous Feedback Yes I will changing the default 100 days rule to 90 days as per previous requests.

-JB-

JamesMBligh commented 5 years ago

Response to additional Product Reference feedback is below.

Before providing the feedback, however, I would note that this will likely conclude the feedback taken on Product Reference. The feedback is beginning to become circular with requests for changes followed by requests to reverse those changes. We are also starting to get to the point of diminished returns. After this round of feedback I intend to produce a final decision document setting in place v1 of the schema.

Natural Person Eligibility Another enumerated value for eligibilityType to indicate that a product is available to an individual / natural person will be added.

Fee Types Requests for further simplification of transaction types is counter to previous feedback, I think we have a good compromise currently. Instead of removing I will add a TRANSACTION type that would aggregate the four more specific types.

Rates As Enum I considered this but decided to use specific fields as additional enum values are usually more of a breaking change than additional fields. Also the later feedback on comparisonRate supports this. There are times when some of the rates may occur simultaneously. If new rate types end up being frequently added I am happy to revisit this in the future.

Fee Floor I would suggest that "the greater of $2.50 or 3% of the transaction amount” would be accommodated in additionalInfo with the preferred fee type represented.

Discount To Fee I will add a feeRate to discount which would cover the discount being a percentage of the actual fee.

discountEligibilityType I will update discountEligibilityType to include BusinessCustomer and PersonCustomer similar to our Product Eligibility

Discount Rate Types Disagree on the removal of INTRODUCTORY. Will add MARKET_LINKED and FLOATING to match lending rates

Lending Rate Types I will add PURCHASE as a type

Agree that INTRODUCTORY, DISCOUNT, BUNDLE_DISCOUNT_FIXED are variations that could be captured in additionalInfo but these are variations that would be useful to have in structured form based on previous feedback so I will not remove them

Will include comparisonRate and remove COMPARISON_FIXED and COMPARISON_VARIABLE

Will change the paymentStructureType field to interestPaymentDue

Will make tier an array again as this would appear to make this more expressive and address the areas of concern. Where the additional expressiveness is not required an array with a single element would be fine

Feature Types CARD_ACCESS Product Feature Type will be modified to allow use of the additionalValue field (currently NA) to allow text to list the names of the different cards it may be able to be linked

I will add a dicount feature type for things such as discount gift cards, discount travel, etc. This will be called COMPLEMENTARY_PRODUCT_DISCOUNTS to avoid confusion with fee discounts

BONUS_REWARDS will be added show how many bonus reward points are given for switching to a product

A NOTIFICATIONS feature will be added to describe enhanced notifications capability. The more generic name (rather than the suggested BALANCE_NOTIFICATIONS) will allow coverage of notifications for wider range of events

An OTHER feature type will be added

-JB-

JamesMBligh commented 5 years ago

Regarding the remaining feedback on Accounts:

Balances In response to the comment

CDR standard has removed balances from account list endpoint, but balances have not yet appeared in the account details endpoint as previously advised. Is this an oversight?

There is a fine line between “oversight” and “haven’t got to it yet” but it is appreciated that this has been raised.

repaymentType & loanPurpose Regarding the comment that repaymentType & loanPurpose appear to have become reversed, this will be fixed once investigated.

Rate Tiers Rate tiers will not be added to the account structure as the expectation is that rates have been applied at the time of account origination

Simplified Balance The feedback on simplified balance structure has not been rejected. It is under consideration

Minor Changes For TDs the enumeration will be modified to ROLL_OVER and PAY_OUT_AT_MATURITY to more clearly show future tense

-JB-

JamesMBligh commented 5 years ago

I will be closing out this feedback thread tomorrow (Friday 7th) and opening a new thread.

-JB-

anzbankau commented 5 years ago

James, Common Field Type: MaskedAccountString Just a minor suggestion that was raised by @BrianParkerAu in 39 here but may still be in your work queue. Could the description for BankingAccount.maskedNumber simply state: 'A masked version of the account i.e. BSB/Account Number, Credit Card PAN or another number'. The additional text 'this should be formatted with each digit masked and the last three digits unmasked' duplicates and conflicts with the type definition of MaskedAccountString, which states last 4 characters are unmasked. Thanks.

AmexAUopenbanking commented 5 years ago

Decision Proposal 048 - Draft Standards Feedback Cycle 4

Regarding the Product API, we agree with previous feedback on the need for the enumerated value of ‘Other’ as the current list does not currently describe the vast number of features that can be associated with different Credit Cards. Such benefits are important for the comparison of products that will best suit a customer’s needs. Ideally further consideration could be given to ways to describe key feature attributes instead of having to rely heavily on the additionalValue field (free format string). For example consider optional and common fields like - Feature Name, Loyalty Points Earn Rate, Eligibility, Value, Frequency etc.

WestpacOpenBanking commented 5 years ago

Account Addresses

Previously, we have communicated our concern about the leakage of account addresses outside of the customer security scope and recommended that the BankingAccountDetail.address field is removed.

An account may have more than one address associated with it. These may not be explicitly marked for correspondence, and we don’t always store a shared address. These addresses may be those of third parties who haven’t consented to have their data shared. We may not always be aware that an address is an address of a third party. Aside from the privacy issues, an outcome where sensitive information or perhaps a new credit card is accidentally mailed to third parties by data consumers is undesirable. For these reasons, we re-iterate our concerns and would appreciate guidance on the handling of the scenarios mentioned if the field is to remain.

This concern has also been recently been reinforced by the (research) flow prototypes published by Data61 in the CX Report. These prototypes did not present this detail prominently. Additionally, it was indicated that the tested permission language “Account mail address” was not easily understood by research participants.

URI Structure

We have also posted following feedback to the security working group issue register.

The draft technical standard specifies a <provider path> for resource endpoints. We suggest that explicit requirements are also published for the endpoints in the security standard. We request that the following assumptions are accommodated:

Issues related to currency

Questions and comments related to the representation of product data

We have the following queries and comments in relation to the representation of products:

Other feedback and questions

We also have some minor feedback and questions. Many of these points are related to the product endpoints:

anzbankau commented 5 years ago

James, Re: Mandatory/Optional Fields This may just be in your catch-up list, but we weren’t sure if your great post here summarising the Data61 position has been reflected in the standards here. If you could please confirm. For example, the last bullet point covers the expectation derived from the CDR that it’s the customer’s data so that if it has been recorded by the provider it should be present in the payload. The current standard only seems to cover schema compliance.

You must be sick of this topic, but the following suggested additions don’t go over old ground (as far as we can tell), but would provide consistency to assist payload consumers:

The last item would require Mandatory fields with arrays that state the array may be empty to be made Optional so that it better reflects the intent at the schema level (where it is obvious) rather than embedding the optionality rule in the description. I'm sure we're all scanning the Required column (or filtering a spreadsheet using it) only to get tripped up by Mandatory fields that, on further investigation, are just arrays that can be empty. And there's nothing special about an array to require it for schema compliance when it is logically optional.

JamesMBligh commented 5 years ago

I left this thread open a little longer by request for a few final comments to be submitted. I have now locked the thread and will respond to the final comments above. Following that I will open Feedback Cycle 5.

-JB-

JamesMBligh commented 5 years ago

@anzbankau. Synchronisation of the descriptions of the masked types is in my backlog. As per the feedback to issue #39 I will be making both of the types to describe the showing of 4 digits.

-JB-

JamesMBligh commented 5 years ago

@AmexAUopenbanking. There has been significant discussion around the granularity of feature types and feedback from the community has been conflicting with some participants arguing for low resolution categories and some arguing for high resolution, specific, types. The current position (which, of course, can be modified at a later date via the versioning strategy) is a compromise level of granularity with the expectation that OTHER and additionalInfo would be used to provide greater detail.

This will be the position for v1 of Product Reference.

-JB-

JamesMBligh commented 5 years ago

@anzbankau. Regarding optionality, I will take your suggestion that the representation of optionality in the standards isn’t complete and will extend it based on previously stated positions in GitHub.

-JB-

JamesMBligh commented 5 years ago

Feedback in response to @WestpacOpenBanking.

Some of this is a reiteration of product reference feedback already supplied so I will attempt to maintain consistency in response.

Account Addresses The concerns raised have been raised before. Note that the concerns regarding addresses that may belong to another entity is covered by the rules, flagged by ACCC, for the management of joint accounts. It is anticipated that these rules will provide a foundation that will address these concerns as it will address consent for sharing of data where ownership is potentially shared. The current payloads will remain in place as has previously been stated.

In regard to CX language findings, it is definitely the case that the difference between an Account level address and Customer level address has been something that needs to be dealt with in the language presented during consent. The CX stream are seeking feedback on this, and other topics, via Medium.

URI Structure Accommodation for different base paths has been raised previously. This will be addressed in the Discoverability proposal that is pending. It is agreed that different base paths for different purposes would be advantageous.

Currency The suggestions regarding currency will be reviewed. It is the goal of the standards to be consistent so we will review with that lens in mind.

Product Reference Responses to feedback regarding Product Reference.

Other Feedback Will review the Other Feedback suggestions and will include results directly in the standards documentation. If anything is misunderstood or missed a query will be raised in feedback cycle 5.

-JB-