What changed
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
Affects reason on cancellation_details reachable from 488 operations.
New value: canceled_by_retention_policy.
can now return "canceled_by_retention_policy"
Who is affected
Code that reads Stripe's cancellation_details objects, used by 488 Stripe operations.
Before and after
| Where | Before | After |
|---|---|---|
| cancellation_details.reason | "cancellation_requested", "payment_disputed", "payment_failed" | "canceled_by_retention_policy", "cancellation_requested", "payment_disputed", "payment_failed" |
Code that breaks
switch (response.reason) {
// existing branches …
// no branch for "canceled_by_retention_policy"
default:
throw new Error("unexpected reason");
}Based on Stripe’s published API specification. How severity is decided.