stripe 5.55.0 → 13.5.1

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 (380) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +567 -4
  3. data/Gemfile +12 -4
  4. data/Makefile +18 -3
  5. data/OPENAPI_VERSION +1 -0
  6. data/README.md +93 -21
  7. data/Rakefile +3 -6
  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/{bin → exe}/stripe-console +1 -1
  14. data/justfile +43 -0
  15. data/lib/data/ca-certificates.crt +1241 -1937
  16. data/lib/stripe/api_operations/create.rb +6 -2
  17. data/lib/stripe/api_operations/delete.rb +12 -7
  18. data/lib/stripe/api_operations/list.rb +6 -9
  19. data/lib/stripe/api_operations/nested_resource.rb +63 -35
  20. data/lib/stripe/api_operations/request.rb +29 -65
  21. data/lib/stripe/api_operations/save.rb +20 -10
  22. data/lib/stripe/api_operations/search.rb +11 -9
  23. data/lib/stripe/api_operations/singleton_save.rb +90 -0
  24. data/lib/stripe/api_requestor.rb +1131 -0
  25. data/lib/stripe/api_resource.rb +48 -18
  26. data/lib/stripe/api_resource_test_helpers.rb +9 -3
  27. data/lib/stripe/api_version.rb +8 -0
  28. data/lib/stripe/connection_manager.rb +5 -7
  29. data/lib/stripe/errors.rb +11 -13
  30. data/lib/stripe/event_types.rb +14 -0
  31. data/lib/stripe/events/v1_billing_meter_error_report_triggered_event.rb +23 -0
  32. data/lib/stripe/events/v1_billing_meter_no_meter_found_event.rb +13 -0
  33. data/lib/stripe/instrumentation.rb +37 -15
  34. data/lib/stripe/list_object.rb +5 -3
  35. data/lib/stripe/multipart_encoder.rb +7 -7
  36. data/lib/stripe/oauth.rb +14 -21
  37. data/lib/stripe/object_types.rb +151 -103
  38. data/lib/stripe/request_options.rb +129 -0
  39. data/lib/stripe/resources/account.rb +129 -25
  40. data/lib/stripe/resources/account_link.rb +12 -0
  41. data/lib/stripe/resources/account_session.rb +25 -0
  42. data/lib/stripe/resources/alipay_account.rb +1 -1
  43. data/lib/stripe/resources/apple_pay_domain.rb +38 -0
  44. data/lib/stripe/resources/application_fee.rb +9 -2
  45. data/lib/stripe/resources/application_fee_refund.rb +9 -2
  46. data/lib/stripe/resources/apps/secret.rb +55 -0
  47. data/lib/stripe/resources/balance.rb +14 -0
  48. data/lib/stripe/resources/balance_transaction.rb +19 -0
  49. data/lib/stripe/resources/bank_account.rb +53 -4
  50. data/lib/stripe/resources/billing/alert.rb +87 -0
  51. data/lib/stripe/resources/billing/credit_balance_summary.rb +14 -0
  52. data/lib/stripe/resources/billing/credit_balance_transaction.rb +26 -0
  53. data/lib/stripe/resources/billing/credit_grant.rb +90 -0
  54. data/lib/stripe/resources/billing/meter.rb +85 -0
  55. data/lib/stripe/resources/billing/meter_event.rb +26 -0
  56. data/lib/stripe/resources/billing/meter_event_adjustment.rb +26 -0
  57. data/lib/stripe/resources/billing/meter_event_summary.rb +17 -0
  58. data/lib/stripe/resources/billing_portal/configuration.rb +34 -0
  59. data/lib/stripe/resources/billing_portal/session.rb +27 -0
  60. data/lib/stripe/resources/capability.rb +7 -2
  61. data/lib/stripe/resources/card.rb +34 -3
  62. data/lib/stripe/resources/cash_balance.rb +4 -0
  63. data/lib/stripe/resources/charge.rb +52 -3
  64. data/lib/stripe/resources/checkout/session.rb +83 -5
  65. data/lib/stripe/resources/climate/order.rb +67 -0
  66. data/lib/stripe/resources/climate/product.rb +27 -0
  67. data/lib/stripe/resources/climate/supplier.rb +26 -0
  68. data/lib/stripe/resources/confirmation_token.rb +39 -0
  69. data/lib/stripe/resources/country_spec.rb +14 -0
  70. data/lib/stripe/resources/coupon.rb +48 -0
  71. data/lib/stripe/resources/credit_note.rb +67 -9
  72. data/lib/stripe/resources/credit_note_line_item.rb +4 -0
  73. data/lib/stripe/resources/customer.rb +172 -28
  74. data/lib/stripe/resources/customer_balance_transaction.rb +9 -1
  75. data/lib/stripe/resources/customer_cash_balance_transaction.rb +15 -0
  76. data/lib/stripe/resources/customer_session.rb +29 -0
  77. data/lib/stripe/resources/discount.rb +7 -0
  78. data/lib/stripe/resources/dispute.rb +41 -3
  79. data/lib/stripe/resources/entitlements/active_entitlement.rb +26 -0
  80. data/lib/stripe/resources/entitlements/feature.rb +49 -0
  81. data/lib/stripe/resources/ephemeral_key.rb +23 -0
  82. data/lib/stripe/resources/event.rb +38 -0
  83. data/lib/stripe/resources/exchange_rate.rb +34 -0
  84. data/lib/stripe/resources/file.rb +37 -15
  85. data/lib/stripe/resources/file_link.rb +26 -0
  86. data/lib/stripe/resources/financial_connections/account.rb +101 -6
  87. data/lib/stripe/resources/financial_connections/account_owner.rb +4 -0
  88. data/lib/stripe/resources/financial_connections/account_ownership.rb +4 -0
  89. data/lib/stripe/resources/financial_connections/session.rb +14 -0
  90. data/lib/stripe/resources/financial_connections/transaction.rb +26 -0
  91. data/lib/stripe/resources/forwarding/request.rb +52 -0
  92. data/lib/stripe/resources/funding_instructions.rb +8 -0
  93. data/lib/stripe/resources/identity/verification_report.rb +24 -0
  94. data/lib/stripe/resources/identity/verification_session.rb +117 -5
  95. data/lib/stripe/resources/invoice.rb +247 -20
  96. data/lib/stripe/resources/invoice_item.rb +54 -0
  97. data/lib/stripe/resources/invoice_line_item.rb +22 -1
  98. data/lib/stripe/resources/invoice_rendering_template.rb +65 -0
  99. data/lib/stripe/resources/issuing/authorization.rb +210 -5
  100. data/lib/stripe/resources/issuing/card.rb +128 -4
  101. data/lib/stripe/resources/issuing/cardholder.rb +36 -0
  102. data/lib/stripe/resources/issuing/dispute.rb +47 -2
  103. data/lib/stripe/resources/issuing/personalization_design.rb +119 -0
  104. data/lib/stripe/resources/issuing/physical_bundle.rb +26 -0
  105. data/lib/stripe/resources/issuing/token.rb +32 -0
  106. data/lib/stripe/resources/issuing/transaction.rb +79 -0
  107. data/lib/stripe/resources/line_item.rb +4 -0
  108. data/lib/stripe/resources/login_link.rb +4 -0
  109. data/lib/stripe/resources/mandate.rb +4 -0
  110. data/lib/stripe/resources/payment_intent.rb +238 -15
  111. data/lib/stripe/resources/payment_link.rb +39 -2
  112. data/lib/stripe/resources/payment_method.rb +78 -5
  113. data/lib/stripe/resources/payment_method_configuration.rb +59 -0
  114. data/lib/stripe/resources/payment_method_domain.rb +79 -0
  115. data/lib/stripe/resources/payout.rb +63 -5
  116. data/lib/stripe/resources/person.rb +8 -1
  117. data/lib/stripe/resources/plan.rb +51 -0
  118. data/lib/stripe/resources/price.rb +30 -1
  119. data/lib/stripe/resources/product.rb +55 -1
  120. data/lib/stripe/resources/product_feature.rb +13 -0
  121. data/lib/stripe/resources/promotion_code.rb +25 -0
  122. data/lib/stripe/resources/quote.rb +97 -39
  123. data/lib/stripe/resources/radar/early_fraud_warning.rb +17 -0
  124. data/lib/stripe/resources/radar/value_list.rb +56 -0
  125. data/lib/stripe/resources/radar/value_list_item.rb +46 -0
  126. data/lib/stripe/resources/refund.rb +70 -5
  127. data/lib/stripe/resources/reporting/report_run.rb +31 -0
  128. data/lib/stripe/resources/reporting/report_type.rb +21 -1
  129. data/lib/stripe/resources/reversal.rb +17 -2
  130. data/lib/stripe/resources/review.rb +24 -3
  131. data/lib/stripe/resources/setup_attempt.rb +12 -0
  132. data/lib/stripe/resources/setup_intent.rb +113 -7
  133. data/lib/stripe/resources/shipping_rate.rb +25 -0
  134. data/lib/stripe/resources/sigma/scheduled_query_run.rb +17 -0
  135. data/lib/stripe/resources/source.rb +52 -10
  136. data/lib/stripe/resources/source_transaction.rb +7 -0
  137. data/lib/stripe/resources/subscription.rb +118 -5
  138. data/lib/stripe/resources/subscription_item.rb +54 -6
  139. data/lib/stripe/resources/subscription_schedule.rb +60 -5
  140. data/lib/stripe/resources/tax/calculation.rb +48 -0
  141. data/lib/stripe/resources/tax/calculation_line_item.rb +13 -0
  142. data/lib/stripe/resources/tax/registration.rb +54 -0
  143. data/lib/stripe/resources/tax/settings.rb +17 -0
  144. data/lib/stripe/resources/tax/transaction.rb +56 -0
  145. data/lib/stripe/resources/tax/transaction_line_item.rb +13 -0
  146. data/lib/stripe/resources/tax_code.rb +9 -0
  147. data/lib/stripe/resources/tax_id.rb +34 -12
  148. data/lib/stripe/resources/tax_rate.rb +26 -0
  149. data/lib/stripe/resources/terminal/configuration.rb +54 -0
  150. data/lib/stripe/resources/terminal/connection_token.rb +16 -0
  151. data/lib/stripe/resources/terminal/location.rb +57 -0
  152. data/lib/stripe/resources/terminal/reader.rb +138 -11
  153. data/lib/stripe/resources/test_helpers/test_clock.rb +58 -3
  154. data/lib/stripe/resources/token.rb +29 -0
  155. data/lib/stripe/resources/topup.rb +40 -3
  156. data/lib/stripe/resources/transfer.rb +29 -6
  157. data/lib/stripe/resources/treasury/credit_reversal.rb +37 -0
  158. data/lib/stripe/resources/treasury/debit_reversal.rb +37 -0
  159. data/lib/stripe/resources/treasury/financial_account.rb +109 -0
  160. data/lib/stripe/resources/treasury/financial_account_features.rb +15 -0
  161. data/lib/stripe/resources/treasury/inbound_transfer.rb +130 -0
  162. data/lib/stripe/resources/treasury/outbound_payment.rb +152 -0
  163. data/lib/stripe/resources/treasury/outbound_transfer.rb +152 -0
  164. data/lib/stripe/resources/treasury/received_credit.rb +47 -0
  165. data/lib/stripe/resources/treasury/received_debit.rb +47 -0
  166. data/lib/stripe/resources/treasury/transaction.rb +26 -0
  167. data/lib/stripe/resources/treasury/transaction_entry.rb +30 -0
  168. data/lib/stripe/resources/usage_record.rb +9 -0
  169. data/lib/stripe/resources/usage_record_summary.rb +4 -0
  170. data/lib/stripe/resources/v2/billing/meter_event.rb +16 -0
  171. data/lib/stripe/resources/v2/billing/meter_event_adjustment.rb +15 -0
  172. data/lib/stripe/resources/v2/billing/meter_event_session.rb +15 -0
  173. data/lib/stripe/resources/v2/event.rb +13 -0
  174. data/lib/stripe/resources/v2/event_destination.rb +13 -0
  175. data/lib/stripe/resources/webhook_endpoint.rb +55 -0
  176. data/lib/stripe/resources.rb +51 -10
  177. data/lib/stripe/search_result_object.rb +5 -2
  178. data/lib/stripe/services/account_capability_service.rb +39 -0
  179. data/lib/stripe/services/account_external_account_service.rb +68 -0
  180. data/lib/stripe/services/account_link_service.rb +17 -0
  181. data/lib/stripe/services/account_login_link_service.rb +19 -0
  182. data/lib/stripe/services/account_person_service.rb +61 -0
  183. data/lib/stripe/services/account_service.rb +100 -0
  184. data/lib/stripe/services/account_session_service.rb +17 -0
  185. data/lib/stripe/services/apple_pay_domain_service.rb +50 -0
  186. data/lib/stripe/services/application_fee_refund_service.rb +60 -0
  187. data/lib/stripe/services/application_fee_service.rb +35 -0
  188. data/lib/stripe/services/apps/secret_service.rb +52 -0
  189. data/lib/stripe/services/apps_service.rb +13 -0
  190. data/lib/stripe/services/balance_service.rb +12 -0
  191. data/lib/stripe/services/balance_transaction_service.rb +32 -0
  192. data/lib/stripe/services/billing/alert_service.rb +74 -0
  193. data/lib/stripe/services/billing/credit_balance_summary_service.rb +19 -0
  194. data/lib/stripe/services/billing/credit_balance_transaction_service.rb +30 -0
  195. data/lib/stripe/services/billing/credit_grant_service.rb +74 -0
  196. data/lib/stripe/services/billing/meter_event_adjustment_service.rb +19 -0
  197. data/lib/stripe/services/billing/meter_event_service.rb +19 -0
  198. data/lib/stripe/services/billing/meter_event_summary_service.rb +19 -0
  199. data/lib/stripe/services/billing/meter_service.rb +81 -0
  200. data/lib/stripe/services/billing_portal/configuration_service.rb +52 -0
  201. data/lib/stripe/services/billing_portal/session_service.rb +19 -0
  202. data/lib/stripe/services/billing_portal_service.rb +14 -0
  203. data/lib/stripe/services/billing_service.rb +20 -0
  204. data/lib/stripe/services/charge_service.rb +69 -0
  205. data/lib/stripe/services/checkout/session_line_item_service.rb +19 -0
  206. data/lib/stripe/services/checkout/session_service.rb +72 -0
  207. data/lib/stripe/services/checkout_service.rb +13 -0
  208. data/lib/stripe/services/climate/order_service.rb +68 -0
  209. data/lib/stripe/services/climate/product_service.rb +30 -0
  210. data/lib/stripe/services/climate/supplier_service.rb +30 -0
  211. data/lib/stripe/services/climate_service.rb +15 -0
  212. data/lib/stripe/services/confirmation_token_service.rb +17 -0
  213. data/lib/stripe/services/country_spec_service.rb +28 -0
  214. data/lib/stripe/services/coupon_service.rb +51 -0
  215. data/lib/stripe/services/credit_note_line_item_service.rb +17 -0
  216. data/lib/stripe/services/credit_note_preview_lines_service.rb +17 -0
  217. data/lib/stripe/services/credit_note_service.rb +93 -0
  218. data/lib/stripe/services/customer_balance_transaction_service.rb +50 -0
  219. data/lib/stripe/services/customer_cash_balance_service.rb +28 -0
  220. data/lib/stripe/services/customer_cash_balance_transaction_service.rb +28 -0
  221. data/lib/stripe/services/customer_funding_instructions_service.rb +19 -0
  222. data/lib/stripe/services/customer_payment_method_service.rb +28 -0
  223. data/lib/stripe/services/customer_payment_source_service.rb +76 -0
  224. data/lib/stripe/services/customer_service.rb +89 -0
  225. data/lib/stripe/services/customer_session_service.rb +17 -0
  226. data/lib/stripe/services/customer_tax_id_service.rb +50 -0
  227. data/lib/stripe/services/dispute_service.rb +48 -0
  228. data/lib/stripe/services/entitlements/active_entitlement_service.rb +30 -0
  229. data/lib/stripe/services/entitlements/feature_service.rb +52 -0
  230. data/lib/stripe/services/entitlements_service.rb +14 -0
  231. data/lib/stripe/services/ephemeral_key_service.rb +28 -0
  232. data/lib/stripe/services/event_service.rb +22 -0
  233. data/lib/stripe/services/exchange_rate_service.rb +28 -0
  234. data/lib/stripe/services/file_link_service.rb +38 -0
  235. data/lib/stripe/services/file_service.rb +35 -0
  236. data/lib/stripe/services/financial_connections/account_owner_service.rb +19 -0
  237. data/lib/stripe/services/financial_connections/account_service.rb +81 -0
  238. data/lib/stripe/services/financial_connections/session_service.rb +30 -0
  239. data/lib/stripe/services/financial_connections/transaction_service.rb +30 -0
  240. data/lib/stripe/services/financial_connections_service.rb +15 -0
  241. data/lib/stripe/services/forwarding/request_service.rb +41 -0
  242. data/lib/stripe/services/forwarding_service.rb +13 -0
  243. data/lib/stripe/services/identity/verification_report_service.rb +30 -0
  244. data/lib/stripe/services/identity/verification_session_service.rb +106 -0
  245. data/lib/stripe/services/identity_service.rb +14 -0
  246. data/lib/stripe/services/invoice_item_service.rb +61 -0
  247. data/lib/stripe/services/invoice_line_item_service.rb +31 -0
  248. data/lib/stripe/services/invoice_rendering_template_service.rb +50 -0
  249. data/lib/stripe/services/invoice_service.rb +202 -0
  250. data/lib/stripe/services/invoice_upcoming_lines_service.rb +17 -0
  251. data/lib/stripe/services/issuing/authorization_service.rb +65 -0
  252. data/lib/stripe/services/issuing/card_service.rb +52 -0
  253. data/lib/stripe/services/issuing/cardholder_service.rb +52 -0
  254. data/lib/stripe/services/issuing/dispute_service.rb +63 -0
  255. data/lib/stripe/services/issuing/personalization_design_service.rb +52 -0
  256. data/lib/stripe/services/issuing/physical_bundle_service.rb +30 -0
  257. data/lib/stripe/services/issuing/token_service.rb +41 -0
  258. data/lib/stripe/services/issuing/transaction_service.rb +41 -0
  259. data/lib/stripe/services/issuing_service.rb +20 -0
  260. data/lib/stripe/services/mandate_service.rb +17 -0
  261. data/lib/stripe/services/oauth_service.rb +63 -0
  262. data/lib/stripe/services/payment_intent_service.rb +204 -0
  263. data/lib/stripe/services/payment_link_line_item_service.rb +17 -0
  264. data/lib/stripe/services/payment_link_service.rb +57 -0
  265. data/lib/stripe/services/payment_method_configuration_service.rb +50 -0
  266. data/lib/stripe/services/payment_method_domain_service.rb +66 -0
  267. data/lib/stripe/services/payment_method_service.rb +86 -0
  268. data/lib/stripe/services/payout_service.rb +66 -0
  269. data/lib/stripe/services/plan_service.rb +49 -0
  270. data/lib/stripe/services/price_service.rb +52 -0
  271. data/lib/stripe/services/product_feature_service.rb +50 -0
  272. data/lib/stripe/services/product_service.rb +70 -0
  273. data/lib/stripe/services/promotion_code_service.rb +50 -0
  274. data/lib/stripe/services/quote_computed_upfront_line_items_service.rb +17 -0
  275. data/lib/stripe/services/quote_line_item_service.rb +17 -0
  276. data/lib/stripe/services/quote_service.rb +92 -0
  277. data/lib/stripe/services/radar/early_fraud_warning_service.rb +32 -0
  278. data/lib/stripe/services/radar/value_list_item_service.rb +52 -0
  279. data/lib/stripe/services/radar/value_list_service.rb +63 -0
  280. data/lib/stripe/services/radar_service.rb +15 -0
  281. data/lib/stripe/services/refund_service.rb +63 -0
  282. data/lib/stripe/services/reporting/report_run_service.rb +41 -0
  283. data/lib/stripe/services/reporting/report_type_service.rb +30 -0
  284. data/lib/stripe/services/reporting_service.rb +14 -0
  285. data/lib/stripe/services/review_service.rb +33 -0
  286. data/lib/stripe/services/setup_attempt_service.rb +17 -0
  287. data/lib/stripe/services/setup_intent_service.rb +105 -0
  288. data/lib/stripe/services/shipping_rate_service.rb +50 -0
  289. data/lib/stripe/services/sigma/scheduled_query_run_service.rb +30 -0
  290. data/lib/stripe/services/sigma_service.rb +13 -0
  291. data/lib/stripe/services/source_service.rb +64 -0
  292. data/lib/stripe/services/source_transaction_service.rb +17 -0
  293. data/lib/stripe/services/subscription_item_service.rb +69 -0
  294. data/lib/stripe/services/subscription_item_usage_record_service.rb +23 -0
  295. data/lib/stripe/services/subscription_item_usage_record_summary_service.rb +19 -0
  296. data/lib/stripe/services/subscription_schedule_service.rb +72 -0
  297. data/lib/stripe/services/subscription_service.rb +127 -0
  298. data/lib/stripe/services/tax/calculation_line_item_service.rb +19 -0
  299. data/lib/stripe/services/tax/calculation_service.rb +37 -0
  300. data/lib/stripe/services/tax/registration_service.rb +54 -0
  301. data/lib/stripe/services/tax/settings_service.rb +30 -0
  302. data/lib/stripe/services/tax/transaction_line_item_service.rb +19 -0
  303. data/lib/stripe/services/tax/transaction_service.rb +48 -0
  304. data/lib/stripe/services/tax_code_service.rb +22 -0
  305. data/lib/stripe/services/tax_id_service.rb +38 -0
  306. data/lib/stripe/services/tax_rate_service.rb +38 -0
  307. data/lib/stripe/services/tax_service.rb +16 -0
  308. data/lib/stripe/services/terminal/configuration_service.rb +63 -0
  309. data/lib/stripe/services/terminal/connection_token_service.rb +19 -0
  310. data/lib/stripe/services/terminal/location_service.rb +64 -0
  311. data/lib/stripe/services/terminal/reader_service.rb +118 -0
  312. data/lib/stripe/services/terminal_service.rb +16 -0
  313. data/lib/stripe/services/test_helpers/confirmation_token_service.rb +19 -0
  314. data/lib/stripe/services/test_helpers/customer_service.rb +19 -0
  315. data/lib/stripe/services/test_helpers/issuing/authorization_service.rb +87 -0
  316. data/lib/stripe/services/test_helpers/issuing/card_service.rb +65 -0
  317. data/lib/stripe/services/test_helpers/issuing/personalization_design_service.rb +43 -0
  318. data/lib/stripe/services/test_helpers/issuing/transaction_service.rb +43 -0
  319. data/lib/stripe/services/test_helpers/issuing_service.rb +19 -0
  320. data/lib/stripe/services/test_helpers/refund_service.rb +19 -0
  321. data/lib/stripe/services/test_helpers/terminal/reader_service.rb +21 -0
  322. data/lib/stripe/services/test_helpers/terminal_service.rb +15 -0
  323. data/lib/stripe/services/test_helpers/test_clock_service.rb +63 -0
  324. data/lib/stripe/services/test_helpers/treasury/inbound_transfer_service.rb +43 -0
  325. data/lib/stripe/services/test_helpers/treasury/outbound_payment_service.rb +54 -0
  326. data/lib/stripe/services/test_helpers/treasury/outbound_transfer_service.rb +54 -0
  327. data/lib/stripe/services/test_helpers/treasury/received_credit_service.rb +21 -0
  328. data/lib/stripe/services/test_helpers/treasury/received_debit_service.rb +21 -0
  329. data/lib/stripe/services/test_helpers/treasury_service.rb +19 -0
  330. data/lib/stripe/services/test_helpers_service.rb +19 -0
  331. data/lib/stripe/services/token_service.rb +23 -0
  332. data/lib/stripe/services/topup_service.rb +49 -0
  333. data/lib/stripe/services/transfer_reversal_service.rb +56 -0
  334. data/lib/stripe/services/transfer_service.rb +47 -0
  335. data/lib/stripe/services/treasury/credit_reversal_service.rb +41 -0
  336. data/lib/stripe/services/treasury/debit_reversal_service.rb +41 -0
  337. data/lib/stripe/services/treasury/financial_account_features_service.rb +30 -0
  338. data/lib/stripe/services/treasury/financial_account_service.rb +70 -0
  339. data/lib/stripe/services/treasury/inbound_transfer_service.rb +52 -0
  340. data/lib/stripe/services/treasury/outbound_payment_service.rb +52 -0
  341. data/lib/stripe/services/treasury/outbound_transfer_service.rb +52 -0
  342. data/lib/stripe/services/treasury/received_credit_service.rb +30 -0
  343. data/lib/stripe/services/treasury/received_debit_service.rb +30 -0
  344. data/lib/stripe/services/treasury/transaction_entry_service.rb +30 -0
  345. data/lib/stripe/services/treasury/transaction_service.rb +30 -0
  346. data/lib/stripe/services/treasury_service.rb +22 -0
  347. data/lib/stripe/services/v1_services.rb +89 -0
  348. data/lib/stripe/services/v2/billing/meter_event_adjustment_service.rb +21 -0
  349. data/lib/stripe/services/v2/billing/meter_event_service.rb +21 -0
  350. data/lib/stripe/services/v2/billing/meter_event_session_service.rb +21 -0
  351. data/lib/stripe/services/v2/billing/meter_event_stream_service.rb +23 -0
  352. data/lib/stripe/services/v2/billing_service.rb +18 -0
  353. data/lib/stripe/services/v2/core/event_destination_service.rb +98 -0
  354. data/lib/stripe/services/v2/core/event_service.rb +32 -0
  355. data/lib/stripe/services/v2/core_service.rb +16 -0
  356. data/lib/stripe/services/v2_services.rb +14 -0
  357. data/lib/stripe/services/webhook_endpoint_service.rb +61 -0
  358. data/lib/stripe/services.rb +182 -0
  359. data/lib/stripe/singleton_api_resource.rb +3 -3
  360. data/lib/stripe/stripe_client.rb +55 -1028
  361. data/lib/stripe/stripe_configuration.rb +63 -42
  362. data/lib/stripe/stripe_object.rb +60 -38
  363. data/lib/stripe/stripe_response.rb +1 -3
  364. data/lib/stripe/stripe_service.rb +32 -0
  365. data/lib/stripe/thin_event.rb +37 -0
  366. data/lib/stripe/util.rb +109 -45
  367. data/lib/stripe/v2_list_object.rb +84 -0
  368. data/lib/stripe/version.rb +1 -1
  369. data/lib/stripe/webhook.rb +3 -2
  370. data/lib/stripe.rb +39 -0
  371. data/stripe.gemspec +7 -4
  372. metadata +252 -13
  373. data/lib/stripe/resources/bitcoin_receiver.rb +0 -24
  374. data/lib/stripe/resources/bitcoin_transaction.rb +0 -16
  375. data/lib/stripe/resources/issuing/card_details.rb +0 -10
  376. data/lib/stripe/resources/order.rb +0 -33
  377. data/lib/stripe/resources/order_return.rb +0 -10
  378. data/lib/stripe/resources/recipient.rb +0 -14
  379. data/lib/stripe/resources/sku.rb +0 -13
  380. data/lib/stripe/resources/three_d_secure.rb +0 -14
data/lib/stripe/util.rb CHANGED
@@ -4,26 +4,6 @@ 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
26
-
27
7
  def self.objects_to_ids(obj)
28
8
  case obj
29
9
  when APIResource
@@ -43,6 +23,14 @@ module Stripe
43
23
  @object_classes ||= Stripe::ObjectTypes.object_names_to_classes
44
24
  end
45
25
 
26
+ def self.v2_object_classes
27
+ @v2_object_classes ||= Stripe::ObjectTypes.v2_object_names_to_classes
28
+ end
29
+
30
+ def self.thin_event_classes
31
+ @thin_event_classes ||= Stripe::EventTypes.thin_event_names_to_classes
32
+ end
33
+
46
34
  def self.object_name_matches_class?(object_name, klass)
47
35
  Util.object_classes[object_name] == klass
48
36
  end
@@ -61,6 +49,7 @@ module Stripe
61
49
  # custom_method :capture, http_verb: post
62
50
  # adds a `capture` class method to the resource class that, when called,
63
51
  # will send a POST request to `/v1/<object_name>/capture`.
52
+ # TODO: are we comfortable with deleting this?
64
53
  def self.custom_method(resource, target, name, http_verb, http_path)
65
54
  unless %i[get post delete].include?(http_verb)
66
55
  raise ArgumentError,
@@ -79,21 +68,38 @@ module Stripe
79
68
  "id should be a string representing the ID of an API resource"
80
69
  end
81
70
 
82
- url = "#{target.resource_url}/"\
83
- "#{CGI.escape(id)}/"\
71
+ url = "#{target.resource_url}/" \
72
+ "#{CGI.escape(id)}/" \
84
73
  "#{CGI.escape(http_path)}"
85
74
 
86
- resp, opts = resource.execute_resource_request(
75
+ resource.execute_resource_request(
87
76
  http_verb,
88
77
  url,
78
+ :api,
89
79
  params,
90
80
  opts
91
81
  )
92
-
93
- Util.convert_to_stripe_object(resp.data, opts)
94
82
  end
95
83
  end
96
84
 
85
+ # Converts a hash of fields or an array of hashes into a +StripeObject+ or
86
+ # array of +StripeObject+s. These new objects will be created as a concrete
87
+ # type as dictated by their `object` field (e.g. an `object` value of
88
+ # `charge` would create an instance of +Charge+), but if `object` is not
89
+ # present or of an unknown type, the newly created instance will fall back
90
+ # to being a +StripeObject+.
91
+ #
92
+ # ==== Attributes
93
+ #
94
+ # * +data+ - Hash of fields and values to be converted into a StripeObject.
95
+ # * +params+ - Params for +StripeObject+ like filters used in search that
96
+ # will be reused on subsequent API calls.
97
+ # * +opts+ - Options for +StripeObject+ like an API key that will be reused
98
+ # on subsequent API calls.
99
+ def self.convert_to_stripe_object(data, opts = {}, api_mode: :v1, requestor: nil)
100
+ convert_to_stripe_object_with_params(data, {}, opts, api_mode: api_mode, requestor: requestor)
101
+ end
102
+
97
103
  # Converts a hash of fields or an array of hashes into a +StripeObject+ or
98
104
  # array of +StripeObject+s. These new objects will be created as a concrete
99
105
  # type as dictated by their `object` field (e.g. an `object` value of
@@ -106,17 +112,53 @@ module Stripe
106
112
  # * +data+ - Hash of fields and values to be converted into a StripeObject.
107
113
  # * +opts+ - Options for +StripeObject+ like an API key that will be reused
108
114
  # on subsequent API calls.
109
- def self.convert_to_stripe_object(data, opts = {})
115
+ # * +last_response+ - The raw response associated with the object.
116
+ # * +api_mode+ - The API mode to use when converting the object, either :v1 or :v2.
117
+ # * +requestor+ - The requestor to use when constructing the object.
118
+ def self.convert_to_stripe_object_with_params(
119
+ data,
120
+ params,
121
+ opts = {},
122
+ last_response = nil,
123
+ api_mode: :v1,
124
+ requestor: nil
125
+ )
110
126
  opts = normalize_opts(opts)
111
127
 
112
128
  case data
113
129
  when Array
114
- data.map { |i| convert_to_stripe_object(i, opts) }
130
+ data.map { |i| convert_to_stripe_object(i, opts, api_mode: api_mode, requestor: requestor) }
115
131
  when Hash
132
+ # TODO: This is a terrible hack.
133
+ # Waiting on https://jira.corp.stripe.com/browse/API_SERVICES-3167 to add
134
+ # an object in v2 lists
135
+ if api_mode == :v2 && data.include?(:data) && data.include?(:next_page_url)
136
+ return V2::ListObject.construct_from(data, opts, last_response, api_mode, requestor)
137
+ end
138
+
116
139
  # Try converting to a known object class. If none available, fall back
117
140
  # to generic StripeObject
118
- object_classes.fetch(data[:object], StripeObject)
119
- .construct_from(data, opts)
141
+ object_type = data[:type] || data["type"]
142
+ object_name = data[:object] || data["object"]
143
+ object_class = if api_mode == :v2
144
+ if object_name == "v2.core.event" && thin_event_classes.key?(object_type)
145
+ thin_event_classes.fetch(object_type)
146
+ else
147
+ v2_object_classes.fetch(
148
+ object_name, StripeObject
149
+ )
150
+ end
151
+ else
152
+ object_classes.fetch(object_name, StripeObject)
153
+ end
154
+
155
+ obj = object_class.construct_from(data, opts, last_response, api_mode, requestor)
156
+
157
+ # set filters so that we can fetch the same limit, expansions, and
158
+ # predicates when accessing the next and previous pages
159
+ obj.filters = params.dup if obj && (obj.is_a?(SearchResultObject) || obj.is_a?(ListObject))
160
+
161
+ obj
120
162
  else
121
163
  data
122
164
  end
@@ -126,7 +168,7 @@ module Stripe
126
168
  config = data.delete(:config) || Stripe.config
127
169
  logger = config.logger || Stripe.logger
128
170
  if !logger.nil? ||
129
- !config.log_level.nil? && config.log_level <= Stripe::LEVEL_ERROR
171
+ (!config.log_level.nil? && config.log_level <= Stripe::LEVEL_ERROR)
130
172
  log_internal(message, data, color: :cyan, level: Stripe::LEVEL_ERROR,
131
173
  logger: Stripe.logger, out: $stderr)
132
174
  end
@@ -136,7 +178,7 @@ module Stripe
136
178
  config = data.delete(:config) || Stripe.config
137
179
  logger = config.logger || Stripe.logger
138
180
  if !logger.nil? ||
139
- !config.log_level.nil? && config.log_level <= Stripe::LEVEL_INFO
181
+ (!config.log_level.nil? && config.log_level <= Stripe::LEVEL_INFO)
140
182
  log_internal(message, data, color: :cyan, level: Stripe::LEVEL_INFO,
141
183
  logger: Stripe.logger, out: $stdout)
142
184
  end
@@ -146,7 +188,7 @@ module Stripe
146
188
  config = data.delete(:config) || Stripe.config
147
189
  logger = config.logger || Stripe.logger
148
190
  if !logger.nil? ||
149
- !config.log_level.nil? && config.log_level <= Stripe::LEVEL_DEBUG
191
+ (!config.log_level.nil? && config.log_level <= Stripe::LEVEL_DEBUG)
150
192
  log_internal(message, data, color: :blue, level: Stripe::LEVEL_DEBUG,
151
193
  logger: Stripe.logger, out: $stdout)
152
194
  end
@@ -158,10 +200,10 @@ module Stripe
158
200
  new_hash = {}
159
201
  object.each do |key, value|
160
202
  key = (begin
161
- key.to_sym
162
- rescue StandardError
163
- key
164
- end) || key
203
+ key.to_sym
204
+ rescue StandardError
205
+ key
206
+ end) || key
165
207
  new_hash[key] = symbolize_names(value)
166
208
  end
167
209
  new_hash
@@ -176,8 +218,8 @@ module Stripe
176
218
  # parameters in a URI or as form parameters in a request body. This mainly
177
219
  # involves escaping special characters from parameter keys and values (e.g.
178
220
  # `&`).
179
- def self.encode_parameters(params)
180
- Util.flatten_params(params)
221
+ def self.encode_parameters(params, api_mode)
222
+ Util.flatten_params(params, api_mode)
181
223
  .map { |k, v| "#{url_encode(k)}=#{url_encode(v)}" }.join("&")
182
224
  end
183
225
 
@@ -192,7 +234,7 @@ module Stripe
192
234
  gsub("%5B", "[").gsub("%5D", "]")
193
235
  end
194
236
 
195
- def self.flatten_params(params, parent_key = nil)
237
+ def self.flatten_params(params, api_mode, parent_key = nil)
196
238
  result = []
197
239
 
198
240
  # do not sort the final output because arrays (and arrays of hashes
@@ -200,9 +242,9 @@ module Stripe
200
242
  params.each do |key, value|
201
243
  calculated_key = parent_key ? "#{parent_key}[#{key}]" : key.to_s
202
244
  if value.is_a?(Hash)
203
- result += flatten_params(value, calculated_key)
245
+ result += flatten_params(value, api_mode, calculated_key)
204
246
  elsif value.is_a?(Array)
205
- result += flatten_params_array(value, calculated_key)
247
+ result += flatten_params_array(value, api_mode, calculated_key)
206
248
  else
207
249
  result << [calculated_key, value]
208
250
  end
@@ -211,15 +253,19 @@ module Stripe
211
253
  result
212
254
  end
213
255
 
214
- def self.flatten_params_array(value, calculated_key)
256
+ def self.flatten_params_array(value, api_mode, calculated_key)
215
257
  result = []
216
258
  value.each_with_index do |elem, i|
217
259
  if elem.is_a?(Hash)
218
- result += flatten_params(elem, "#{calculated_key}[#{i}]")
260
+ result += flatten_params(elem, api_mode, "#{calculated_key}[#{i}]")
219
261
  elsif elem.is_a?(Array)
220
- result += flatten_params_array(elem, calculated_key)
262
+ result += flatten_params_array(elem, api_mode, calculated_key)
221
263
  else
222
- result << ["#{calculated_key}[#{i}]", elem]
264
+ result << if api_mode == :v2
265
+ [calculated_key, elem]
266
+ else
267
+ ["#{calculated_key}[#{i}]", elem]
268
+ end
223
269
  end
224
270
  end
225
271
  result
@@ -309,6 +355,15 @@ module Stripe
309
355
  res.zero?
310
356
  end
311
357
 
358
+ # Returns either v1 or v2 as api_mode based on the given path
359
+ def self.get_api_mode(path)
360
+ if path.start_with?("/v2/")
361
+ :v2
362
+ else
363
+ :v1
364
+ end
365
+ end
366
+
312
367
  #
313
368
  # private
314
369
  #
@@ -390,6 +445,15 @@ module Stripe
390
445
  # Hopefully val is a string, but protect in case it's not.
391
446
  val = val.to_s
392
447
 
448
+ # Some values returned by the server are encoded in ASCII-8BIT before
449
+ # being parsed as UTF-8 by Marshal. If we don't transform these here, then
450
+ # puts will fail as it tries to render UTF-8 characters as ASCII-8BIT
451
+ # which is not valid.
452
+ if val && val.encoding == Encoding::ASCII_8BIT
453
+ # Dup the string as it is a frozen literal.
454
+ val = val.dup.force_encoding("UTF-8")
455
+ end
456
+
393
457
  if %r{[^\w\-/]} =~ val
394
458
  # If the string contains any special characters, escape any double
395
459
  # quotes it has, remove newlines, and wrap the whole thing in quotes.
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ module V2
5
+ class ListObject < StripeObject
6
+ OBJECT_NAME = "list"
7
+ def self.object_name
8
+ "list"
9
+ end
10
+
11
+ # An empty list object. This is returned from +fetch_next_page+ when we know that
12
+ # there isn't a next page.
13
+ def self.empty_list(opts = {})
14
+ ListObject.construct_from({ data: [] }, opts, nil, :v2)
15
+ end
16
+
17
+ def [](key)
18
+ case key
19
+ when String, Symbol
20
+ super
21
+ else
22
+ raise ArgumentError,
23
+ "You tried to access the #{key.inspect} index, but ListObject " \
24
+ "types only support String keys. (HINT: List calls return an " \
25
+ "object with a 'data' (which is the data array). You likely " \
26
+ "want to call #data[#{key.inspect}])"
27
+ end
28
+ end
29
+
30
+ # Iterates through each resource in the page represented by the current
31
+ # `ListObject`.
32
+ #
33
+ # Note that this method makes no effort to fetch a new page when it gets to
34
+ # the end of the current page's resources. See also +auto_paging_each+.
35
+ def each(&blk)
36
+ data.each(&blk)
37
+ end
38
+
39
+ # Iterates through each resource in the page represented by the current
40
+ # `ListObject` in reverse.
41
+ def reverse_each(&blk)
42
+ data.reverse_each(&blk)
43
+ end
44
+
45
+ # Iterates through each resource in all pages, making additional fetches to
46
+ # the API as necessary.
47
+ #
48
+ # Note that this method will make as many API calls as necessary to fetch
49
+ # all resources. For more granular control, please see +each+ and
50
+ # +fetch_next_page+.
51
+ def auto_paging_each(&blk)
52
+ return enum_for(:auto_paging_each) unless block_given?
53
+
54
+ page = self
55
+ loop do
56
+ page.each(&blk)
57
+
58
+ break if page.next_page_url.nil?
59
+
60
+ page = page.fetch_next_page
61
+ end
62
+ end
63
+
64
+ # Returns true if the page object contains no elements.
65
+ def empty?
66
+ data.empty?
67
+ end
68
+
69
+ # Fetches the next page in the resource list (if there is one).
70
+ #
71
+ # This method will try to respect the limit of the current page. If none
72
+ # was given, the default limit will be fetched again.
73
+ def fetch_next_page(opts = {})
74
+ return self.class.empty_list(opts) if next_page_url.nil?
75
+
76
+ _request(
77
+ method: :get,
78
+ path: next_page_url,
79
+ base_address: :api
80
+ )
81
+ end
82
+ end
83
+ end
84
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stripe
4
- VERSION = "5.55.0"
4
+ VERSION = "13.5.1"
5
5
  end
@@ -18,7 +18,7 @@ module Stripe
18
18
  # doesn't GC symbols. It also decreases the likelihood that we receive a
19
19
  # bad payload that fails to parse and throws an exception.
20
20
  data = JSON.parse(payload, symbolize_names: true)
21
- Event.construct_from(data)
21
+ Event.construct_from(data, {}, nil, :v1)
22
22
  end
23
23
 
24
24
  module Signature
@@ -108,8 +108,9 @@ module Stripe
108
108
  end
109
109
 
110
110
  if tolerance && timestamp < Time.now - tolerance
111
+ formatted_timestamp = Time.at(timestamp).strftime("%F %T")
111
112
  raise SignatureVerificationError.new(
112
- "Timestamp outside the tolerance zone (#{Time.at(timestamp)})",
113
+ "Timestamp outside the tolerance zone (#{formatted_timestamp})",
113
114
  header, http_body: payload
114
115
  )
115
116
  end
data/lib/stripe.rb CHANGED
@@ -15,6 +15,7 @@ require "uri"
15
15
  require "forwardable"
16
16
 
17
17
  # Version
18
+ require "stripe/api_version"
18
19
  require "stripe/version"
19
20
 
20
21
  # API operations
@@ -24,18 +25,24 @@ require "stripe/api_operations/list"
24
25
  require "stripe/api_operations/nested_resource"
25
26
  require "stripe/api_operations/request"
26
27
  require "stripe/api_operations/save"
28
+ require "stripe/api_operations/singleton_save"
27
29
  require "stripe/api_operations/search"
28
30
 
29
31
  # API resource support classes
30
32
  require "stripe/errors"
31
33
  require "stripe/object_types"
34
+ require "stripe/event_types"
35
+ require "stripe/request_options"
32
36
  require "stripe/util"
33
37
  require "stripe/connection_manager"
34
38
  require "stripe/multipart_encoder"
39
+ require "stripe/api_requestor"
40
+ require "stripe/stripe_service"
35
41
  require "stripe/stripe_client"
36
42
  require "stripe/stripe_object"
37
43
  require "stripe/stripe_response"
38
44
  require "stripe/list_object"
45
+ require "stripe/v2_list_object"
39
46
  require "stripe/search_result_object"
40
47
  require "stripe/error_object"
41
48
  require "stripe/api_resource"
@@ -43,12 +50,15 @@ require "stripe/api_resource_test_helpers"
43
50
  require "stripe/singleton_api_resource"
44
51
  require "stripe/webhook"
45
52
  require "stripe/stripe_configuration"
53
+ require "stripe/thin_event"
46
54
 
47
55
  # Named API resources
48
56
  require "stripe/resources"
57
+ require "stripe/services"
49
58
 
50
59
  # OAuth
51
60
  require "stripe/oauth"
61
+ require "stripe/services/oauth_service"
52
62
 
53
63
  module Stripe
54
64
  DEFAULT_CA_BUNDLE_PATH = __dir__ + "/data/ca-certificates.crt"
@@ -58,6 +68,34 @@ module Stripe
58
68
  LEVEL_ERROR = Logger::ERROR
59
69
  LEVEL_INFO = Logger::INFO
60
70
 
71
+ # API base constants
72
+ DEFAULT_API_BASE = "https://api.stripe.com"
73
+ DEFAULT_CONNECT_BASE = "https://connect.stripe.com"
74
+ DEFAULT_UPLOAD_BASE = "https://files.stripe.com"
75
+ DEFAULT_METER_EVENTS_BASE = "https://meter-events.stripe.com"
76
+
77
+ # Options that can be configured globally by users
78
+ USER_CONFIGURABLE_GLOBAL_OPTIONS = Set.new(%i[
79
+ api_key
80
+ api_version
81
+ stripe_account
82
+ api_base
83
+ uploads_base
84
+ connect_base
85
+ meter_events_base
86
+ open_timeout
87
+ read_timeout
88
+ write_timeout
89
+ proxy
90
+ verify_ssl_certs
91
+ ca_bundle_path
92
+ log_level
93
+ logger
94
+ max_network_retries
95
+ enable_telemetry
96
+ client_id
97
+ ])
98
+
61
99
  @app_info = nil
62
100
 
63
101
  @config = Stripe::StripeConfiguration.setup
@@ -74,6 +112,7 @@ module Stripe
74
112
  def_delegators :@config, :api_base, :api_base=
75
113
  def_delegators :@config, :uploads_base, :uploads_base=
76
114
  def_delegators :@config, :connect_base, :connect_base=
115
+ def_delegators :@config, :meter_events_base, :meter_events_base=
77
116
  def_delegators :@config, :open_timeout, :open_timeout=
78
117
  def_delegators :@config, :read_timeout, :read_timeout=
79
118
  def_delegators :@config, :write_timeout, :write_timeout=
data/stripe.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- $LOAD_PATH.unshift(::File.join(::File.dirname(__FILE__), "lib"))
3
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "lib"))
4
4
 
5
5
  require "stripe/version"
6
6
 
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  "github_repo" => "ssh://github.com/stripe/stripe-ruby",
25
25
  "homepage_uri" => "https://stripe.com/docs/api?lang=ruby",
26
26
  "source_code_uri" => "https://github.com/stripe/stripe-ruby",
27
+ "rubygems_mfa_required" => "false",
27
28
  }
28
29
 
29
30
  ignored = Regexp.union(
@@ -32,10 +33,12 @@ Gem::Specification.new do |s|
32
33
  /\A\.rubocop/,
33
34
  /\A\.travis.yml/,
34
35
  /\A\.vscode/,
36
+ /\Abin/,
37
+ /\Asorbet/,
35
38
  /\Atest/
36
39
  )
37
- s.files = `git ls-files`.split("\n").reject { |f| ignored.match(f) }
38
- s.executables = `git ls-files -- bin/*`.split("\n")
39
- .map { |f| ::File.basename(f) }
40
+ s.files = `git ls-files`.split("\n").grep_v(ignored)
41
+ s.bindir = "exe"
42
+ s.executables = `git ls-files -- exe/*`.split("\n").map { |f| File.basename(f) }
40
43
  s.require_paths = ["lib"]
41
44
  end