From b3eced7dc6e0a8198282bc27b61e411d36e598b5 Mon Sep 17 00:00:00 2001 From: Michael Broshi <94012587+mbroshi-stripe@users.noreply.github.com> Date: Mon, 17 Nov 2025 09:36:40 -0800 Subject: [PATCH] Update v2 array parameter serialization to use indexed format (#1727) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change array parameter serialization for v2 endpoints to use indexed format (e.g., ?include[0]=foo&include[1]=bar) instead of the repeated parameter format (e.g., ?include=foo&include=bar). This aligns v2 behavior with v1 for consistency. Changes: - Modified util.rb flatten_params_array to always use indexed format - Updated tests to expect indexed format for v2 arrays 🤖 Generated with [Claude Code](https://claude.com/claude-code) Committed-By-Agent: claude Co-authored-by: Claude --- lib/stripe/util.rb | 7 ++----- test/stripe/util_test.rb | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/stripe/util.rb b/lib/stripe/util.rb index 6bed42c1..8bfe66c3 100644 --- a/lib/stripe/util.rb +++ b/lib/stripe/util.rb @@ -275,11 +275,8 @@ module Stripe elsif elem.is_a?(Array) result += flatten_params_array(elem, api_mode, calculated_key) else - result << if api_mode == :v2 - [calculated_key, elem] - else - ["#{calculated_key}[#{i}]", elem] - end + # Always use indexed format for arrays + result << ["#{calculated_key}[#{i}]", elem] end end result diff --git a/test/stripe/util_test.rb b/test/stripe/util_test.rb index 00b08c1b..2e083303 100644 --- a/test/stripe/util_test.rb +++ b/test/stripe/util_test.rb @@ -43,7 +43,7 @@ module Stripe g: [], } assert_equal( - "d[a]=a&d[b]=b&e=0&e=1", + "d[a]=a&d[b]=b&e[0]=0&e[1]=1", Stripe::Util.encode_parameters(params, :v2) ) end @@ -94,7 +94,7 @@ module Stripe [:d, { a: "a", b: "b" }], [:e, [0, 1]], ] - assert_equal([["d[a]", "a"], ["d[b]", "b"], ["e", 0], ["e", 1]], Stripe::Util.flatten_params(params, :v2)) + assert_equal([["d[a]", "a"], ["d[b]", "b"], ["e[0]", 0], ["e[1]", 1]], Stripe::Util.flatten_params(params, :v2)) end end