metronome-sdk 3.4.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +84 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/client.rb +15 -1
  5. data/lib/metronome_sdk/internal/transport/base_client.rb +2 -0
  6. data/lib/metronome_sdk/internal/util.rb +22 -7
  7. data/lib/metronome_sdk/models/base_threshold_commit.rb +10 -1
  8. data/lib/metronome_sdk/models/contract_v2.rb +443 -15
  9. data/lib/metronome_sdk/models/credit.rb +74 -4
  10. data/lib/metronome_sdk/models/override.rb +9 -8
  11. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +27 -1
  12. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +28 -2
  13. data/lib/metronome_sdk/models/spend_threshold_configuration.rb +26 -1
  14. data/lib/metronome_sdk/models/spend_threshold_configuration_v2.rb +30 -4
  15. data/lib/metronome_sdk/models/update_base_threshold_commit.rb +11 -1
  16. data/lib/metronome_sdk/models/v1/alert_create_params.rb +1 -0
  17. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +2 -189
  18. data/lib/metronome_sdk/models/v1/contract_create_params.rb +3 -191
  19. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_params.rb +119 -0
  20. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_response.rb +315 -0
  21. data/lib/metronome_sdk/models/v1/contracts/product_create_params.rb +31 -1
  22. data/lib/metronome_sdk/models/v1/contracts/product_update_params.rb +31 -1
  23. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +1 -0
  24. data/lib/metronome_sdk/models/v1/customers/invoice.rb +8 -1
  25. data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +29 -1
  26. data/lib/metronome_sdk/models/v1/package_create_params.rb +2 -30
  27. data/lib/metronome_sdk/models/v1/package_list_response.rb +28 -9
  28. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +29 -9
  29. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +67 -20
  30. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +496 -15
  31. data/lib/metronome_sdk/resources/v1/contracts/products.rb +6 -2
  32. data/lib/metronome_sdk/resources/v1/contracts.rb +76 -2
  33. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +5 -1
  34. data/lib/metronome_sdk/resources/v1/packages.rb +1 -3
  35. data/lib/metronome_sdk/version.rb +1 -1
  36. data/lib/metronome_sdk.rb +3 -1
  37. data/rbi/metronome_sdk/internal/util.rbi +8 -0
  38. data/rbi/metronome_sdk/models/base_threshold_commit.rbi +24 -5
  39. data/rbi/metronome_sdk/models/contract_v2.rbi +916 -19
  40. data/rbi/metronome_sdk/models/credit.rbi +139 -3
  41. data/rbi/metronome_sdk/models/override.rbi +9 -12
  42. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +54 -3
  43. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +55 -4
  44. data/rbi/metronome_sdk/models/spend_threshold_configuration.rbi +54 -3
  45. data/rbi/metronome_sdk/models/spend_threshold_configuration_v2.rbi +58 -9
  46. data/rbi/metronome_sdk/models/update_base_threshold_commit.rbi +22 -4
  47. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +5 -0
  48. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +3 -416
  49. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +5 -418
  50. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +179 -0
  51. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_response.rbi +714 -0
  52. data/rbi/metronome_sdk/models/v1/contracts/product_create_params.rbi +74 -0
  53. data/rbi/metronome_sdk/models/v1/contracts/product_update_params.rbi +74 -0
  54. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +5 -0
  55. data/rbi/metronome_sdk/models/v1/customers/invoice.rbi +9 -0
  56. data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +75 -0
  57. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +3 -76
  58. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +72 -15
  59. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +72 -17
  60. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +133 -28
  61. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1174 -145
  62. data/rbi/metronome_sdk/resources/v1/contracts/products.rbi +18 -0
  63. data/rbi/metronome_sdk/resources/v1/contracts.rbi +88 -3
  64. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +7 -0
  65. data/rbi/metronome_sdk/resources/v1/packages.rbi +0 -3
  66. data/sig/metronome_sdk/internal/util.rbs +4 -0
  67. data/sig/metronome_sdk/models/base_threshold_commit.rbs +13 -3
  68. data/sig/metronome_sdk/models/contract_v2.rbs +401 -16
  69. data/sig/metronome_sdk/models/credit.rbs +69 -0
  70. data/sig/metronome_sdk/models/override.rbs +8 -10
  71. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration.rbs +22 -3
  72. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbs +23 -4
  73. data/sig/metronome_sdk/models/spend_threshold_configuration.rbs +22 -3
  74. data/sig/metronome_sdk/models/spend_threshold_configuration_v2.rbs +26 -7
  75. data/sig/metronome_sdk/models/update_base_threshold_commit.rbs +15 -2
  76. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +3 -1
  77. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +3 -147
  78. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +3 -147
  79. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +96 -0
  80. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_response.rbs +299 -0
  81. data/sig/metronome_sdk/models/v1/contracts/product_create_params.rbs +20 -0
  82. data/sig/metronome_sdk/models/v1/contracts/product_update_params.rbs +20 -0
  83. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +3 -1
  84. data/sig/metronome_sdk/models/v1/customers/invoice.rbs +7 -0
  85. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +29 -1
  86. data/sig/metronome_sdk/models/v1/package_create_params.rbs +3 -30
  87. data/sig/metronome_sdk/models/v1/package_list_response.rbs +33 -15
  88. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +33 -15
  89. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +33 -10
  90. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +409 -19
  91. data/sig/metronome_sdk/resources/v1/contracts/products.rbs +2 -0
  92. data/sig/metronome_sdk/resources/v1/contracts.rbs +15 -0
  93. data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +2 -0
  94. data/sig/metronome_sdk/resources/v1/packages.rbs +0 -1
  95. metadata +8 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e790ead396d794ecaa6da7fe2daebbc0d2889ac357ab7d388d7d271ff11ddca7
4
- data.tar.gz: bbb781138592c99fd427f0fc8817cf27f64fedd92b85b3a52c84e82e0900a905
3
+ metadata.gz: d4d5355d04639b7153cfe94271378797fceaff008c386c001c6450f66674a584
4
+ data.tar.gz: 25c993147e97e4acead3048b17b7328e67b4e95274bef1893723bf806ddd9bec
5
5
  SHA512:
6
- metadata.gz: 824e2718830473643d02f38f5ba467c820e19c505cb1e37c18fb7c69fee28425f41eeb38aa32715eb180613d79c4dfcc5753f53abb8e01c8f8eb2033750b118a
7
- data.tar.gz: e521c9add4393abe34ad717c69fc23c3a9dd32fc84a9c65b151d65f83f2b7d84f66ca61d45a58977f06d66e8ef3ecb8e1bfd621b90d0aaf3bd6b5d2c2f797a6a
6
+ metadata.gz: 653c76e15fba1881dcc6e344161a61f7c0c061aba2603bdb26a3f489986c23e31d1fe77bb2134070f53333efe9efa5d37b73f206abb30b4cba33eb05f967c771
7
+ data.tar.gz: 3d6505e8bd6767e3873ba2d70c28bc93eac7280ae2ca126eba43a18eca5e4a113704574909e5c0a26f503204675bc407582190dd9d1f20afa91ecc98cc30def0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,89 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.6.0 (2026-05-18)
4
+
5
+ Full Changelog: [v3.5.0...v3.6.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.5.0...v3.6.0)
6
+
7
+ ### Features
8
+
9
+ * [docs] fix typo in "Create a Contract" [1] page ([1c944c1](https://github.com/Metronome-Industries/metronome-ruby/commit/1c944c186c83b405e283708850d5a608e6c21ed6))
10
+ * [orch-383] fix API docs for one-off payment-gated commits ([a4d2798](https://github.com/Metronome-Industries/metronome-ruby/commit/a4d27985195453b3546b5ecd8a420b4d768110db))
11
+ * Add alert specifiers to contract create API ([51db5ed](https://github.com/Metronome-Industries/metronome-ruby/commit/51db5ed0d8954978ac23e2ddc30a6b542a535828))
12
+ * add contract_id filter to list invoices endpoint ([a304fbe](https://github.com/Metronome-Industries/metronome-ruby/commit/a304fbe7fbdec29e84f6d7e00757ac8d53c4ddf2))
13
+ * add invoice type filter for list invoices api ([872e130](https://github.com/Metronome-Industries/metronome-ruby/commit/872e1300646c989ab9d1ae057358213651f140d9))
14
+ * Add list seat balances API endpoint to SDK ([b00dd28](https://github.com/Metronome-Industries/metronome-ruby/commit/b00dd2876202080710203143d27a3b592aa7333b))
15
+ * Add regenerated_from_invoice_id to getInvoice response ([4fcd94f](https://github.com/Metronome-Industries/metronome-ruby/commit/4fcd94f52de907beea33c5f619ee529cdf2ee295))
16
+ * Add sql_breakdown_granularity flag to product create/edit ([101c0ef](https://github.com/Metronome-Industries/metronome-ruby/commit/101c0efded08535d01f7d5ef67b80c3325be7e5a))
17
+ * added custom fields to create contract with package ([3df5eaf](https://github.com/Metronome-Industries/metronome-ruby/commit/3df5eafd29b0d030f2de6c9b1da6bd0f2d83fefd))
18
+ * doc updates ([a38c0ad](https://github.com/Metronome-Industries/metronome-ruby/commit/a38c0adccd0a9de33f91052cef6f8db0bfd054ba))
19
+ * Limit spend breakdown/seat balances to 100 vals ([019e16c](https://github.com/Metronome-Industries/metronome-ruby/commit/019e16ca2e5091d75d9674d3c1ae58e4af6c8786))
20
+ * Pranadreddy/launch 2486 remove dead billing anchor date field from api ([880922c](https://github.com/Metronome-Industries/metronome-ruby/commit/880922c776ce6b9026338097d22629153b06790d))
21
+ * support setting headers via env ([70a6689](https://github.com/Metronome-Industries/metronome-ruby/commit/70a66896bf1c85734adbcc3f90ec88e91b3b124d))
22
+ * Update stainless.yml to include Java configuration logic ([caadd1b](https://github.com/Metronome-Industries/metronome-ruby/commit/caadd1bcdfe6e513fa45e1ffe7ba16be4078f8e0))
23
+ * wip ([d85557d](https://github.com/Metronome-Industries/metronome-ruby/commit/d85557d5c8d4e42eaedeeb01d52e925cfaec2bf5))
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * add archived_at to Credit schema (parity with Commit) ([c4cb0de](https://github.com/Metronome-Industries/metronome-ruby/commit/c4cb0de6639d6260cd5cd4991c2bdbbca9a56308))
29
+ * **client:** elide content type header on requests without body ([3229b9e](https://github.com/Metronome-Industries/metronome-ruby/commit/3229b9ea9655734024eeacf899aef1559401c950))
30
+
31
+
32
+ ### Chores
33
+
34
+ * configure new SDK language ([2318d44](https://github.com/Metronome-Industries/metronome-ruby/commit/2318d447232cd1368c1be58b004f4e56f6ec58f8))
35
+ * configure new SDK language ([c604e19](https://github.com/Metronome-Industries/metronome-ruby/commit/c604e191054d276f6620fe43ef76543c000703ee))
36
+ * configure new SDK language ([85c2a71](https://github.com/Metronome-Industries/metronome-ruby/commit/85c2a714681224c4e5b654ae2a0ffa0ff478c269))
37
+ * configure new SDK language ([7f6bb80](https://github.com/Metronome-Industries/metronome-ruby/commit/7f6bb80a5e0f7838849aa1fef4e255ac7a7c6d44))
38
+ * **internal:** more robust bootstrap script ([3f8dd59](https://github.com/Metronome-Industries/metronome-ruby/commit/3f8dd59db3d7878d6232f01d0fda804657de3e2a))
39
+
40
+ ## 3.5.0 (2026-04-18)
41
+
42
+ Full Changelog: [v3.4.0...v3.5.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.4.0...v3.5.0)
43
+
44
+ ### Features
45
+
46
+ * add override created at in api responses ([87dbd21](https://github.com/Metronome-Industries/metronome-ruby/commit/87dbd21032840c620459273377db9bb272cbfd22))
47
+ * Add recurring_commit_ids and remove recurring_credit_ids from api ([792197c](https://github.com/Metronome-Industries/metronome-ruby/commit/792197c773eb6235d4c29745b813d950746214dd))
48
+ * Docs: Dd/update balance guides ([a0c43b0](https://github.com/Metronome-Industries/metronome-ruby/commit/a0c43b07ceaa54836c753c40dc31a900ead0f30c))
49
+ * Enable OIDC auth for npm publisher ([6db4272](https://github.com/Metronome-Industries/metronome-ruby/commit/6db427233a322a94667e5e35e0de4aa8eb17fdde))
50
+ * External fixes for rollover credits ([6478a14](https://github.com/Metronome-Industries/metronome-ruby/commit/6478a14a3efa407fd1738dfcd94fc57719ced31d))
51
+ * Fully document CreditAdd/CreditUpdate fields in API spec ([eb852a3](https://github.com/Metronome-Industries/metronome-ruby/commit/eb852a392fc610d2a7207d06884bbf2061c11954))
52
+ * Fully document CreditAdd/CreditUpdate fields in API spec ([f0581f3](https://github.com/Metronome-Industries/metronome-ruby/commit/f0581f37f25e052401a9662c41580bd252f42ec8))
53
+ * Map missing `contract_name` when returning Packages ([3eee272](https://github.com/Metronome-Industries/metronome-ruby/commit/3eee272e7797350e99f372996728453946284d16))
54
+ * **ORCH-1361:** add priority to threshold commit OpenAPI schemas ([6461ec2](https://github.com/Metronome-Industries/metronome-ruby/commit/6461ec2ca1efd1b9a09cf33a4c5774dad5f535d1))
55
+ * ORCH-1410: Add discount_configuration to POST v2/contracts/edit ([852219d](https://github.com/Metronome-Industries/metronome-ruby/commit/852219d69ee7cb5e22fdb3e9b0611c463b191f67))
56
+ * remove dead field, pipe day through to MRI, return day when get package ([17f2939](https://github.com/Metronome-Industries/metronome-ruby/commit/17f2939a021072c53619250274aa89278fdb20d4))
57
+ * Support nullable discount fraction on contract update inputs ([c67304b](https://github.com/Metronome-Industries/metronome-ruby/commit/c67304b1a4a9d5ab1761e220e36d3bd1f71e153b))
58
+
59
+
60
+ ### Bug Fixes
61
+
62
+ * align path encoding with RFC 3986 section 3.3 ([cba23c1](https://github.com/Metronome-Industries/metronome-ruby/commit/cba23c1734d5642be93612e3d562c43ce5281567))
63
+ * **internal:** correct multipart form field name encoding ([7744335](https://github.com/Metronome-Industries/metronome-ruby/commit/774433578aef086d6997faccc6e48e97c7381ec8))
64
+ * multipart encoding for file arrays ([824320c](https://github.com/Metronome-Industries/metronome-ruby/commit/824320cdfbacbeac8650c6179280d0a71eb24b44))
65
+ * variable name typo ([802a290](https://github.com/Metronome-Industries/metronome-ruby/commit/802a290f7a1eb290c8aad3ec0a6c7ad9eeed20bd))
66
+
67
+
68
+ ### Chores
69
+
70
+ * **ci:** skip lint on metadata-only changes ([f14cdaa](https://github.com/Metronome-Industries/metronome-ruby/commit/f14cdaa8a02129e73fc1b32914ae14146b56b4ad))
71
+ * **ci:** support opting out of skipping builds on metadata-only commits ([6f4c5bc](https://github.com/Metronome-Industries/metronome-ruby/commit/6f4c5bc8f054ccafa69ba30514c91657021e871f))
72
+ * **internal:** tweak CI branches ([71b11a6](https://github.com/Metronome-Industries/metronome-ruby/commit/71b11a6dba46733ffec3b0ab10d5812308972c19))
73
+ * **internal:** update gitignore ([dd4bfc8](https://github.com/Metronome-Industries/metronome-ruby/commit/dd4bfc8cae02b3edd68f1104a07b982a6e2c1b3b))
74
+ * **tests:** bump steady to v0.19.4 ([da62d02](https://github.com/Metronome-Industries/metronome-ruby/commit/da62d027d99e26ef0f961336fd08af2926365d99))
75
+ * **tests:** bump steady to v0.19.5 ([76ea6a0](https://github.com/Metronome-Industries/metronome-ruby/commit/76ea6a0aaf684bc2e7c691fa860c8877e1943dc0))
76
+ * **tests:** bump steady to v0.19.6 ([1368bba](https://github.com/Metronome-Industries/metronome-ruby/commit/1368bbac0a69aa766786a9ed78d9195c73b31d09))
77
+ * **tests:** bump steady to v0.19.7 ([5e94fed](https://github.com/Metronome-Industries/metronome-ruby/commit/5e94fed2cf97a1b3a7565ac18952c70b47040847))
78
+ * **tests:** bump steady to v0.20.1 ([069329c](https://github.com/Metronome-Industries/metronome-ruby/commit/069329ca1cc50b77a5b76a057eae32e732066697))
79
+ * **tests:** bump steady to v0.20.2 ([add7ae8](https://github.com/Metronome-Industries/metronome-ruby/commit/add7ae85ea63ebeacbf3cf754ef7bd48a92c701d))
80
+ * **tests:** bump steady to v0.22.1 ([5908006](https://github.com/Metronome-Industries/metronome-ruby/commit/5908006482ed816f9960dc00e727f05067f2d0bc))
81
+
82
+
83
+ ### Refactors
84
+
85
+ * **tests:** switch from prism to steady ([e8f7dbc](https://github.com/Metronome-Industries/metronome-ruby/commit/e8f7dbc646afdfa31bcce4a580e863258f76dd06))
86
+
3
87
  ## 3.4.0 (2026-03-11)
4
88
 
5
89
  Full Changelog: [v3.3.0...v3.4.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.3.0...v3.4.0)
data/README.md CHANGED
@@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
26
26
  <!-- x-release-please-start-version -->
27
27
 
28
28
  ```ruby
29
- gem "metronome-sdk", "~> 3.4.0"
29
+ gem "metronome-sdk", "~> 3.6.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -67,6 +67,19 @@ module MetronomeSDK
67
67
  raise ArgumentError.new("bearer_token is required, and can be set via environ: \"METRONOME_BEARER_TOKEN\"")
68
68
  end
69
69
 
70
+ headers = {}
71
+ custom_headers_env = ENV["METRONOME_CUSTOM_HEADERS"]
72
+ unless custom_headers_env.nil?
73
+ parsed = {}
74
+ custom_headers_env.split("\n").each do |line|
75
+ colon = line.index(":")
76
+ unless colon.nil?
77
+ parsed[line[0...colon].strip] = line[(colon + 1)..].strip
78
+ end
79
+ end
80
+ headers = parsed.merge(headers)
81
+ end
82
+
70
83
  @bearer_token = bearer_token.to_s
71
84
  @webhook_secret = webhook_secret&.to_s
72
85
 
@@ -75,7 +88,8 @@ module MetronomeSDK
75
88
  timeout: timeout,
76
89
  max_retries: max_retries,
77
90
  initial_retry_delay: initial_retry_delay,
78
- max_retry_delay: max_retry_delay
91
+ max_retry_delay: max_retry_delay,
92
+ headers: headers
79
93
  )
80
94
 
81
95
  @v2 = MetronomeSDK::Resources::V2.new(client: self)
@@ -306,6 +306,8 @@ module MetronomeSDK
306
306
  MetronomeSDK::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
307
307
  end
308
308
 
309
+ headers.delete("content-type") if body.nil?
310
+
309
311
  url = MetronomeSDK::Internal::Util.join_parsed_uri(
310
312
  @base_url_components,
311
313
  {**req, path: path, query: query}
@@ -157,7 +157,7 @@ module MetronomeSDK
157
157
  in Hash | nil => coerced
158
158
  coerced
159
159
  else
160
- message = "Expected a #{Hash} or #{MetronomeSDK::Internal::Type::BaseModel}, got #{data.inspect}"
160
+ message = "Expected a #{Hash} or #{MetronomeSDK::Internal::Type::BaseModel}, got #{input.inspect}"
161
161
  raise ArgumentError.new(message)
162
162
  end
163
163
  end
@@ -237,6 +237,11 @@ module MetronomeSDK
237
237
  end
238
238
  end
239
239
 
240
+ # @type [Regexp]
241
+ #
242
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
243
+ RFC_3986_NOT_PCHARS = /[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/
244
+
240
245
  class << self
241
246
  # @api private
242
247
  #
@@ -247,6 +252,15 @@ module MetronomeSDK
247
252
  "#{uri.scheme}://#{uri.host}#{":#{uri.port}" unless uri.port == uri.default_port}"
248
253
  end
249
254
 
255
+ # @api private
256
+ #
257
+ # @param path [String, Integer]
258
+ #
259
+ # @return [String]
260
+ def encode_path(path)
261
+ path.to_s.gsub(MetronomeSDK::Internal::Util::RFC_3986_NOT_PCHARS) { ERB::Util.url_encode(_1) }
262
+ end
263
+
250
264
  # @api private
251
265
  #
252
266
  # @param path [String, Array<String>]
@@ -259,7 +273,7 @@ module MetronomeSDK
259
273
  in []
260
274
  ""
261
275
  in [String => p, *interpolations]
262
- encoded = interpolations.map { ERB::Util.url_encode(_1) }
276
+ encoded = interpolations.map { encode_path(_1) }
263
277
  format(p, *encoded)
264
278
  end
265
279
  end
@@ -571,16 +585,15 @@ module MetronomeSDK
571
585
  y << "Content-Disposition: form-data"
572
586
 
573
587
  unless key.nil?
574
- name = ERB::Util.url_encode(key.to_s)
575
- y << "; name=\"#{name}\""
588
+ y << "; name=\"#{key}\""
576
589
  end
577
590
 
578
591
  case val
579
592
  in MetronomeSDK::FilePart unless val.filename.nil?
580
- filename = ERB::Util.url_encode(val.filename)
593
+ filename = encode_path(val.filename)
581
594
  y << "; filename=\"#{filename}\""
582
595
  in Pathname | IO
583
- filename = ERB::Util.url_encode(::File.basename(val.to_path))
596
+ filename = encode_path(::File.basename(val.to_path))
584
597
  y << "; filename=\"#{filename}\""
585
598
  else
586
599
  end
@@ -597,6 +610,7 @@ module MetronomeSDK
597
610
  #
598
611
  # @return [Array(String, Enumerable<String>)]
599
612
  private def encode_multipart_streaming(body)
613
+ # rubocop:disable Style/CaseEquality
600
614
  # RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length
601
615
  boundary = SecureRandom.urlsafe_base64(46)
602
616
 
@@ -606,7 +620,7 @@ module MetronomeSDK
606
620
  in Hash
607
621
  body.each do |key, val|
608
622
  case val
609
- in Array if val.all? { primitive?(_1) }
623
+ in Array if val.all? { primitive?(_1) || MetronomeSDK::Internal::Type::FileInput === _1 }
610
624
  val.each do |v|
611
625
  write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
612
626
  end
@@ -622,6 +636,7 @@ module MetronomeSDK
622
636
 
623
637
  fused_io = fused_enum(strio) { closing.each(&:call) }
624
638
  [boundary, fused_io]
639
+ # rubocop:enable Style/CaseEquality
625
640
  end
626
641
 
627
642
  # @api private
@@ -22,7 +22,14 @@ module MetronomeSDK
22
22
  # @return [String, nil]
23
23
  optional :name, String
24
24
 
25
- # @!method initialize(product_id:, description: nil, name: nil)
25
+ # @!attribute priority
26
+ # The priority of the commit, used to determine drawdown order. Lower priority
27
+ # commits are consumed first. Defaults to 100 if not specified.
28
+ #
29
+ # @return [Float, nil]
30
+ optional :priority, Float
31
+
32
+ # @!method initialize(product_id:, description: nil, name: nil, priority: nil)
26
33
  # Some parameter documentations has been truncated, see
27
34
  # {MetronomeSDK::Models::BaseThresholdCommit} for more details.
28
35
  #
@@ -31,6 +38,8 @@ module MetronomeSDK
31
38
  # @param description [String]
32
39
  #
33
40
  # @param name [String] Specify the name of the line item for the threshold charge. If left blank, it wi
41
+ #
42
+ # @param priority [Float] The priority of the commit, used to determine drawdown order. Lower priority com
34
43
  end
35
44
  end
36
45
  end