-
Notifications
You must be signed in to change notification settings - Fork 56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Decision Proposal 154 - Enhanced Error Handling: Error Code Payload Structure and Transition Arrangements #154
Comments
Related Decision Proposals open for feedback: |
Intuit welcomes the opportunity to provide feedback on DP154. Option A2: We are supportive of it. Option B1: We are supportive of it. However, can we please get clarification on how the old/custom and new code will co-exist? We are assuming the new code/title will appear in new payload structure. The old/custom code/title will appear in the “meta” block? In addition, what if DHs want to modify their “old” code to a new custom code at the same time? The existing “meta” structure does not cater for multiple custom data. Should the old be presented in a Can we please also request extension of this option in that with any change of error codes/titles, the DHs are required to provide a documented mapping in their online developer portal? This, in essence, is no different than documenting release changes. The rationale here is ADRs can’t be waiting for an error to occur to organically accommodate the change. E.g. if an error is not encountered by ADR just before Feb 2022 it will be too late for ADRs to respond in a compliant fashion. Option C2: Error responses are really no different than “success” responses. They are all part of the API contract that needs to be upheld. If there’s a change to the contract then the client side needs to be aware and process accordingly. For this reason, we are not supportive of option C2 on its own. Instead, we are supportive of option C3 where version negotiation with custom headers such as Obligation Date: We would recommend a deprecation of old error code(s)/title(s) 12-month after new code(s)/titles) are introduced. The rational is to provide adequate time for ADRs to discover change organically and plan for its upgrade. Bear in mind without proper documentation from DHs, ADRs can only discover error change when they occur. |
Our interpretation of the proposed transition arrangements as described in Option B1 under Payload structure option A2 is that old and new error codes during transition would be provided as separate objects in the error object as per the following example: Pre-transition:
During transition period:
Post transition:
We would appreciate it if DSB could confirm that this interpretation is accurate. If the interpretation is accurate, then this transition approach and payload structure may cause issues, because existing clients would assume that two distinct errors have occurred and behave on that basis. A better approach would be to ensure that changes to the error payload structure are non-breaking from the point of view of existing clients. Hence, instead of Option A2, we recommend that:
Example error response under this representation:
The advantage of an approach similar to this is that transition arrangements are simplified and less likely to cause issues for existing clients – the additional fields are added to server functionality and clients are updated at a later date. The representation is also more elegant in cases where no standardised URN has been defined. It is also unnecessary to set a depreciation date using this approach. We agree with the suggested approach for response versioning – a carefully chosen URN scheme, non-breaking changes to error responses and the ability add new errors over time should avoid transition issues over time and the costs associated with version negotiation. We strongly oppose Option C1 and Option C3 – in any given implementation it is likely that many solution components which may generate errors are not suited to implementation of different behaviour based on a negotiated version. Noting that there is significant change for data holders scheduled for 2021 we recommend a February 2022 implementation date. Modifying existing solutions to provide standardised error codes because a high proportion of solution components are likely to be affected. Data holders are already working to implement significantly increased scope during the November timeframe, including Phase 2 products for non-major brands, business and corporates and white-labelled products. |
On behalf of AGL Energy CDR working group. We are supporting of We are not supportive of We don't have a specific recommendation for "Transition arrangement" or "Obligation dates" as that's not applicable for energy at the moment. |
NAB welcomes the opportunity to provide the following feedback in relation to DP 154: Payload Structure - NAB supports the proposed URN structure for the 'code' field of the error object Specific error codes that extend the standardised error codes - NAB supports 'Option A2:Custom error codes as additional fields in ResponseErrorList_errors' Transition Approach-
Response Versioning - NAB supports 'Option C2: No end point versioning' |
We broadly agree with the approach of avoiding impacts to data recipients in this transition however we are unclear that the recommended option (Option B1: Return both old and new error codes during transition organic transition) will achieve this. If for example a Data holder has to change their implementation to return a different HTTP response code - this will have to be a hard transition at a agreed point in time. Additionally, as per the analysis posted by Westpac, the error payload response changes will still have a impact to consumers in order to interpret correctly during the transition period. Based on these two considerations we propose it will be more straightforward (on both data recipients and data holders) to choose 'Option B3 : Cutover to new error codes on a fixed obligation date'. On the timing of these error handling decision proposals we do have concerns due to the the large amount of scope currently targeting the November release. We recommend it would be appropriate to be scheduled for February 2022. |
Feedback from Origin Energy on DP-154From our review of DP 154, 155 & 156 , it appears these papers will be still bit focussed on Banking sector at this stage. However, we have reviewed the paper from energy sector perspective and generic architecture & design preference.
As mentioned in the DSB call, Origin will work with DSB in future consultations and provide input on energy specific error codes and scenarios. |
Decision A Of the two options presented, Option A2 is supported It is noted that status has been introduced into the errors structure. Is this intending to align closer with the jsonapi errors structure, similar to the discussion around the source attribute in the original 119 proposal? If so will this be considered mandatory or optional? When would the status represented in this error structure be different to the http level status code returned by the operation? Decision B I suspect in a number of implementations, additional custom coding will be required to return multiple errors in different representations for the same event if that is the intent of options B1 and B2. Returning multiple error codes for the same event for a transitionary period will require changes to be performed twice, once to introduce the new representation and then again to remove the previous error representation. Through this interim period, if there are any consumers of APIs that are using errors information in their processing, they must add additional logic to traverse the errors and determine whether the existence of multiple errors means the same thing, using a combination of the error and meta to de-duplicate. Given the proposed obligation timing, it would appear that non-major ADIs will have a situation where a subset of API operations (from the July obligation) must support the combination of standard error codes and custom codes for the same event but API operations delivered from the November obligation will only support the standardised error codes. In the interests of avoiding this transition complexity, options B1 and B2 are not supported. The preference is to be able move directly to the new error codes, with an obligation date set when this must be completed. Decision C Option C1, while ideal from a purist sense will result in every endpoint being versioned and the need to support multiple versions for an intervening period (in some cases partially across the API base, depending on the timing of the obligations against the non-major's delivery phasing as per previous comments). Given the consumer base is still relatively small is the cost of this approach warranted? Won't data recipients largely be forced to support the new model from November when non-majors deliver a set of functionality only to the latest version? This option is not supported. Option C2 is supported for this initial introduction of error codes. The structural changes to errors are additive in nature and the initial introduction of a standardised error catalog into the standards for this situation is no different to a DH going live with their own set of error codes as is the case in the current standard. Option C3 is not supported based on complexity compared to the likelihood of this capability actually being used. |
Thank you to everyone who's put forward feedback. Consultation has been closed and feedback will now be reviewed and considered. |
Thank you to everyone who provided feedback. Because the feedback has resulted in a revised proposal for the presentation of errors to assist transition, this thread will be reopened for one week in case any participants want to provide feedback on the changes to be adopted. Feedback will close on Wednesday 21/04/2021. Rather than respond to each specific comment from the community, the feedback has been summarised. A summary of feedback and changes arising from community responses has also been provided for Decision Proposal #155 and #156. FeedbackSchema
Transition arrangements and versioning
Obligations dates
Changes arising from feedbackThe following changes are proposed to be made based on community feedback: Obligations dates
Transition arrangements The options originally presented created breaking changes to ADRs during transition and feedback indicated that it created unwarranted overhead for DHs during transition. An alternative option has been identified by the community that removes any immediate breaking change to existing ADR clients and a simpler transition for DHs. Specifically:
The outcomes would be:
Proposed structure "ResponseErrorList_errorsV2" : {
"required" : [ "code", "detail", "title" ],
"x-conditional": ["meta"],
"properties" : {
"code" : { ...truncated for brevity... }, // If the error is specific to the respondent, an application-specific error code, expressed as a string value. If the error is application-specific, the URN code that the specific error extends must be provided in the meta object. Otherwise, the value is the error code URN."
"title" : { ...truncated for brevity... },
"detail" : { ...truncated for brevity... },
"meta" : {
"$ref": "#/definitions/MetaError"
}
}
},
"MetaError": {
"type" : "object",
"x-conditional" : [ "urn" ],
"description" : "Additional data for customised error codes",
"properties" : {
"urn": {
"type": "string",
"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."
}
}
} Example standardised code { "errors": [
{
"code": "urn:au-cds:error:cds-banking:Authorisation/InvalidBankingAccount",
"title": "Invalid Banking Account",
"description": "Description of the specific error encountered",
"meta": {
"urn": "urn:au-cds:error:cds-banking:Authorisation/InvalidBankingAccount"
}
}
] } Example custom code before transition { "errors": [
{
"code": "old error code",
"title": "error message",
"description": "Description of the specific error encountered"
}
] } Example custom code during transition { "errors": [
{
"code": "old error code",
"title": "error message",
"description": "Description of the specific error encountered",
"meta": {
"urn": "urn:au-cds:error:cdr-all:Header/InvalidVersion"
}
}
] } Example custom code after transition { "errors": [
{
"code": "acme-bank:JointAccountElectionRemoved",
"title": "Joint Account Consent Election Is Removed",
"description": "Description of the specific error encountered",
"meta": {
"urn": "urn:au-cds:error:cds-all:Resource/Unavailable"
}
}
] } |
If we may try to summarise our understanding here... Non-major DHs joining the ecosystem SHOULD support the below on July 1st 2021. i.e. use of standardised error code and new payload structure.
A made-up example of custom error code used by DHs in the ecosystems today.
DHs with custom error code post Feb 1st 2022. That is, as long as
If the above is correct then there does not seem to be a need of a "transition" period. ADRs need to look for standard compliant error in the Transition seems to be only applicable when DHs intend to remove custom error code, in which case, it MUST happen by Feb 1 2022 to be compliant. (However, it seems as long as DHs introduce Is the above correct? Thanks. |
Hi @spikejump for DHs coming into the ecosystem from July 1st 2021, that is correct. If they support the standardised error codes, they need only supply the URN error code in the The main purpose of the transition period commencing from Feb 1st 2022 is to allow DHs currently live with consumer data sharing to transition their API endpoints over an agreed period of time. This includes the initial four major DHs and reciprocal DHs like Regional Australia Bank who will require time and effort to transition. Noting there may be some non-major DHs that chose to go live on July 1st 2021 with custom error codes due to implementation schedules and release planning. Having a period of transition offers the most flexibility without adverse impacts to ADRs. It also ensures that ADRs can discover what the DH will map their existing custom error codes to. If the DH chooses to retire their custom error codes completely, it would adversely impact ADRs if that was a hard cut over. |
NAB seeks confirmation of the below example after the transition period is as intended? From the decision proposal and the summary, we understand that the code at the top level will only have standard error code urn and any specific custom error codes must be supplied in the meta/urn attribute.
Also, please confirm our understanding on the proposed changes for NAB (and any other DH with custom error codes implementation as of July 1st 2021),
|
Hi @NationalAustraliaBank the example you provided is correct. Based one the feedback we received from the Decision Proposal, this alternative option was suggested by the community. Your statements about the transitions are also correct. If the DH continues to support custom error codes they may continue to do so provided there is the meta/urn standard error code to ensure ADRs have a reliable way to interpret the error more generically. |
The changes related to these consultations have now been staged in draft format. They are available for review here: ConsumerDataStandardsAustralia/standards-staging@release/1.10.0...dp/154 At this time, the changes are not formal data standards. A formal decision will be taken to the Data Standards Chair next week. Where reviewers identify issues with presentation, please raise a change request on Standards Maintenance so the DSB can address. A draft version of the generated standards documentation is viewable here: http://ec2-18-224-29-97.us-east-2.compute.amazonaws.com |
The Data Standards Chair approved the changes to be made. The decision record is available here: Decision 154-155-156 - Enhanced Error Handling - Summary of Changes To Be Made.pdf These changes will be incorporated into release v1.10.0 of the Consumer Data Standards |
These changes have now been incorporated into v1.10.0. Accordingly, this decision is closed. |
…ce/448 Standards Maintenance Issue #448:
This decision captures the outcome of the Enhanced Error Handling consultation. The Data Standards Chair approved the changes to be made. The decision record is available here: Decision 154-155-156 - Enhanced Error Handling - Summary of Changes To Be Made.pdf
These changes will be incorporated into release v1.10.0 of the Consumer Data Standards
This issue pertains to the consultation for Enhanced Error Handling.
Specifically, this decision proposal is seeking to address the list of transition arrangements and payload changes to support standardised error codes across the CDR ecosystem.
The consultation draft Decision Proposal has been attached below:
Decision Proposal 154 - Enhanced Error Handling - CDR Error Code Payload Structure and Transition Arrangements.pdf
Feedback is now open for this proposal. Feedback is planned to be closed on 19th February 2021.
The text was updated successfully, but these errors were encountered: