Driftwatch

Stripe / Stripe API /

Breakingdirection flip: their tools call this safe

reason can now return "canceled_by_retention_policy"

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

WhereBeforeAfter
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.