Skip to content

Improvements for Problem guideline (176) #763

@ePaul

Description

@ePaul

We discovered that our current guideline about problem/json is interpreted somewhat differently (both between guild members, and by other developers in the company).

Some things to clarify (most related to each other):

  • 1. Is the problem object meant just for the client developers (for debugging purposes), or is it also intended to be used by client applications?
    • 1a. If the latter, only for display to a human (e.g. in an UI), or also for automatic processing decisions?
  • 2. What is the intended meaning of the type (+ title) member, compared to the status code?
    • 2a. Should the problem types be defined in your API? (How?) Should they be standardized across APIs?
    • 2b. Can clients rely on the type attribute?
    • 2c. Is this the same as an "error code"?
  • 3. What is the meaning of the instance field?
    • 3a. Does pointing to a specific occurrence of an error is meant to point to a code location, or to a set of input data or time when this error happened (e.g. via flow-ID)?
    • 3b. When is this needed/useful in addition to the type?
  • 4. For cases where a server application doesn't have more detailed error information, should fields (e.g. type + title) be filled with default values replicating the status code information, or just be left empty/missing?
  • 5. What are compatibility concerns for problem objects? Is it an incompatible change if in some specific situation now a different type value is returned?
  • 6. How can/should the problem object be extended?
    • 6a. Use the type as a discriminator for subtyping?
    • 6b. How can extended problems and generic ones coexist?
  • 7. Client robustness: Can clients rely on anything in the error object? If not, can they still use something?

(Also, if we are looking at this guideline: Fix the typo instantinstance in the first paragraph.)

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions