Driftwatch

Stripe / Stripe API /

Breakingdirection flip: their tools call this safe

device_type can now return "simulated_stripe_s710", "stripe_s710"

What changed

Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.

Affects device_type on deleted_terminal.reader reachable from 3 operations.

New values: simulated_stripe_s710, stripe_s710.

can now return "simulated_stripe_s710", "stripe_s710"

Who is affected

Code that reads Stripe's deleted_terminal.reader objects, used by 15 Stripe operations.

Before and after

WhereBeforeAfter
deleted_terminal.reader.device_type"bbpos_chipper2x", "bbpos_wisepad3", "bbpos_wisepos_e", "mobile_phone_reader", "simulated_stripe_s700", "simulated_wisepos_e", "stripe_m2", "stripe_s700", "verifone_P400""bbpos_chipper2x", "bbpos_wisepad3", "bbpos_wisepos_e", "mobile_phone_reader", "simulated_stripe_s700", "simulated_stripe_s710", "simulated_wisepos_e", "stripe_m2", "stripe_s700", "stripe_s710", "verifone_P400"
terminal.reader.device_type"bbpos_chipper2x", "bbpos_wisepad3", "bbpos_wisepos_e", "mobile_phone_reader", "simulated_stripe_s700", "simulated_wisepos_e", "stripe_m2", "stripe_s700", "verifone_P400""bbpos_chipper2x", "bbpos_wisepad3", "bbpos_wisepos_e", "mobile_phone_reader", "simulated_stripe_s700", "simulated_stripe_s710", "simulated_wisepos_e", "stripe_m2", "stripe_s700", "stripe_s710", "verifone_P400"

Code that breaks

switch (response.device_type) {
  // existing branches …
  // no branch for "simulated_stripe_s710"
  // no branch for "stripe_s710"
  default:
    throw new Error("unexpected device_type");
}

Based on Stripe’s published API specification. How severity is decided.