fix!: Updated PreconditionFailed responses #5513
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
http.StatusPreconditionFailed
as a response status code #5422Summary
In all cases where a 412 Precondition Failed is used, it is actually a 400 Bad Request response (often with a descriptor for the particular reason).
It's easy to see why status 412 was used, because on a surface level it makes sense. You're waiting on a condition for a successful request, like a job completing, workspaces to be deleted before removing a template, configuring a particular oauth method etc..
However, these requests aren't conditional, and should be represented as bad requests. Think of it like being told the ice cream machine at McDonalds is broken, but you keep re-ordering the ice cream in the exact same way; technically there is a precondition failure that the ice cream machine is working, but that's not factored into your request. If you were to validate the state of the ice cream machine beforehand, maybe it would be different, but you're making a request against an ice cream machine that happens to be broken, so in that way you're making a bad/unreasonable request.