A login endpoint returning “unknown email” and “incorrect password” as separate messages, which is an account enumeration oracle with good intentions. Fixing the message and leaving the timing…
An endpoint returning 404 for a resource that exists but belongs to somebody else, and 403 for one that exists and is forbidden — which distinguishes the two.…
Our tests asserting what our API returns, which proves nothing about what a consumer depends on. Owning the tests ourselves means asserting what we intended, and the whole…
An endpoint with a healthy p95 and one consumer for whom it was consistently slow. Aggregating across consumers averages away exactly the case that generates support tickets, and…
A limit keyed on the client address, and four integrators behind one corporate gateway sharing a quota. Keying on the credential is the only fair unit when consumers…
A response that omits fields when a header is present, implemented three years ago for one consumer and never documented. The behaviour was correct and the mechanism was…
A webhook endpoint accepting bodies up to eight megabytes, and the signature check running after the decode. Validating before decoding costs one pass over the string and allocates…
An include parameter added for one consumer, and eleven values later it is a query language with no grammar. An include parameter is a small query language and…