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 015 - Account/Transaction End Point Structure (specific URIs) #15

Closed JamesMBligh closed 6 years ago

JamesMBligh commented 6 years ago

This decision proposal outlines a recommendation for the URIs for account/transaction API end points. This proposal overlaps significantly with the ACCC rules so it has been authored to align with the proposed rules framework as much as possible.

Feedback is now open for this proposal. Feedback is planned to be closed on the 5th October. Decision Proposal 015 - Account-Transaction End Points.pdf

da-banking commented 6 years ago

These endpoints are broadly as expected and acceptable, with the following observations:

JamesMBligh commented 6 years ago

Thanks @da-banking. All valid feedback. Paging for direct debits is a good idea and a standard for multi word resource names is needed.

Regarding payments - this data is not currently listed in scope in the draft ACCC rules framework so I haven't included it in the proposal.

Regarding the POST for balances, the decision regarding pluralisation indicates that a complex query should be a POST on a sub-resource so that a POST can still be used for creation of a collection member. In this case "balances" is not the collection, "accounts" is the collection so applying the POST to "balances" in this manner is aligned to the previous decision.

-JB-

deboraelkin2 commented 6 years ago

Given previous discussions around complex searches being handled via POST verbs, I think it would make sense to also include POST /banking/accounts/transactions POST /banking/accounts/{accountId}/transactions

This would allow to implement complex search functionality on transactions, such as find all debits made in the last 30 days where the description includes XXX and the amount is greater than $10. Of course, this may prove redundant if the parameters for the corresponding GET operations can handle such type of queries.

WestpacOpenBanking commented 6 years ago

Westpac broadly supports the decision proposal. We have the following remarks and questions:

bazzat commented 6 years ago

The ABA Open Banking Technical WG is supportive of this decision proposal, with a couple of comments:

DeloittePE commented 6 years ago

Deloitte concurs with the proposal.

We note the discussion about using POST for complex searches. This aligns with an RPC-style of API request and our experience is that virtually all RESTful APIs inevitably encounter use-cases which require RPC operations. Typically these involve a search or a validation.

Our suggestion to differentiate a POST collection operation from an RPC POST operation is to use a verb to name the subresource on the associated URL. This was discussed in decision 08 with the example of the form:

POST /accounts/transactions/search

We note in this case with aggregating balances over a complex-filtered collection of accounts, that it is difficult to naturally arrange for a verb as the subresource. With pragmatism and simplicity in mind, we concur with the current proposal.

TKCOBA commented 6 years ago

COBA’s view is that the ‘POST’ HTTP Method would not be required. With respect to supporting pagination (a front-end driven use case), our view is that this may inadvertently encourage ‘chatty calls’ which would be detrimental in high volume use cases. On this basis, COBA suggests imposing a maximum number of response records, such as 500 for API calls (any calls beyond the maximum could be served by asynchronous options). Furthermore, there does not appear to be any reference to sorting the responses (such as. by date or description). While sorting is also a front-end driven use case, we suggest that sorting be performed at the source as this would be more efficient and would add immense value to front-end use cases.

NationalAustraliaBank commented 6 years ago

NAB is also broadly supportive of this proposal.

We would like to thank Data61 for hosting the meet-up earlier this week. The open conversations were useful to help understand the thinking and rationale for why and how the Australian standards may deviate from that of the UK. For the benefit of those who were unable to attend we would like to restate a few points that were discussed during the meet-up.

perlboy commented 6 years ago

Hi there,

Aware that the comment period closed yesterday I'll keep this short.

I agree with the proposal as it stands, the only thing I would note is the explicit definition of /directdebits.

This implies a specific product type that allows direct debits. Other account types classify these as automatic payments such as scheduling EFT or BPAY. Additionally each payment method has it's own submission requirements. Maybe this can be all modelled into a generic payee details but this could lead to unintended consequences too.

Is it the projects intention to make additional endpoints for each payment type? It seems like over time the namespace could get quite polluted? Perhaps a child URI (/payments/[paymenttype]) is a little more future proofed?

Thanks,

Stuart

JamesMBligh commented 6 years ago

Response to the feedback is as follows...

Payloads Some of the feedback is actually related to the specific workings of the end points via the payloads and query parameters. I will defer responding to this feedback until the payload proposals begin to be put forward.

POST For Transactions I will include this for completeness. If the query terms do not warrant it then we can always drop it.

Mandatory End Points All end points included are considered mandatory for compliance.

Sub-resource vs Verb For the complex queries, this was addressed in a previous decision and I have responded above. A non-collection sub-resource will work as a holder for a complex query, especially if that is the data being sought. If the main collection data us being sought then a dedicated sub-resource (i.e. a verb) will need to be introduced. This will make me feel itchy and in need of a shower but it will likely be necessary.

Sorting The inclusion of sorting is a good callout. This would need to be considered alongside the filtering criteria.

Chatty Calls I think this should be able to be addressed by NFRs and the fact the differentiation between number of calls allowed when a user is logged in or disconnected. When w come to NFRs we may need to be explicit about what the community of providers and consumers of data consider to be anti-social behaviour so that apps don't get too chatty.

Direct Debit In this context, Direct Debit does not refer to a DE of Transfer style payment. It refers to an authorisation given to a 3rd party to directly debit an account (say to pay a utility bill).

-JB-

JamesMBligh commented 6 years ago

I have now closed consultation on this decision. A recommendation incorporating feedback will be made to the Chair in due course.

-JB-

JamesMBligh commented 6 years ago

The finalised decision for this topic has been endorsed. Please refer to the attached document. Decision 015 - Account-Transaction End Points.pdf

-JB-