stripe 12.5.0 → 15.0.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 (688) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +197 -9
  3. data/Gemfile +4 -0
  4. data/Makefile +2 -0
  5. data/OPENAPI_VERSION +1 -1
  6. data/README.md +48 -13
  7. data/Rakefile +0 -5
  8. data/VERSION +1 -1
  9. data/examples/README.md +16 -0
  10. data/examples/example_template.rb +36 -0
  11. data/examples/meter_event_stream.rb +57 -0
  12. data/examples/thinevent_webhook_handler.rb +39 -0
  13. data/justfile +43 -0
  14. data/lib/stripe/api_operations/nested_resource.rb +1 -21
  15. data/lib/stripe/api_operations/request.rb +20 -69
  16. data/lib/stripe/api_operations/save.rb +5 -3
  17. data/lib/stripe/api_operations/singleton_save.rb +6 -2
  18. data/lib/stripe/api_requestor.rb +1136 -0
  19. data/lib/stripe/api_resource.rb +38 -17
  20. data/lib/stripe/api_version.rb +1 -1
  21. data/lib/stripe/connection_manager.rb +1 -1
  22. data/lib/stripe/errors.rb +8 -9
  23. data/lib/stripe/event_types.rb +14 -0
  24. data/lib/stripe/events/v1_billing_meter_error_report_triggered_event.rb +23 -0
  25. data/lib/stripe/events/v1_billing_meter_no_meter_found_event.rb +13 -0
  26. data/lib/stripe/list_object.rb +2 -3
  27. data/lib/stripe/oauth.rb +8 -15
  28. data/lib/stripe/object_types.rb +26 -3
  29. data/lib/stripe/request_options.rb +129 -0
  30. data/lib/stripe/request_params.rb +24 -0
  31. data/lib/stripe/resources/account.rb +4642 -8
  32. data/lib/stripe/resources/account_link.rb +54 -0
  33. data/lib/stripe/resources/account_session.rb +739 -0
  34. data/lib/stripe/resources/apple_pay_domain.rb +58 -9
  35. data/lib/stripe/resources/application.rb +20 -0
  36. data/lib/stripe/resources/application_fee.rb +89 -2
  37. data/lib/stripe/resources/application_fee_refund.rb +17 -0
  38. data/lib/stripe/resources/apps/secret.rb +143 -2
  39. data/lib/stripe/resources/balance.rb +122 -0
  40. data/lib/stripe/resources/balance_transaction.rb +105 -2
  41. data/lib/stripe/resources/bank_account.rb +85 -3
  42. data/lib/stripe/resources/billing/alert.rb +137 -2
  43. data/lib/stripe/resources/billing/alert_triggered.rb +26 -0
  44. data/lib/stripe/resources/billing/credit_balance_summary.rb +54 -0
  45. data/lib/stripe/resources/billing/credit_balance_transaction.rb +133 -0
  46. data/lib/stripe/resources/billing/credit_grant.rb +307 -0
  47. data/lib/stripe/resources/billing/meter.rb +180 -9
  48. data/lib/stripe/resources/billing/meter_event.rb +37 -3
  49. data/lib/stripe/resources/billing/meter_event_adjustment.rb +44 -1
  50. data/lib/stripe/resources/billing/meter_event_summary.rb +17 -0
  51. data/lib/stripe/resources/billing_portal/configuration.rb +557 -4
  52. data/lib/stripe/resources/billing_portal/session.rb +271 -0
  53. data/lib/stripe/resources/capability.rb +84 -0
  54. data/lib/stripe/resources/card.rb +78 -1
  55. data/lib/stripe/resources/cash_balance.rb +17 -0
  56. data/lib/stripe/resources/charge.rb +1616 -4
  57. data/lib/stripe/resources/checkout/session.rb +3534 -10
  58. data/lib/stripe/resources/climate/order.rb +171 -4
  59. data/lib/stripe/resources/climate/product.rb +49 -2
  60. data/lib/stripe/resources/climate/supplier.rb +47 -2
  61. data/lib/stripe/resources/confirmation_token.rb +1448 -0
  62. data/lib/stripe/resources/connect_collection_transfer.rb +24 -0
  63. data/lib/stripe/resources/country_spec.rb +56 -2
  64. data/lib/stripe/resources/coupon.rb +195 -6
  65. data/lib/stripe/resources/credit_note.rb +641 -2
  66. data/lib/stripe/resources/credit_note_line_item.rb +67 -0
  67. data/lib/stripe/resources/customer.rb +832 -9
  68. data/lib/stripe/resources/customer_balance_transaction.rb +29 -0
  69. data/lib/stripe/resources/customer_cash_balance_transaction.rb +109 -0
  70. data/lib/stripe/resources/customer_session.rb +163 -0
  71. data/lib/stripe/resources/discount.rb +29 -0
  72. data/lib/stripe/resources/dispute.rb +614 -4
  73. data/lib/stripe/resources/entitlements/active_entitlement.rb +39 -2
  74. data/lib/stripe/resources/entitlements/active_entitlement_summary.rb +23 -0
  75. data/lib/stripe/resources/entitlements/feature.rb +83 -2
  76. data/lib/stripe/resources/ephemeral_key.rb +23 -2
  77. data/lib/stripe/resources/event.rb +92 -2
  78. data/lib/stripe/resources/exchange_rate.rb +26 -2
  79. data/lib/stripe/resources/file.rb +123 -15
  80. data/lib/stripe/resources/file_link.rb +107 -4
  81. data/lib/stripe/resources/financial_connections/account.rb +239 -2
  82. data/lib/stripe/resources/financial_connections/account_owner.rb +17 -0
  83. data/lib/stripe/resources/financial_connections/account_ownership.rb +9 -0
  84. data/lib/stripe/resources/financial_connections/session.rb +95 -0
  85. data/lib/stripe/resources/financial_connections/transaction.rb +94 -2
  86. data/lib/stripe/resources/forwarding/request.rb +158 -2
  87. data/lib/stripe/resources/funding_instructions.rb +308 -0
  88. data/lib/stripe/resources/identity/verification_report.rb +259 -2
  89. data/lib/stripe/resources/identity/verification_session.rb +356 -4
  90. data/lib/stripe/resources/invoice.rb +3210 -27
  91. data/lib/stripe/resources/invoice_item.rb +406 -6
  92. data/lib/stripe/resources/invoice_line_item.rb +356 -3
  93. data/lib/stripe/resources/invoice_payment.rb +105 -0
  94. data/lib/stripe/resources/invoice_rendering_template.rb +120 -0
  95. data/lib/stripe/resources/issuing/authorization.rb +1132 -6
  96. data/lib/stripe/resources/issuing/card.rb +682 -5
  97. data/lib/stripe/resources/issuing/cardholder.rb +653 -5
  98. data/lib/stripe/resources/issuing/dispute.rb +785 -4
  99. data/lib/stripe/resources/issuing/personalization_design.rb +280 -4
  100. data/lib/stripe/resources/issuing/physical_bundle.rb +56 -2
  101. data/lib/stripe/resources/issuing/token.rb +170 -4
  102. data/lib/stripe/resources/issuing/transaction.rb +916 -4
  103. data/lib/stripe/resources/line_item.rb +47 -0
  104. data/lib/stripe/resources/login_link.rb +7 -0
  105. data/lib/stripe/resources/mandate.rb +142 -0
  106. data/lib/stripe/resources/payment_intent.rb +8660 -4
  107. data/lib/stripe/resources/payment_link.rb +1636 -4
  108. data/lib/stripe/resources/payment_method.rb +1546 -4
  109. data/lib/stripe/resources/payment_method_configuration.rb +2780 -4
  110. data/lib/stripe/resources/payment_method_domain.rb +154 -10
  111. data/lib/stripe/resources/payout.rb +213 -4
  112. data/lib/stripe/resources/person.rb +264 -1
  113. data/lib/stripe/resources/plan.rb +308 -6
  114. data/lib/stripe/resources/price.rb +609 -5
  115. data/lib/stripe/resources/product.rb +474 -2
  116. data/lib/stripe/resources/product_feature.rb +12 -0
  117. data/lib/stripe/resources/promotion_code.rb +216 -4
  118. data/lib/stripe/resources/quote.rb +927 -10
  119. data/lib/stripe/resources/radar/early_fraud_warning.rb +70 -2
  120. data/lib/stripe/resources/radar/value_list.rb +122 -6
  121. data/lib/stripe/resources/radar/value_list_item.rb +90 -4
  122. data/lib/stripe/resources/refund.rb +396 -4
  123. data/lib/stripe/resources/reporting/report_run.rb +143 -2
  124. data/lib/stripe/resources/reporting/report_type.rb +29 -2
  125. data/lib/stripe/resources/reserve_transaction.rb +22 -0
  126. data/lib/stripe/resources/reversal.rb +21 -0
  127. data/lib/stripe/resources/review.rb +101 -2
  128. data/lib/stripe/resources/setup_attempt.rb +370 -2
  129. data/lib/stripe/resources/setup_intent.rb +3477 -4
  130. data/lib/stripe/resources/shipping_rate.rb +254 -4
  131. data/lib/stripe/resources/sigma/scheduled_query_run.rb +47 -2
  132. data/lib/stripe/resources/source.rb +1203 -4
  133. data/lib/stripe/resources/source_mandate_notification.rb +66 -0
  134. data/lib/stripe/resources/source_transaction.rb +85 -0
  135. data/lib/stripe/resources/subscription.rb +1697 -11
  136. data/lib/stripe/resources/subscription_item.rb +319 -11
  137. data/lib/stripe/resources/subscription_schedule.rb +1285 -4
  138. data/lib/stripe/resources/tax/calculation.rb +378 -0
  139. data/lib/stripe/resources/tax/calculation_line_item.rb +56 -0
  140. data/lib/stripe/resources/tax/registration.rb +2375 -2
  141. data/lib/stripe/resources/tax/settings.rb +117 -0
  142. data/lib/stripe/resources/tax/transaction.rb +258 -0
  143. data/lib/stripe/resources/tax/transaction_line_item.rb +31 -0
  144. data/lib/stripe/resources/tax_code.rb +28 -2
  145. data/lib/stripe/resources/tax_deducted_at_source.rb +22 -0
  146. data/lib/stripe/resources/tax_id.rb +114 -2
  147. data/lib/stripe/resources/tax_rate.rb +197 -6
  148. data/lib/stripe/resources/terminal/configuration.rb +1266 -6
  149. data/lib/stripe/resources/terminal/connection_token.rb +18 -0
  150. data/lib/stripe/resources/terminal/location.rb +172 -6
  151. data/lib/stripe/resources/terminal/reader.rb +433 -6
  152. data/lib/stripe/resources/test_helpers/test_clock.rb +81 -4
  153. data/lib/stripe/resources/token.rb +1160 -1
  154. data/lib/stripe/resources/topup.rb +169 -4
  155. data/lib/stripe/resources/transfer.rb +148 -4
  156. data/lib/stripe/resources/treasury/credit_reversal.rb +85 -2
  157. data/lib/stripe/resources/treasury/debit_reversal.rb +96 -2
  158. data/lib/stripe/resources/treasury/financial_account.rb +749 -5
  159. data/lib/stripe/resources/treasury/financial_account_features.rb +189 -0
  160. data/lib/stripe/resources/treasury/inbound_transfer.rb +231 -3
  161. data/lib/stripe/resources/treasury/outbound_payment.rb +491 -3
  162. data/lib/stripe/resources/treasury/outbound_transfer.rb +346 -3
  163. data/lib/stripe/resources/treasury/received_credit.rb +239 -2
  164. data/lib/stripe/resources/treasury/received_debit.rb +198 -2
  165. data/lib/stripe/resources/treasury/transaction.rb +169 -2
  166. data/lib/stripe/resources/treasury/transaction_entry.rb +150 -2
  167. data/lib/stripe/resources/v2/amount.rb +9 -0
  168. data/lib/stripe/resources/v2/billing/meter_event.rb +34 -0
  169. data/lib/stripe/resources/v2/billing/meter_event_adjustment.rb +36 -0
  170. data/lib/stripe/resources/v2/billing/meter_event_session.rb +29 -0
  171. data/lib/stripe/resources/v2/event.rb +41 -0
  172. data/lib/stripe/resources/v2/event_destination.rb +73 -0
  173. data/lib/stripe/resources/webhook_endpoint.rb +119 -11
  174. data/lib/stripe/resources.rb +19 -2
  175. data/lib/stripe/search_result_object.rb +1 -1
  176. data/lib/stripe/services/account_capability_service.rb +71 -0
  177. data/lib/stripe/services/account_external_account_service.rb +318 -0
  178. data/lib/stripe/services/account_link_service.rb +63 -0
  179. data/lib/stripe/services/account_login_link_service.rb +28 -0
  180. data/lib/stripe/services/account_person_service.rb +936 -0
  181. data/lib/stripe/services/account_service.rb +4100 -0
  182. data/lib/stripe/services/account_session_service.rb +501 -0
  183. data/lib/stripe/services/apple_pay_domain_service.rb +101 -0
  184. data/lib/stripe/services/application_fee_refund_service.rb +114 -0
  185. data/lib/stripe/services/application_fee_service.rb +92 -0
  186. data/lib/stripe/services/apps/secret_service.rb +168 -0
  187. data/lib/stripe/services/apps_service.rb +13 -0
  188. data/lib/stripe/services/balance_service.rb +21 -0
  189. data/lib/stripe/services/balance_transaction_service.rb +101 -0
  190. data/lib/stripe/services/billing/alert_service.rb +187 -0
  191. data/lib/stripe/services/billing/credit_balance_summary_service.rb +67 -0
  192. data/lib/stripe/services/billing/credit_balance_transaction_service.rb +70 -0
  193. data/lib/stripe/services/billing/credit_grant_service.rb +240 -0
  194. data/lib/stripe/services/billing/meter_event_adjustment_service.rb +45 -0
  195. data/lib/stripe/services/billing/meter_event_service.rb +40 -0
  196. data/lib/stripe/services/billing/meter_event_summary_service.rb +58 -0
  197. data/lib/stripe/services/billing/meter_service.rb +211 -0
  198. data/lib/stripe/services/billing_portal/configuration_service.rb +496 -0
  199. data/lib/stripe/services/billing_portal/session_service.rb +192 -0
  200. data/lib/stripe/services/billing_portal_service.rb +14 -0
  201. data/lib/stripe/services/billing_service.rb +20 -0
  202. data/lib/stripe/services/charge_service.rb +471 -0
  203. data/lib/stripe/services/checkout/session_line_item_service.rb +37 -0
  204. data/lib/stripe/services/checkout/session_service.rb +2466 -0
  205. data/lib/stripe/services/checkout_service.rb +13 -0
  206. data/lib/stripe/services/climate/order_service.rb +170 -0
  207. data/lib/stripe/services/climate/product_service.rb +57 -0
  208. data/lib/stripe/services/climate/supplier_service.rb +57 -0
  209. data/lib/stripe/services/climate_service.rb +15 -0
  210. data/lib/stripe/services/confirmation_token_service.rb +26 -0
  211. data/lib/stripe/services/country_spec_service.rb +55 -0
  212. data/lib/stripe/services/coupon_service.rb +203 -0
  213. data/lib/stripe/services/credit_note_line_item_service.rb +35 -0
  214. data/lib/stripe/services/credit_note_preview_lines_service.rb +169 -0
  215. data/lib/stripe/services/credit_note_service.rb +458 -0
  216. data/lib/stripe/services/customer_balance_transaction_service.rb +113 -0
  217. data/lib/stripe/services/customer_cash_balance_service.rb +57 -0
  218. data/lib/stripe/services/customer_cash_balance_transaction_service.rb +55 -0
  219. data/lib/stripe/services/customer_funding_instructions_service.rb +61 -0
  220. data/lib/stripe/services/customer_payment_method_service.rb +68 -0
  221. data/lib/stripe/services/customer_payment_source_service.rb +255 -0
  222. data/lib/stripe/services/customer_service.rb +666 -0
  223. data/lib/stripe/services/customer_session_service.rb +113 -0
  224. data/lib/stripe/services/customer_tax_id_service.rb +95 -0
  225. data/lib/stripe/services/dispute_service.rb +422 -0
  226. data/lib/stripe/services/entitlements/active_entitlement_service.rb +66 -0
  227. data/lib/stripe/services/entitlements/feature_service.rb +128 -0
  228. data/lib/stripe/services/entitlements_service.rb +14 -0
  229. data/lib/stripe/services/ephemeral_key_service.rb +64 -0
  230. data/lib/stripe/services/event_service.rb +87 -0
  231. data/lib/stripe/services/exchange_rate_service.rb +55 -0
  232. data/lib/stripe/services/file_link_service.rb +132 -0
  233. data/lib/stripe/services/file_service.rb +124 -0
  234. data/lib/stripe/services/financial_connections/account_owner_service.rb +46 -0
  235. data/lib/stripe/services/financial_connections/account_service.rb +177 -0
  236. data/lib/stripe/services/financial_connections/session_service.rb +98 -0
  237. data/lib/stripe/services/financial_connections/transaction_service.rb +100 -0
  238. data/lib/stripe/services/financial_connections_service.rb +15 -0
  239. data/lib/stripe/services/forwarding/request_service.rb +147 -0
  240. data/lib/stripe/services/forwarding_service.rb +13 -0
  241. data/lib/stripe/services/identity/verification_report_service.rb +95 -0
  242. data/lib/stripe/services/identity/verification_session_service.rb +337 -0
  243. data/lib/stripe/services/identity_service.rb +14 -0
  244. data/lib/stripe/services/invoice_item_service.rb +395 -0
  245. data/lib/stripe/services/invoice_line_item_service.rb +252 -0
  246. data/lib/stripe/services/invoice_payment_service.rb +83 -0
  247. data/lib/stripe/services/invoice_rendering_template_service.rb +101 -0
  248. data/lib/stripe/services/invoice_service.rb +2831 -0
  249. data/lib/stripe/services/issuing/authorization_service.rb +169 -0
  250. data/lib/stripe/services/issuing/card_service.rb +507 -0
  251. data/lib/stripe/services/issuing/cardholder_service.rb +577 -0
  252. data/lib/stripe/services/issuing/dispute_service.rb +696 -0
  253. data/lib/stripe/services/issuing/personalization_design_service.rb +245 -0
  254. data/lib/stripe/services/issuing/physical_bundle_service.rb +70 -0
  255. data/lib/stripe/services/issuing/token_service.rb +114 -0
  256. data/lib/stripe/services/issuing/transaction_service.rb +118 -0
  257. data/lib/stripe/services/issuing_service.rb +20 -0
  258. data/lib/stripe/services/mandate_service.rb +26 -0
  259. data/lib/stripe/services/oauth_service.rb +63 -0
  260. data/lib/stripe/services/payment_intent_service.rb +7258 -0
  261. data/lib/stripe/services/payment_link_line_item_service.rb +35 -0
  262. data/lib/stripe/services/payment_link_service.rb +1333 -0
  263. data/lib/stripe/services/payment_method_configuration_service.rb +2054 -0
  264. data/lib/stripe/services/payment_method_domain_service.rb +142 -0
  265. data/lib/stripe/services/payment_method_service.rb +894 -0
  266. data/lib/stripe/services/payout_service.rb +225 -0
  267. data/lib/stripe/services/plan_service.rb +298 -0
  268. data/lib/stripe/services/price_service.rb +545 -0
  269. data/lib/stripe/services/product_feature_service.rb +92 -0
  270. data/lib/stripe/services/product_service.rb +495 -0
  271. data/lib/stripe/services/promotion_code_service.rb +228 -0
  272. data/lib/stripe/services/quote_computed_upfront_line_items_service.rb +35 -0
  273. data/lib/stripe/services/quote_line_item_service.rb +35 -0
  274. data/lib/stripe/services/quote_service.rb +703 -0
  275. data/lib/stripe/services/radar/early_fraud_warning_service.rb +93 -0
  276. data/lib/stripe/services/radar/value_list_item_service.rb +131 -0
  277. data/lib/stripe/services/radar/value_list_service.rb +166 -0
  278. data/lib/stripe/services/radar_service.rb +15 -0
  279. data/lib/stripe/services/refund_service.rb +200 -0
  280. data/lib/stripe/services/reporting/report_run_service.rb +147 -0
  281. data/lib/stripe/services/reporting/report_type_service.rb +48 -0
  282. data/lib/stripe/services/reporting_service.rb +14 -0
  283. data/lib/stripe/services/review_service.rb +89 -0
  284. data/lib/stripe/services/setup_attempt_service.rb +68 -0
  285. data/lib/stripe/services/setup_intent_service.rb +3268 -0
  286. data/lib/stripe/services/shipping_rate_service.rb +250 -0
  287. data/lib/stripe/services/sigma/scheduled_query_run_service.rb +57 -0
  288. data/lib/stripe/services/sigma_service.rb +13 -0
  289. data/lib/stripe/services/source_service.rb +665 -0
  290. data/lib/stripe/services/source_transaction_service.rb +35 -0
  291. data/lib/stripe/services/subscription_item_service.rb +346 -0
  292. data/lib/stripe/services/subscription_schedule_service.rb +1134 -0
  293. data/lib/stripe/services/subscription_service.rb +1539 -0
  294. data/lib/stripe/services/tax/calculation_line_item_service.rb +37 -0
  295. data/lib/stripe/services/tax/calculation_service.rb +242 -0
  296. data/lib/stripe/services/tax/registration_service.rb +1618 -0
  297. data/lib/stripe/services/tax/settings_service.rb +104 -0
  298. data/lib/stripe/services/tax/transaction_line_item_service.rb +37 -0
  299. data/lib/stripe/services/tax/transaction_service.rb +159 -0
  300. data/lib/stripe/services/tax_code_service.rb +49 -0
  301. data/lib/stripe/services/tax_id_service.rb +117 -0
  302. data/lib/stripe/services/tax_rate_service.rb +193 -0
  303. data/lib/stripe/services/tax_service.rb +16 -0
  304. data/lib/stripe/services/terminal/configuration_service.rb +1060 -0
  305. data/lib/stripe/services/terminal/connection_token_service.rb +31 -0
  306. data/lib/stripe/services/terminal/location_service.rb +208 -0
  307. data/lib/stripe/services/terminal/reader_service.rb +384 -0
  308. data/lib/stripe/services/terminal_service.rb +16 -0
  309. data/lib/stripe/services/test_helpers/confirmation_token_service.rb +661 -0
  310. data/lib/stripe/services/test_helpers/customer_service.rb +37 -0
  311. data/lib/stripe/services/test_helpers/issuing/authorization_service.rb +832 -0
  312. data/lib/stripe/services/test_helpers/issuing/card_service.rb +110 -0
  313. data/lib/stripe/services/test_helpers/issuing/personalization_design_service.rb +84 -0
  314. data/lib/stripe/services/test_helpers/issuing/transaction_service.rb +675 -0
  315. data/lib/stripe/services/test_helpers/issuing_service.rb +19 -0
  316. data/lib/stripe/services/test_helpers/refund_service.rb +28 -0
  317. data/lib/stripe/services/test_helpers/terminal/reader_service.rb +65 -0
  318. data/lib/stripe/services/test_helpers/terminal_service.rb +15 -0
  319. data/lib/stripe/services/test_helpers/test_clock_service.rb +120 -0
  320. data/lib/stripe/services/test_helpers/treasury/inbound_transfer_service.rb +81 -0
  321. data/lib/stripe/services/test_helpers/treasury/outbound_payment_service.rb +141 -0
  322. data/lib/stripe/services/test_helpers/treasury/outbound_transfer_service.rb +141 -0
  323. data/lib/stripe/services/test_helpers/treasury/received_credit_service.rb +81 -0
  324. data/lib/stripe/services/test_helpers/treasury/received_debit_service.rb +81 -0
  325. data/lib/stripe/services/test_helpers/treasury_service.rb +19 -0
  326. data/lib/stripe/services/test_helpers_service.rb +19 -0
  327. data/lib/stripe/services/token_service.rb +1163 -0
  328. data/lib/stripe/services/topup_service.rb +191 -0
  329. data/lib/stripe/services/transfer_reversal_service.rb +122 -0
  330. data/lib/stripe/services/transfer_service.rb +166 -0
  331. data/lib/stripe/services/treasury/credit_reversal_service.rb +100 -0
  332. data/lib/stripe/services/treasury/debit_reversal_service.rb +104 -0
  333. data/lib/stripe/services/treasury/financial_account_features_service.rb +196 -0
  334. data/lib/stripe/services/treasury/financial_account_service.rb +554 -0
  335. data/lib/stripe/services/treasury/inbound_transfer_service.rb +140 -0
  336. data/lib/stripe/services/treasury/outbound_payment_service.rb +310 -0
  337. data/lib/stripe/services/treasury/outbound_transfer_service.rb +176 -0
  338. data/lib/stripe/services/treasury/received_credit_service.rb +82 -0
  339. data/lib/stripe/services/treasury/received_debit_service.rb +70 -0
  340. data/lib/stripe/services/treasury/transaction_entry_service.rb +117 -0
  341. data/lib/stripe/services/treasury/transaction_service.rb +125 -0
  342. data/lib/stripe/services/treasury_service.rb +22 -0
  343. data/lib/stripe/services/v1_services.rb +90 -0
  344. data/lib/stripe/services/v2/billing/meter_event_adjustment_service.rb +44 -0
  345. data/lib/stripe/services/v2/billing/meter_event_service.rb +46 -0
  346. data/lib/stripe/services/v2/billing/meter_event_session_service.rb +24 -0
  347. data/lib/stripe/services/v2/billing/meter_event_stream_service.rb +56 -0
  348. data/lib/stripe/services/v2/billing_service.rb +18 -0
  349. data/lib/stripe/services/v2/core/event_destination_service.rb +241 -0
  350. data/lib/stripe/services/v2/core/event_service.rb +49 -0
  351. data/lib/stripe/services/v2/core_service.rb +16 -0
  352. data/lib/stripe/services/v2_services.rb +14 -0
  353. data/lib/stripe/services/webhook_endpoint_service.rb +157 -0
  354. data/lib/stripe/services.rb +180 -0
  355. data/lib/stripe/singleton_api_resource.rb +1 -18
  356. data/lib/stripe/stripe_client.rb +53 -1031
  357. data/lib/stripe/stripe_configuration.rb +52 -19
  358. data/lib/stripe/stripe_object.rb +54 -20
  359. data/lib/stripe/stripe_service.rb +32 -0
  360. data/lib/stripe/thin_event.rb +37 -0
  361. data/lib/stripe/util.rb +78 -37
  362. data/lib/stripe/v2_list_object.rb +84 -0
  363. data/lib/stripe/version.rb +1 -1
  364. data/lib/stripe/webhook.rb +1 -1
  365. data/lib/stripe.rb +38 -25
  366. data/rbi/stripe/resources/account.rbi +4840 -0
  367. data/rbi/stripe/resources/account_link.rbi +74 -0
  368. data/rbi/stripe/resources/account_session.rbi +894 -0
  369. data/rbi/stripe/resources/apple_pay_domain.rbi +90 -0
  370. data/rbi/stripe/resources/application.rbi +20 -0
  371. data/rbi/stripe/resources/application_fee.rbi +118 -0
  372. data/rbi/stripe/resources/application_fee_refund.rbi +37 -0
  373. data/rbi/stripe/resources/apps/secret.rbi +195 -0
  374. data/rbi/stripe/resources/balance.rbi +180 -0
  375. data/rbi/stripe/resources/balance_transaction.rbi +144 -0
  376. data/rbi/stripe/resources/bank_account.rbi +127 -0
  377. data/rbi/stripe/resources/billing/alert.rbi +201 -0
  378. data/rbi/stripe/resources/billing/alert_triggered.rbi +28 -0
  379. data/rbi/stripe/resources/billing/credit_balance_summary.rbi +63 -0
  380. data/rbi/stripe/resources/billing/credit_balance_transaction.rbi +147 -0
  381. data/rbi/stripe/resources/billing/credit_grant.rbi +291 -0
  382. data/rbi/stripe/resources/billing/meter.rbi +226 -0
  383. data/rbi/stripe/resources/billing/meter_event.rbi +64 -0
  384. data/rbi/stripe/resources/billing/meter_event_adjustment.rbi +64 -0
  385. data/rbi/stripe/resources/billing/meter_event_summary.rbi +35 -0
  386. data/rbi/stripe/resources/billing_portal/configuration.rbi +645 -0
  387. data/rbi/stripe/resources/billing_portal/session.rbi +345 -0
  388. data/rbi/stripe/resources/capability.rbi +125 -0
  389. data/rbi/stripe/resources/card.rbi +125 -0
  390. data/rbi/stripe/resources/cash_balance.rbi +32 -0
  391. data/rbi/stripe/resources/charge.rbi +2054 -0
  392. data/rbi/stripe/resources/checkout/session.rbi +3951 -0
  393. data/rbi/stripe/resources/climate/order.rbi +245 -0
  394. data/rbi/stripe/resources/climate/product.rbi +75 -0
  395. data/rbi/stripe/resources/climate/supplier.rbi +72 -0
  396. data/rbi/stripe/resources/confirmation_token.rbi +1793 -0
  397. data/rbi/stripe/resources/connect_collection_transfer.rbi +26 -0
  398. data/rbi/stripe/resources/country_spec.rbi +85 -0
  399. data/rbi/stripe/resources/coupon.rbi +252 -0
  400. data/rbi/stripe/resources/credit_note.rbi +747 -0
  401. data/rbi/stripe/resources/credit_note_line_item.rbi +101 -0
  402. data/rbi/stripe/resources/customer.rbi +1009 -0
  403. data/rbi/stripe/resources/customer_balance_transaction.rbi +56 -0
  404. data/rbi/stripe/resources/customer_cash_balance_transaction.rbi +151 -0
  405. data/rbi/stripe/resources/customer_session.rbi +200 -0
  406. data/rbi/stripe/resources/discount.rbi +53 -0
  407. data/rbi/stripe/resources/dispute.rbi +761 -0
  408. data/rbi/stripe/resources/entitlements/active_entitlement.rbi +58 -0
  409. data/rbi/stripe/resources/entitlements/active_entitlement_summary.rbi +23 -0
  410. data/rbi/stripe/resources/entitlements/feature.rbi +117 -0
  411. data/rbi/stripe/resources/ephemeral_key.rbi +44 -0
  412. data/rbi/stripe/resources/event.rbi +146 -0
  413. data/rbi/stripe/resources/exchange_rate.rbi +66 -0
  414. data/rbi/stripe/resources/file.rbi +143 -0
  415. data/rbi/stripe/resources/file_link.rbi +141 -0
  416. data/rbi/stripe/resources/financial_connections/account.rbi +339 -0
  417. data/rbi/stripe/resources/financial_connections/account_owner.rbi +35 -0
  418. data/rbi/stripe/resources/financial_connections/account_ownership.rbi +23 -0
  419. data/rbi/stripe/resources/financial_connections/session.rbi +123 -0
  420. data/rbi/stripe/resources/financial_connections/transaction.rbi +124 -0
  421. data/rbi/stripe/resources/forwarding/request.rbi +216 -0
  422. data/rbi/stripe/resources/funding_instructions.rbi +437 -0
  423. data/rbi/stripe/resources/identity/verification_report.rbi +351 -0
  424. data/rbi/stripe/resources/identity/verification_session.rbi +517 -0
  425. data/rbi/stripe/resources/invoice.rbi +3733 -0
  426. data/rbi/stripe/resources/invoice_item.rbi +475 -0
  427. data/rbi/stripe/resources/invoice_line_item.rbi +432 -0
  428. data/rbi/stripe/resources/invoice_payment.rbi +114 -0
  429. data/rbi/stripe/resources/invoice_rendering_template.rbi +104 -0
  430. data/rbi/stripe/resources/issuing/authorization.rbi +1283 -0
  431. data/rbi/stripe/resources/issuing/card.rbi +741 -0
  432. data/rbi/stripe/resources/issuing/cardholder.rbi +744 -0
  433. data/rbi/stripe/resources/issuing/dispute.rbi +913 -0
  434. data/rbi/stripe/resources/issuing/personalization_design.rbi +338 -0
  435. data/rbi/stripe/resources/issuing/physical_bundle.rbi +79 -0
  436. data/rbi/stripe/resources/issuing/token.rbi +226 -0
  437. data/rbi/stripe/resources/issuing/transaction.rbi +1061 -0
  438. data/rbi/stripe/resources/line_item.rbi +72 -0
  439. data/rbi/stripe/resources/login_link.rbi +18 -0
  440. data/rbi/stripe/resources/mandate.rbi +187 -0
  441. data/rbi/stripe/resources/payment_intent.rbi +9731 -0
  442. data/rbi/stripe/resources/payment_link.rbi +1801 -0
  443. data/rbi/stripe/resources/payment_method.rbi +1822 -0
  444. data/rbi/stripe/resources/payment_method_configuration.rbi +3154 -0
  445. data/rbi/stripe/resources/payment_method_domain.rbi +212 -0
  446. data/rbi/stripe/resources/payout.rbi +300 -0
  447. data/rbi/stripe/resources/person.rbi +371 -0
  448. data/rbi/stripe/resources/plan.rbi +373 -0
  449. data/rbi/stripe/resources/price.rbi +694 -0
  450. data/rbi/stripe/resources/product.rbi +557 -0
  451. data/rbi/stripe/resources/product_feature.rbi +26 -0
  452. data/rbi/stripe/resources/promotion_code.rbi +261 -0
  453. data/rbi/stripe/resources/quote.rbi +1123 -0
  454. data/rbi/stripe/resources/radar/early_fraud_warning.rbi +98 -0
  455. data/rbi/stripe/resources/radar/value_list.rbi +170 -0
  456. data/rbi/stripe/resources/radar/value_list_item.rbi +131 -0
  457. data/rbi/stripe/resources/refund.rbi +516 -0
  458. data/rbi/stripe/resources/reporting/report_run.rbi +191 -0
  459. data/rbi/stripe/resources/reporting/report_type.rbi +57 -0
  460. data/rbi/stripe/resources/reserve_transaction.rbi +23 -0
  461. data/rbi/stripe/resources/reversal.rbi +51 -0
  462. data/rbi/stripe/resources/review.rbi +154 -0
  463. data/rbi/stripe/resources/setup_attempt.rbi +477 -0
  464. data/rbi/stripe/resources/setup_intent.rbi +3860 -0
  465. data/rbi/stripe/resources/shipping_rate.rbi +305 -0
  466. data/rbi/stripe/resources/sigma/scheduled_query_run.rbi +75 -0
  467. data/rbi/stripe/resources/source.rbi +1496 -0
  468. data/rbi/stripe/resources/source_mandate_notification.rbi +77 -0
  469. data/rbi/stripe/resources/source_transaction.rbi +127 -0
  470. data/rbi/stripe/resources/subscription.rbi +1964 -0
  471. data/rbi/stripe/resources/subscription_item.rbi +370 -0
  472. data/rbi/stripe/resources/subscription_schedule.rbi +1495 -0
  473. data/rbi/stripe/resources/tax/calculation.rbi +474 -0
  474. data/rbi/stripe/resources/tax/calculation_line_item.rbi +88 -0
  475. data/rbi/stripe/resources/tax/registration.rbi +2485 -0
  476. data/rbi/stripe/resources/tax/settings.rbi +141 -0
  477. data/rbi/stripe/resources/tax/transaction.rbi +351 -0
  478. data/rbi/stripe/resources/tax/transaction_line_item.rbi +54 -0
  479. data/rbi/stripe/resources/tax_code.rbi +44 -0
  480. data/rbi/stripe/resources/tax_deducted_at_source.rbi +23 -0
  481. data/rbi/stripe/resources/tax_id.rbi +167 -0
  482. data/rbi/stripe/resources/tax_rate.rbi +239 -0
  483. data/rbi/stripe/resources/terminal/configuration.rbi +1388 -0
  484. data/rbi/stripe/resources/terminal/connection_token.rbi +37 -0
  485. data/rbi/stripe/resources/terminal/location.rbi +224 -0
  486. data/rbi/stripe/resources/terminal/reader.rbi +587 -0
  487. data/rbi/stripe/resources/test_helpers/test_clock.rbi +134 -0
  488. data/rbi/stripe/resources/token.rbi +1217 -0
  489. data/rbi/stripe/resources/topup.rbi +222 -0
  490. data/rbi/stripe/resources/transfer.rbi +199 -0
  491. data/rbi/stripe/resources/treasury/credit_reversal.rbi +119 -0
  492. data/rbi/stripe/resources/treasury/debit_reversal.rbi +131 -0
  493. data/rbi/stripe/resources/treasury/financial_account.rbi +865 -0
  494. data/rbi/stripe/resources/treasury/financial_account_features.rbi +260 -0
  495. data/rbi/stripe/resources/treasury/inbound_transfer.rbi +295 -0
  496. data/rbi/stripe/resources/treasury/outbound_payment.rbi +592 -0
  497. data/rbi/stripe/resources/treasury/outbound_transfer.rbi +431 -0
  498. data/rbi/stripe/resources/treasury/received_credit.rbi +302 -0
  499. data/rbi/stripe/resources/treasury/received_debit.rbi +256 -0
  500. data/rbi/stripe/resources/treasury/transaction.rbi +215 -0
  501. data/rbi/stripe/resources/treasury/transaction_entry.rbi +192 -0
  502. data/rbi/stripe/resources/v2/amount.rbi +14 -0
  503. data/rbi/stripe/resources/v2/billing/meter_event.rbi +37 -0
  504. data/rbi/stripe/resources/v2/billing/meter_event_adjustment.rbi +41 -0
  505. data/rbi/stripe/resources/v2/billing/meter_event_session.rbi +31 -0
  506. data/rbi/stripe/resources/v2/event.rbi +48 -0
  507. data/rbi/stripe/resources/v2/event_destination.rbi +91 -0
  508. data/rbi/stripe/resources/webhook_endpoint.rbi +170 -0
  509. data/rbi/stripe/services/account_capability_service.rbi +51 -0
  510. data/rbi/stripe/services/account_external_account_service.rbi +306 -0
  511. data/rbi/stripe/services/account_link_service.rbi +58 -0
  512. data/rbi/stripe/services/account_login_link_service.rbi +22 -0
  513. data/rbi/stripe/services/account_person_service.rbi +923 -0
  514. data/rbi/stripe/services/account_service.rbi +4143 -0
  515. data/rbi/stripe/services/account_session_service.rbi +572 -0
  516. data/rbi/stripe/services/apple_pay_domain_service.rbi +78 -0
  517. data/rbi/stripe/services/application_fee_refund_service.rbi +93 -0
  518. data/rbi/stripe/services/application_fee_service.rbi +78 -0
  519. data/rbi/stripe/services/apps/secret_service.rbi +151 -0
  520. data/rbi/stripe/services/apps_service.rbi +9 -0
  521. data/rbi/stripe/services/balance_service.rbi +21 -0
  522. data/rbi/stripe/services/balance_transaction_service.rbi +93 -0
  523. data/rbi/stripe/services/billing/alert_service.rbi +152 -0
  524. data/rbi/stripe/services/billing/credit_balance_summary_service.rbi +68 -0
  525. data/rbi/stripe/services/billing/credit_balance_transaction_service.rbi +59 -0
  526. data/rbi/stripe/services/billing/credit_grant_service.rbi +211 -0
  527. data/rbi/stripe/services/billing/meter_event_adjustment_service.rbi +42 -0
  528. data/rbi/stripe/services/billing/meter_event_service.rbi +42 -0
  529. data/rbi/stripe/services/billing/meter_event_summary_service.rbi +54 -0
  530. data/rbi/stripe/services/billing/meter_service.rbi +163 -0
  531. data/rbi/stripe/services/billing_portal/configuration_service.rbi +511 -0
  532. data/rbi/stripe/services/billing_portal/session_service.rbi +204 -0
  533. data/rbi/stripe/services/billing_portal_service.rbi +10 -0
  534. data/rbi/stripe/services/billing_service.rbi +15 -0
  535. data/rbi/stripe/services/charge_service.rbi +448 -0
  536. data/rbi/stripe/services/checkout/session_line_item_service.rbi +33 -0
  537. data/rbi/stripe/services/checkout/session_service.rbi +2585 -0
  538. data/rbi/stripe/services/checkout_service.rbi +9 -0
  539. data/rbi/stripe/services/climate/order_service.rbi +142 -0
  540. data/rbi/stripe/services/climate/product_service.rbi +46 -0
  541. data/rbi/stripe/services/climate/supplier_service.rbi +46 -0
  542. data/rbi/stripe/services/climate_service.rbi +11 -0
  543. data/rbi/stripe/services/confirmation_token_service.rbi +20 -0
  544. data/rbi/stripe/services/country_spec_service.rbi +44 -0
  545. data/rbi/stripe/services/coupon_service.rbi +196 -0
  546. data/rbi/stripe/services/credit_note_line_item_service.rbi +31 -0
  547. data/rbi/stripe/services/credit_note_preview_lines_service.rbi +167 -0
  548. data/rbi/stripe/services/credit_note_service.rbi +416 -0
  549. data/rbi/stripe/services/customer_balance_transaction_service.rbi +92 -0
  550. data/rbi/stripe/services/customer_cash_balance_service.rbi +45 -0
  551. data/rbi/stripe/services/customer_cash_balance_transaction_service.rbi +44 -0
  552. data/rbi/stripe/services/customer_funding_instructions_service.rbi +59 -0
  553. data/rbi/stripe/services/customer_payment_method_service.rbi +57 -0
  554. data/rbi/stripe/services/customer_payment_source_service.rbi +232 -0
  555. data/rbi/stripe/services/customer_service.rbi +651 -0
  556. data/rbi/stripe/services/customer_session_service.rbi +116 -0
  557. data/rbi/stripe/services/customer_tax_id_service.rbi +72 -0
  558. data/rbi/stripe/services/dispute_service.rbi +424 -0
  559. data/rbi/stripe/services/entitlements/active_entitlement_service.rbi +55 -0
  560. data/rbi/stripe/services/entitlements/feature_service.rbi +107 -0
  561. data/rbi/stripe/services/entitlements_service.rbi +10 -0
  562. data/rbi/stripe/services/ephemeral_key_service.rbi +53 -0
  563. data/rbi/stripe/services/event_service.rbi +83 -0
  564. data/rbi/stripe/services/exchange_rate_service.rbi +44 -0
  565. data/rbi/stripe/services/file_link_service.rbi +124 -0
  566. data/rbi/stripe/services/file_service.rbi +116 -0
  567. data/rbi/stripe/services/financial_connections/account_owner_service.rbi +42 -0
  568. data/rbi/stripe/services/financial_connections/account_service.rbi +133 -0
  569. data/rbi/stripe/services/financial_connections/session_service.rbi +88 -0
  570. data/rbi/stripe/services/financial_connections/transaction_service.rbi +92 -0
  571. data/rbi/stripe/services/financial_connections_service.rbi +11 -0
  572. data/rbi/stripe/services/forwarding/request_service.rbi +134 -0
  573. data/rbi/stripe/services/forwarding_service.rbi +9 -0
  574. data/rbi/stripe/services/identity/verification_report_service.rbi +87 -0
  575. data/rbi/stripe/services/identity/verification_session_service.rbi +323 -0
  576. data/rbi/stripe/services/identity_service.rbi +10 -0
  577. data/rbi/stripe/services/invoice_item_service.rbi +368 -0
  578. data/rbi/stripe/services/invoice_line_item_service.rbi +259 -0
  579. data/rbi/stripe/services/invoice_payment_service.rbi +71 -0
  580. data/rbi/stripe/services/invoice_rendering_template_service.rbi +82 -0
  581. data/rbi/stripe/services/invoice_service.rbi +2920 -0
  582. data/rbi/stripe/services/issuing/authorization_service.rbi +146 -0
  583. data/rbi/stripe/services/issuing/card_service.rbi +495 -0
  584. data/rbi/stripe/services/issuing/cardholder_service.rbi +587 -0
  585. data/rbi/stripe/services/issuing/dispute_service.rbi +707 -0
  586. data/rbi/stripe/services/issuing/personalization_design_service.rbi +243 -0
  587. data/rbi/stripe/services/issuing/physical_bundle_service.rbi +59 -0
  588. data/rbi/stripe/services/issuing/token_service.rbi +99 -0
  589. data/rbi/stripe/services/issuing/transaction_service.rbi +105 -0
  590. data/rbi/stripe/services/issuing_service.rbi +16 -0
  591. data/rbi/stripe/services/mandate_service.rbi +20 -0
  592. data/rbi/stripe/services/payment_intent_service.rbi +7759 -0
  593. data/rbi/stripe/services/payment_link_line_item_service.rbi +31 -0
  594. data/rbi/stripe/services/payment_link_service.rbi +1352 -0
  595. data/rbi/stripe/services/payment_method_configuration_service.rbi +2211 -0
  596. data/rbi/stripe/services/payment_method_domain_service.rbi +112 -0
  597. data/rbi/stripe/services/payment_method_service.rbi +840 -0
  598. data/rbi/stripe/services/payout_service.rbi +205 -0
  599. data/rbi/stripe/services/plan_service.rbi +284 -0
  600. data/rbi/stripe/services/price_service.rbi +546 -0
  601. data/rbi/stripe/services/product_feature_service.rbi +69 -0
  602. data/rbi/stripe/services/product_service.rbi +479 -0
  603. data/rbi/stripe/services/promotion_code_service.rbi +214 -0
  604. data/rbi/stripe/services/quote_computed_upfront_line_items_service.rbi +31 -0
  605. data/rbi/stripe/services/quote_line_item_service.rbi +31 -0
  606. data/rbi/stripe/services/quote_service.rbi +686 -0
  607. data/rbi/stripe/services/radar/early_fraud_warning_service.rbi +85 -0
  608. data/rbi/stripe/services/radar/value_list_item_service.rbi +111 -0
  609. data/rbi/stripe/services/radar/value_list_service.rbi +143 -0
  610. data/rbi/stripe/services/radar_service.rbi +11 -0
  611. data/rbi/stripe/services/refund_service.rbi +185 -0
  612. data/rbi/stripe/services/reporting/report_run_service.rbi +135 -0
  613. data/rbi/stripe/services/reporting/report_type_service.rbi +35 -0
  614. data/rbi/stripe/services/reporting_service.rbi +10 -0
  615. data/rbi/stripe/services/review_service.rbi +84 -0
  616. data/rbi/stripe/services/setup_attempt_service.rbi +65 -0
  617. data/rbi/stripe/services/setup_intent_service.rbi +3596 -0
  618. data/rbi/stripe/services/shipping_rate_service.rbi +241 -0
  619. data/rbi/stripe/services/sigma/scheduled_query_run_service.rbi +46 -0
  620. data/rbi/stripe/services/sigma_service.rbi +9 -0
  621. data/rbi/stripe/services/source_service.rbi +663 -0
  622. data/rbi/stripe/services/source_transaction_service.rbi +31 -0
  623. data/rbi/stripe/services/subscription_item_service.rbi +324 -0
  624. data/rbi/stripe/services/subscription_schedule_service.rbi +1192 -0
  625. data/rbi/stripe/services/subscription_service.rbi +1596 -0
  626. data/rbi/stripe/services/tax/calculation_line_item_service.rbi +33 -0
  627. data/rbi/stripe/services/tax/calculation_service.rbi +230 -0
  628. data/rbi/stripe/services/tax/registration_service.rbi +1689 -0
  629. data/rbi/stripe/services/tax/settings_service.rbi +93 -0
  630. data/rbi/stripe/services/tax/transaction_line_item_service.rbi +33 -0
  631. data/rbi/stripe/services/tax/transaction_service.rbi +146 -0
  632. data/rbi/stripe/services/tax_code_service.rbi +44 -0
  633. data/rbi/stripe/services/tax_id_service.rbi +112 -0
  634. data/rbi/stripe/services/tax_rate_service.rbi +185 -0
  635. data/rbi/stripe/services/tax_service.rbi +12 -0
  636. data/rbi/stripe/services/terminal/configuration_service.rbi +1120 -0
  637. data/rbi/stripe/services/terminal/connection_token_service.rbi +25 -0
  638. data/rbi/stripe/services/terminal/location_service.rbi +184 -0
  639. data/rbi/stripe/services/terminal/reader_service.rbi +344 -0
  640. data/rbi/stripe/services/terminal_service.rbi +12 -0
  641. data/rbi/stripe/services/test_helpers/confirmation_token_service.rbi +746 -0
  642. data/rbi/stripe/services/test_helpers/customer_service.rbi +33 -0
  643. data/rbi/stripe/services/test_helpers/issuing/authorization_service.rbi +848 -0
  644. data/rbi/stripe/services/test_helpers/issuing/card_service.rbi +76 -0
  645. data/rbi/stripe/services/test_helpers/issuing/personalization_design_service.rbi +69 -0
  646. data/rbi/stripe/services/test_helpers/issuing/transaction_service.rbi +711 -0
  647. data/rbi/stripe/services/test_helpers/issuing_service.rbi +14 -0
  648. data/rbi/stripe/services/test_helpers/refund_service.rbi +22 -0
  649. data/rbi/stripe/services/test_helpers/terminal/reader_service.rbi +62 -0
  650. data/rbi/stripe/services/test_helpers/terminal_service.rbi +11 -0
  651. data/rbi/stripe/services/test_helpers/test_clock_service.rbi +92 -0
  652. data/rbi/stripe/services/test_helpers/treasury/inbound_transfer_service.rbi +64 -0
  653. data/rbi/stripe/services/test_helpers/treasury/outbound_payment_service.rbi +125 -0
  654. data/rbi/stripe/services/test_helpers/treasury/outbound_transfer_service.rbi +125 -0
  655. data/rbi/stripe/services/test_helpers/treasury/received_credit_service.rbi +87 -0
  656. data/rbi/stripe/services/test_helpers/treasury/received_debit_service.rbi +87 -0
  657. data/rbi/stripe/services/test_helpers/treasury_service.rbi +15 -0
  658. data/rbi/stripe/services/test_helpers_service.rbi +15 -0
  659. data/rbi/stripe/services/token_service.rbi +1189 -0
  660. data/rbi/stripe/services/topup_service.rbi +176 -0
  661. data/rbi/stripe/services/transfer_reversal_service.rbi +101 -0
  662. data/rbi/stripe/services/transfer_service.rbi +152 -0
  663. data/rbi/stripe/services/treasury/credit_reversal_service.rbi +84 -0
  664. data/rbi/stripe/services/treasury/debit_reversal_service.rbi +88 -0
  665. data/rbi/stripe/services/treasury/financial_account_features_service.rbi +198 -0
  666. data/rbi/stripe/services/treasury/financial_account_service.rbi +562 -0
  667. data/rbi/stripe/services/treasury/inbound_transfer_service.rbi +117 -0
  668. data/rbi/stripe/services/treasury/outbound_payment_service.rbi +304 -0
  669. data/rbi/stripe/services/treasury/outbound_transfer_service.rbi +157 -0
  670. data/rbi/stripe/services/treasury/received_credit_service.rbi +72 -0
  671. data/rbi/stripe/services/treasury/received_debit_service.rbi +59 -0
  672. data/rbi/stripe/services/treasury/transaction_entry_service.rbi +111 -0
  673. data/rbi/stripe/services/treasury/transaction_service.rbi +122 -0
  674. data/rbi/stripe/services/treasury_service.rbi +18 -0
  675. data/rbi/stripe/services/v1_services.rbi +77 -0
  676. data/rbi/stripe/services/v2/billing/meter_event_adjustment_service.rbi +39 -0
  677. data/rbi/stripe/services/v2/billing/meter_event_service.rbi +42 -0
  678. data/rbi/stripe/services/v2/billing/meter_event_session_service.rbi +20 -0
  679. data/rbi/stripe/services/v2/billing/meter_event_stream_service.rbi +55 -0
  680. data/rbi/stripe/services/v2/billing_service.rbi +14 -0
  681. data/rbi/stripe/services/v2/core/event_destination_service.rbi +200 -0
  682. data/rbi/stripe/services/v2/core/event_service.rbi +38 -0
  683. data/rbi/stripe/services/v2/core_service.rbi +12 -0
  684. data/rbi/stripe/services/v2_services.rbi +10 -0
  685. data/rbi/stripe/services/webhook_endpoint_service.rbi +131 -0
  686. metadata +533 -4
  687. data/lib/stripe/resources/usage_record.rb +0 -17
  688. data/lib/stripe/resources/usage_record_summary.rb +0 -11
@@ -25,12 +25,11 @@ module Stripe
25
25
  # If `.logger` is set, the value of `.log_level` is ignored. The decision on
26
26
  # what levels to print is entirely deferred to the logger.
27
27
  class StripeConfiguration
28
- attr_accessor :api_key, :api_version, :client_id, :enable_telemetry, :logger, :stripe_account
28
+ attr_accessor :api_key, :api_version, :client_id, :enable_telemetry, :logger, :stripe_account, :stripe_context
29
29
 
30
- attr_reader :api_base, :uploads_base, :connect_base, :ca_bundle_path, :log_level, :initial_network_retry_delay,
31
- # rubocop:todo Layout/LineLength
32
- :max_network_retries, :max_network_retry_delay, :open_timeout, :read_timeout, :write_timeout, :proxy, :verify_ssl_certs
33
- # rubocop:enable Layout/LineLength
30
+ attr_reader :api_base, :uploads_base, :connect_base, :meter_events_base, :base_addresses, :ca_bundle_path,
31
+ :log_level, :initial_network_retry_delay, :max_network_retries, :max_network_retry_delay,
32
+ :open_timeout, :read_timeout, :write_timeout, :proxy, :verify_ssl_certs
34
33
 
35
34
  def self.setup
36
35
  new.tap do |instance|
@@ -38,6 +37,25 @@ module Stripe
38
37
  end
39
38
  end
40
39
 
40
+ # Set options to the StripeClient configured options, if valid as a client option and provided
41
+ # Otherwise, for user configurable global options, set them to the global configuration
42
+ # For all other options, set them to the StripeConfiguration default value
43
+ def self.client_init(config_opts)
44
+ global_config = Stripe.config
45
+ imported_options = USER_CONFIGURABLE_GLOBAL_OPTIONS - StripeClient::CLIENT_OPTIONS
46
+ client_config = StripeConfiguration.setup do |instance|
47
+ imported_options.each do |key|
48
+ begin
49
+ instance.public_send("#{key}=", global_config.public_send(key)) if global_config.respond_to?(key)
50
+ rescue NotImplementedError => e
51
+ # In Ruby <= 2.5, we can't set write_timeout on Net::HTTP, log an error and continue
52
+ Util.log_error("Failed to set #{key} on client configuration: #{e}")
53
+ end
54
+ end
55
+ end
56
+ client_config.reverse_duplicate_merge(config_opts)
57
+ end
58
+
41
59
  # Create a new config based off an existing one. This is useful when the
42
60
  # caller wants to override the global configuration
43
61
  def reverse_duplicate_merge(hash)
@@ -45,6 +63,9 @@ module Stripe
45
63
  hash.each do |option, value|
46
64
  instance.public_send("#{option}=", value)
47
65
  end
66
+ instance.send("instance_variable_set", "@base_addresses",
67
+ { api: instance.api_base, connect: instance.connect_base,
68
+ files: instance.uploads_base, meter_events: instance.meter_events_base, })
48
69
  end
49
70
  end
50
71
 
@@ -54,17 +75,20 @@ module Stripe
54
75
  @enable_telemetry = true
55
76
  @verify_ssl_certs = true
56
77
 
57
- @max_network_retries = 0
78
+ @max_network_retries = 2
58
79
  @initial_network_retry_delay = 0.5
59
- @max_network_retry_delay = 2
80
+ @max_network_retry_delay = 5
60
81
 
61
82
  @open_timeout = 30
62
83
  @read_timeout = 80
63
84
  @write_timeout = 30
64
85
 
65
- @api_base = "https://api.stripe.com"
66
- @connect_base = "https://connect.stripe.com"
67
- @uploads_base = "https://files.stripe.com"
86
+ @api_base = DEFAULT_API_BASE
87
+ @connect_base = DEFAULT_CONNECT_BASE
88
+ @uploads_base = DEFAULT_UPLOAD_BASE
89
+ @meter_events_base = DEFAULT_METER_EVENTS_BASE
90
+ @base_addresses = { api: @api_base, connect: @connect_base, files: @uploads_base,
91
+ meter_events: @meter_events_base, }
68
92
  end
69
93
 
70
94
  def log_level=(val)
@@ -101,44 +125,53 @@ module Stripe
101
125
 
102
126
  def open_timeout=(open_timeout)
103
127
  @open_timeout = open_timeout
104
- StripeClient.clear_all_connection_managers(config: self)
128
+ APIRequestor.clear_all_connection_managers(config: self)
105
129
  end
106
130
 
107
131
  def read_timeout=(read_timeout)
108
132
  @read_timeout = read_timeout
109
- StripeClient.clear_all_connection_managers(config: self)
133
+ APIRequestor.clear_all_connection_managers(config: self)
110
134
  end
111
135
 
112
136
  def write_timeout=(write_timeout)
113
137
  raise NotImplementedError unless Net::HTTP.instance_methods.include?(:write_timeout=)
114
138
 
115
139
  @write_timeout = write_timeout
116
- StripeClient.clear_all_connection_managers(config: self)
140
+ APIRequestor.clear_all_connection_managers(config: self)
117
141
  end
118
142
 
119
143
  def proxy=(proxy)
120
144
  @proxy = proxy
121
- StripeClient.clear_all_connection_managers(config: self)
145
+ APIRequestor.clear_all_connection_managers(config: self)
122
146
  end
123
147
 
124
148
  def verify_ssl_certs=(verify_ssl_certs)
125
149
  @verify_ssl_certs = verify_ssl_certs
126
- StripeClient.clear_all_connection_managers(config: self)
150
+ APIRequestor.clear_all_connection_managers(config: self)
151
+ end
152
+
153
+ def meter_events_base=(meter_events_base)
154
+ @meter_events_base = meter_events_base
155
+ @base_addresses[:meter_events] = meter_events_base
156
+ APIRequestor.clear_all_connection_managers(config: self)
127
157
  end
128
158
 
129
159
  def uploads_base=(uploads_base)
130
160
  @uploads_base = uploads_base
131
- StripeClient.clear_all_connection_managers(config: self)
161
+ @base_addresses[:files] = uploads_base
162
+ APIRequestor.clear_all_connection_managers(config: self)
132
163
  end
133
164
 
134
165
  def connect_base=(connect_base)
135
166
  @connect_base = connect_base
136
- StripeClient.clear_all_connection_managers(config: self)
167
+ @base_addresses[:connect] = connect_base
168
+ APIRequestor.clear_all_connection_managers(config: self)
137
169
  end
138
170
 
139
171
  def api_base=(api_base)
140
172
  @api_base = api_base
141
- StripeClient.clear_all_connection_managers(config: self)
173
+ @base_addresses[:api] = api_base
174
+ APIRequestor.clear_all_connection_managers(config: self)
142
175
  end
143
176
 
144
177
  def ca_bundle_path=(path)
@@ -147,7 +180,7 @@ module Stripe
147
180
  # empty this field so a new store is initialized
148
181
  @ca_store = nil
149
182
 
150
- StripeClient.clear_all_connection_managers(config: self)
183
+ APIRequestor.clear_all_connection_managers(config: self)
151
184
  end
152
185
 
153
186
  # A certificate store initialized from the the bundle in #ca_bundle_path and
@@ -72,7 +72,8 @@ module Stripe
72
72
  @additive_params.include?(name)
73
73
  end
74
74
 
75
- def initialize(id = nil, opts = {})
75
+ def initialize(id = nil, opts = {}, api_mode = :v1, requestor = nil)
76
+ @api_mode = api_mode
76
77
  id, @retrieve_params = Util.normalize_id(id)
77
78
  @opts = Util.normalize_opts(opts)
78
79
  @original_values = {}
@@ -82,14 +83,16 @@ module Stripe
82
83
  @unsaved_values = Set.new
83
84
  @transient_values = Set.new
84
85
  @values[:id] = id if id
86
+ @id = id
85
87
  @last_response = nil
88
+ @requestor = requestor || APIRequestor.active_requestor
86
89
  end
87
90
 
88
- def self.construct_from(values, opts = {}, last_response = nil)
91
+ def self.construct_from(values, opts = {}, last_response = nil, api_mode = :v1, requestor = nil)
89
92
  values = Stripe::Util.symbolize_names(values)
90
93
 
91
94
  # work around protected #initialize_from for now
92
- new(values[:id]).send(:initialize_from, values, opts, last_response)
95
+ new(values[:id]).send(:initialize_from, values, opts, last_response, api_mode: api_mode, requestor: requestor)
93
96
  end
94
97
 
95
98
  # Determines the equality of two Stripe objects. Stripe objects are
@@ -151,7 +154,7 @@ module Stripe
151
154
  def update_attributes(values, opts = {}, dirty: true)
152
155
  values.each do |k, v|
153
156
  add_accessors([k], values) unless metaclass.method_defined?(k.to_sym)
154
- @values[k] = Util.convert_to_stripe_object(v, opts)
157
+ @values[k] = Util.convert_to_stripe_object(v, opts, api_mode: @api_mode, requestor: @requestor)
155
158
  dirty_value!(@values[k]) if dirty
156
159
  @unsaved_values.add(k)
157
160
  end
@@ -220,20 +223,22 @@ module Stripe
220
223
  # This allows us to remove certain features that cannot or should not be
221
224
  # serialized.
222
225
  def marshal_dump
223
- # The StripeClient instance in @opts is not serializable and is not
226
+ # The APIRequestor instance in @opts is not serializable and is not
224
227
  # really a property of the StripeObject, so we exclude it when
225
228
  # dumping
226
229
  opts = @opts.clone
230
+
231
+ # TODO: (major) Remove the :client option. This is not explicitly supported as a user-specified option.
227
232
  opts.delete(:client)
228
233
  [@values, opts]
229
234
  end
230
235
 
231
236
  # Implements custom decoding for Ruby's Marshal. Consumes data that's
232
237
  # produced by #marshal_dump.
233
- def marshal_load(data)
238
+ def marshal_load(data, api_mode: :v1)
234
239
  values, opts = data
235
- initialize(values[:id])
236
- initialize_from(values, opts)
240
+ initialize(values[:id], api_mode: api_mode)
241
+ initialize_from(values, opts, api_mode: api_mode, requestor: @requestor)
237
242
  end
238
243
 
239
244
  def serialize_params(options = {})
@@ -331,7 +336,7 @@ module Stripe
331
336
  end
332
337
  end
333
338
 
334
- protected def add_accessors(keys, values)
339
+ protected def add_accessors(keys, values) # rubocop:todo Metrics/PerceivedComplexity
335
340
  # not available in the #instance_eval below
336
341
  protected_fields = self.class.protected_fields
337
342
 
@@ -357,7 +362,7 @@ module Stripe
357
362
  "We interpret empty strings as nil in requests. " \
358
363
  "You may set (object).#{k} = nil to delete the property."
359
364
  end
360
- @values[k] = Util.convert_to_stripe_object(v, @opts)
365
+ @values[k] = Util.convert_to_stripe_object(v, @opts, api_mode: @api_mode, requestor: @requestor)
361
366
  dirty_value!(@values[k])
362
367
  @unsaved_values.add(k)
363
368
  end
@@ -365,6 +370,19 @@ module Stripe
365
370
  define_method(:"#{k}?") { @values[k] } if [FalseClass, TrueClass].include?(values[k].class)
366
371
  end
367
372
  end
373
+
374
+ keys.each do |k|
375
+ if Util.valid_variable_name?(k)
376
+ instance_variable_set(:"@#{k}", values[k])
377
+ else
378
+ Util.log_info(<<~LOG
379
+ The variable name '#{k}' is not a valid Ruby variable name.
380
+ Use ["#{k}"] to access this field, skipping instance variable instantiation...
381
+ LOG
382
+ )
383
+
384
+ end
385
+ end
368
386
  end
369
387
 
370
388
  # Disabling the cop because it's confused by the fact that the methods are
@@ -427,13 +445,15 @@ module Stripe
427
445
  # * +:opts:+ Options for StripeObject like an API key.
428
446
  # * +:partial:+ Indicates that the re-initialization should not attempt to
429
447
  # remove accessors.
430
- protected def initialize_from(values, opts, last_response = nil)
448
+ protected def initialize_from(values, opts, last_response = nil, api_mode:, requestor: nil)
449
+ @api_mode = api_mode
431
450
  @last_response = last_response
451
+ @requestor = requestor
432
452
 
433
453
  @opts = Util.normalize_opts(opts)
434
454
 
435
455
  # the `#send` is here so that we can keep this method private
436
- @original_values = self.class.send(:deep_copy, values)
456
+ @original_values = self.class.send(:deep_copy, values, api_mode: api_mode)
437
457
 
438
458
  removed = Set.new(@values.keys - values.keys)
439
459
  added = Set.new(values.keys - @values.keys)
@@ -460,6 +480,19 @@ module Stripe
460
480
  self
461
481
  end
462
482
 
483
+ # Should only be for v2 events and lists, for now.
484
+ protected def _request(method:, path:, base_address:, params: {}, opts: {})
485
+ req_opts = RequestOptions.extract_opts_from_hash(opts)
486
+ req_opts = RequestOptions.combine_opts(@opts, req_opts)
487
+ @requestor.execute_request(
488
+ method,
489
+ path,
490
+ base_address,
491
+ params: params,
492
+ opts: req_opts
493
+ )
494
+ end
495
+
463
496
  # rubocop:todo Metrics/PerceivedComplexity
464
497
  protected def serialize_params_value(value, original, unsaved, force, # rubocop:todo Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
465
498
  key: nil)
@@ -516,7 +549,7 @@ module Stripe
516
549
  # example by appending a new hash onto `additional_owners` for an
517
550
  # account.
518
551
  elsif value.is_a?(Hash)
519
- Util.convert_to_stripe_object(value, @opts).serialize_params
552
+ Util.convert_to_stripe_object(value, @opts, api_mode: @api_mode, requestor: @requestor).serialize_params
520
553
 
521
554
  elsif value.is_a?(StripeObject)
522
555
  update = value.serialize_params(force: force)
@@ -540,21 +573,22 @@ module Stripe
540
573
 
541
574
  # Produces a deep copy of the given object including support for arrays,
542
575
  # hashes, and StripeObjects.
543
- private_class_method def self.deep_copy(obj)
576
+ private_class_method def self.deep_copy(obj, api_mode:)
544
577
  case obj
545
578
  when Array
546
- obj.map { |e| deep_copy(e) }
579
+ obj.map { |e| deep_copy(e, api_mode: api_mode) }
547
580
  when Hash
548
581
  obj.each_with_object({}) do |(k, v), copy|
549
- copy[k] = deep_copy(v)
582
+ copy[k] = deep_copy(v, api_mode: api_mode)
550
583
  copy
551
584
  end
552
585
  when StripeObject
553
586
  obj.class.construct_from(
554
- deep_copy(obj.instance_variable_get(:@values)),
555
- obj.instance_variable_get(:@opts).select do |k, _v|
556
- Util::OPTS_COPYABLE.include?(k)
557
- end
587
+ deep_copy(obj.instance_variable_get(:@values), api_mode: api_mode),
588
+ RequestOptions.copyable(obj.instance_variable_get(:@opts)),
589
+ nil,
590
+ api_mode,
591
+ obj.instance_variable_get(:@requestor)
558
592
  )
559
593
  else
560
594
  obj
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ # typed: true
3
+
4
+ module Stripe
5
+ class StripeService
6
+ # Initializes a new StripeService
7
+ def initialize(requestor)
8
+ @requestor = requestor
9
+ end
10
+
11
+ def request(method:, path:, base_address:, params: {}, opts: {})
12
+ @requestor.execute_request(
13
+ method,
14
+ path,
15
+ base_address,
16
+ params: params,
17
+ opts: RequestOptions.extract_opts_from_hash(opts)
18
+ )
19
+ end
20
+
21
+ def request_stream(method:, path:, base_address:, params: {}, opts: {}, &read_body_chunk_block)
22
+ @requestor.execute_request_stream(
23
+ method,
24
+ path,
25
+ base_address,
26
+ params: params,
27
+ opts: RequestOptions.extract_opts_from_hash(opts),
28
+ &read_body_chunk_block
29
+ )
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class EventReasonRequest
5
+ attr_reader :id, :idempotency_key
6
+
7
+ def initialize(event_reason_request_payload = {})
8
+ @id = event_reason_request_payload[:id]
9
+ @idempotency_key = event_reason_request_payload[:idempotency_key]
10
+ end
11
+ end
12
+
13
+ class EventReason
14
+ attr_reader :type, :request
15
+
16
+ def initialize(event_reason_payload = {})
17
+ @type = event_reason_payload[:type]
18
+ @request = EventReasonRequest.new(event_reason_payload[:request])
19
+ end
20
+ end
21
+
22
+ class ThinEvent
23
+ attr_reader :id, :type, :created, :context, :related_object, :livemode, :reason
24
+
25
+ def initialize(event_payload = {})
26
+ @id = event_payload[:id]
27
+ @type = event_payload[:type]
28
+ @created = event_payload[:created]
29
+ @context = event_payload[:context]
30
+ @livemode = event_payload[:livemode]
31
+ @related_object = event_payload[:related_object]
32
+ return if event_payload[:reason].nil?
33
+
34
+ @reason = EventReason.new(event_payload[:reason])
35
+ end
36
+ end
37
+ end
data/lib/stripe/util.rb CHANGED
@@ -4,25 +4,8 @@ require "cgi"
4
4
 
5
5
  module Stripe
6
6
  module Util
7
- # Options that a user is allowed to specify.
8
- OPTS_USER_SPECIFIED = Set[
9
- :api_key,
10
- :idempotency_key,
11
- :stripe_account,
12
- :stripe_version
13
- ].freeze
14
-
15
- # Options that should be copyable from one StripeObject to another
16
- # including options that may be internal.
17
- OPTS_COPYABLE = (
18
- OPTS_USER_SPECIFIED + Set[:api_base]
19
- ).freeze
20
-
21
- # Options that should be persisted between API requests. This includes
22
- # client, which is an object containing an HTTP client to reuse.
23
- OPTS_PERSISTABLE = (
24
- OPTS_USER_SPECIFIED + Set[:client] - Set[:idempotency_key]
25
- ).freeze
7
+ LEGAL_FIRST_CHARACTER = /[a-zA-Z_]/.freeze
8
+ LEGAL_VARIABLE_CHARACTER = /[a-zA-Z0-9_]/.freeze
26
9
 
27
10
  def self.objects_to_ids(obj)
28
11
  case obj
@@ -43,6 +26,14 @@ module Stripe
43
26
  @object_classes ||= Stripe::ObjectTypes.object_names_to_classes
44
27
  end
45
28
 
29
+ def self.v2_object_classes
30
+ @v2_object_classes ||= Stripe::ObjectTypes.v2_object_names_to_classes
31
+ end
32
+
33
+ def self.thin_event_classes
34
+ @thin_event_classes ||= Stripe::EventTypes.thin_event_names_to_classes
35
+ end
36
+
46
37
  def self.object_name_matches_class?(object_name, klass)
47
38
  Util.object_classes[object_name] == klass
48
39
  end
@@ -61,6 +52,7 @@ module Stripe
61
52
  # custom_method :capture, http_verb: post
62
53
  # adds a `capture` class method to the resource class that, when called,
63
54
  # will send a POST request to `/v1/<object_name>/capture`.
55
+ # TODO: are we comfortable with deleting this?
64
56
  def self.custom_method(resource, target, name, http_verb, http_path)
65
57
  unless %i[get post delete].include?(http_verb)
66
58
  raise ArgumentError,
@@ -83,14 +75,13 @@ module Stripe
83
75
  "#{CGI.escape(id)}/" \
84
76
  "#{CGI.escape(http_path)}"
85
77
 
86
- resp, opts = resource.execute_resource_request(
78
+ resource.execute_resource_request(
87
79
  http_verb,
88
80
  url,
81
+ :api,
89
82
  params,
90
83
  opts
91
84
  )
92
-
93
- Util.convert_to_stripe_object_with_params(resp.data, params, opts, resp)
94
85
  end
95
86
  end
96
87
 
@@ -108,8 +99,8 @@ module Stripe
108
99
  # will be reused on subsequent API calls.
109
100
  # * +opts+ - Options for +StripeObject+ like an API key that will be reused
110
101
  # on subsequent API calls.
111
- def self.convert_to_stripe_object(data, opts = {})
112
- convert_to_stripe_object_with_params(data, {}, opts)
102
+ def self.convert_to_stripe_object(data, opts = {}, api_mode: :v1, requestor: nil)
103
+ convert_to_stripe_object_with_params(data, {}, opts, api_mode: api_mode, requestor: requestor)
113
104
  end
114
105
 
115
106
  # Converts a hash of fields or an array of hashes into a +StripeObject+ or
@@ -124,18 +115,47 @@ module Stripe
124
115
  # * +data+ - Hash of fields and values to be converted into a StripeObject.
125
116
  # * +opts+ - Options for +StripeObject+ like an API key that will be reused
126
117
  # on subsequent API calls.
127
- def self.convert_to_stripe_object_with_params(data, params, opts = {}, last_response = nil)
118
+ # * +last_response+ - The raw response associated with the object.
119
+ # * +api_mode+ - The API mode to use when converting the object, either :v1 or :v2.
120
+ # * +requestor+ - The requestor to use when constructing the object.
121
+ def self.convert_to_stripe_object_with_params(
122
+ data,
123
+ params,
124
+ opts = {},
125
+ last_response = nil,
126
+ api_mode: :v1,
127
+ requestor: nil
128
+ )
128
129
  opts = normalize_opts(opts)
129
130
 
130
131
  case data
131
132
  when Array
132
- data.map { |i| convert_to_stripe_object(i, opts) }
133
+ data.map { |i| convert_to_stripe_object(i, opts, api_mode: api_mode, requestor: requestor) }
133
134
  when Hash
135
+ # TODO: This is a terrible hack.
136
+ # Waiting on https://jira.corp.stripe.com/browse/API_SERVICES-3167 to add
137
+ # an object in v2 lists
138
+ if api_mode == :v2 && data.include?(:data) && data.include?(:next_page_url)
139
+ return V2::ListObject.construct_from(data, opts, last_response, api_mode, requestor)
140
+ end
141
+
134
142
  # Try converting to a known object class. If none available, fall back
135
143
  # to generic StripeObject
144
+ object_type = data[:type] || data["type"]
136
145
  object_name = data[:object] || data["object"]
137
- obj = object_classes.fetch(object_name, StripeObject)
138
- .construct_from(data, opts, last_response)
146
+ object_class = if api_mode == :v2
147
+ if object_name == "v2.core.event" && thin_event_classes.key?(object_type)
148
+ thin_event_classes.fetch(object_type)
149
+ else
150
+ v2_object_classes.fetch(
151
+ object_name, StripeObject
152
+ )
153
+ end
154
+ else
155
+ object_classes.fetch(object_name, StripeObject)
156
+ end
157
+
158
+ obj = object_class.construct_from(data, opts, last_response, api_mode, requestor)
139
159
 
140
160
  # set filters so that we can fetch the same limit, expansions, and
141
161
  # predicates when accessing the next and previous pages
@@ -201,8 +221,8 @@ module Stripe
201
221
  # parameters in a URI or as form parameters in a request body. This mainly
202
222
  # involves escaping special characters from parameter keys and values (e.g.
203
223
  # `&`).
204
- def self.encode_parameters(params)
205
- Util.flatten_params(params)
224
+ def self.encode_parameters(params, api_mode)
225
+ Util.flatten_params(params, api_mode)
206
226
  .map { |k, v| "#{url_encode(k)}=#{url_encode(v)}" }.join("&")
207
227
  end
208
228
 
@@ -217,7 +237,7 @@ module Stripe
217
237
  gsub("%5B", "[").gsub("%5D", "]")
218
238
  end
219
239
 
220
- def self.flatten_params(params, parent_key = nil)
240
+ def self.flatten_params(params, api_mode, parent_key = nil)
221
241
  result = []
222
242
 
223
243
  # do not sort the final output because arrays (and arrays of hashes
@@ -225,9 +245,9 @@ module Stripe
225
245
  params.each do |key, value|
226
246
  calculated_key = parent_key ? "#{parent_key}[#{key}]" : key.to_s
227
247
  if value.is_a?(Hash)
228
- result += flatten_params(value, calculated_key)
248
+ result += flatten_params(value, api_mode, calculated_key)
229
249
  elsif value.is_a?(Array)
230
- result += flatten_params_array(value, calculated_key)
250
+ result += flatten_params_array(value, api_mode, calculated_key)
231
251
  else
232
252
  result << [calculated_key, value]
233
253
  end
@@ -236,15 +256,19 @@ module Stripe
236
256
  result
237
257
  end
238
258
 
239
- def self.flatten_params_array(value, calculated_key)
259
+ def self.flatten_params_array(value, api_mode, calculated_key)
240
260
  result = []
241
261
  value.each_with_index do |elem, i|
242
262
  if elem.is_a?(Hash)
243
- result += flatten_params(elem, "#{calculated_key}[#{i}]")
263
+ result += flatten_params(elem, api_mode, "#{calculated_key}[#{i}]")
244
264
  elsif elem.is_a?(Array)
245
- result += flatten_params_array(elem, calculated_key)
265
+ result += flatten_params_array(elem, api_mode, calculated_key)
246
266
  else
247
- result << ["#{calculated_key}[#{i}]", elem]
267
+ result << if api_mode == :v2
268
+ [calculated_key, elem]
269
+ else
270
+ ["#{calculated_key}[#{i}]", elem]
271
+ end
248
272
  end
249
273
  end
250
274
  result
@@ -288,6 +312,14 @@ module Stripe
288
312
  end
289
313
  end
290
314
 
315
+ # Return false for strings that are invalid variable names
316
+ # Does NOT expect there to be a preceding '@' for instance variables
317
+ def self.valid_variable_name?(key)
318
+ return false if key.empty? || key[0] !~ LEGAL_FIRST_CHARACTER
319
+
320
+ key[1..-1].chars.all? { |char| char =~ LEGAL_VARIABLE_CHARACTER }
321
+ end
322
+
291
323
  def self.check_string_argument!(key)
292
324
  raise TypeError, "argument must be a string" unless key.is_a?(String)
293
325
 
@@ -334,6 +366,15 @@ module Stripe
334
366
  res.zero?
335
367
  end
336
368
 
369
+ # Returns either v1 or v2 as api_mode based on the given path
370
+ def self.get_api_mode(path)
371
+ if path.start_with?("/v2/")
372
+ :v2
373
+ else
374
+ :v1
375
+ end
376
+ end
377
+
337
378
  #
338
379
  # private
339
380
  #