stripe 5.55.0 → 18.2.0.pre.beta.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 (1336) hide show
  1. checksums.yaml +4 -4
  2. data/{bin → exe}/stripe-console +1 -1
  3. data/lib/data/ca-certificates.crt +1805 -2337
  4. data/lib/stripe/api_operations/create.rb +6 -2
  5. data/lib/stripe/api_operations/delete.rb +12 -7
  6. data/lib/stripe/api_operations/list.rb +6 -9
  7. data/lib/stripe/api_operations/nested_resource.rb +59 -31
  8. data/lib/stripe/api_operations/request.rb +30 -65
  9. data/lib/stripe/api_operations/save.rb +20 -10
  10. data/lib/stripe/api_operations/search.rb +11 -9
  11. data/lib/stripe/api_operations/singleton_save.rb +90 -0
  12. data/lib/stripe/api_requestor.rb +1173 -0
  13. data/lib/stripe/api_resource.rb +51 -18
  14. data/lib/stripe/api_resource_test_helpers.rb +9 -3
  15. data/lib/stripe/{resources/usage_record.rb → api_version.rb} +2 -2
  16. data/lib/stripe/connection_manager.rb +6 -10
  17. data/lib/stripe/errors.rb +74 -20
  18. data/lib/stripe/event_types.rb +242 -0
  19. data/lib/stripe/events/unknown_event_notification.rb +19 -0
  20. data/lib/stripe/events/v1_billing_meter_error_report_triggered_event.rb +123 -0
  21. data/lib/stripe/events/v1_billing_meter_no_meter_found_event.rb +100 -0
  22. data/lib/stripe/events/v2_core_account_closed_event.rb +44 -0
  23. data/lib/stripe/events/v2_core_account_created_event.rb +44 -0
  24. data/lib/stripe/events/v2_core_account_including_configuration_customer_capability_status_updated_event.rb +63 -0
  25. data/lib/stripe/events/v2_core_account_including_configuration_customer_updated_event.rb +44 -0
  26. data/lib/stripe/events/v2_core_account_including_configuration_merchant_capability_status_updated_event.rb +63 -0
  27. data/lib/stripe/events/v2_core_account_including_configuration_merchant_updated_event.rb +44 -0
  28. data/lib/stripe/events/v2_core_account_including_configuration_recipient_capability_status_updated_event.rb +63 -0
  29. data/lib/stripe/events/v2_core_account_including_configuration_recipient_updated_event.rb +44 -0
  30. data/lib/stripe/events/v2_core_account_including_configuration_storer_capability_status_updated_event.rb +63 -0
  31. data/lib/stripe/events/v2_core_account_including_configuration_storer_updated_event.rb +44 -0
  32. data/lib/stripe/events/v2_core_account_including_defaults_updated_event.rb +44 -0
  33. data/lib/stripe/events/v2_core_account_including_identity_updated_event.rb +44 -0
  34. data/lib/stripe/events/v2_core_account_including_requirements_updated_event.rb +44 -0
  35. data/lib/stripe/events/v2_core_account_link_returned_event.rb +42 -0
  36. data/lib/stripe/events/v2_core_account_person_created_event.rb +61 -0
  37. data/lib/stripe/events/v2_core_account_person_deleted_event.rb +61 -0
  38. data/lib/stripe/events/v2_core_account_person_updated_event.rb +61 -0
  39. data/lib/stripe/events/v2_core_account_updated_event.rb +44 -0
  40. data/lib/stripe/events/v2_core_event_destination_ping_event.rb +44 -0
  41. data/lib/stripe/events/v2_core_health_event_generation_failure_resolved_event.rb +78 -0
  42. data/lib/stripe/events/v2_money_management_adjustment_created_event.rb +44 -0
  43. data/lib/stripe/events/v2_money_management_financial_account_created_event.rb +44 -0
  44. data/lib/stripe/events/v2_money_management_financial_account_updated_event.rb +44 -0
  45. data/lib/stripe/events/v2_money_management_financial_address_activated_event.rb +44 -0
  46. data/lib/stripe/events/v2_money_management_financial_address_failed_event.rb +44 -0
  47. data/lib/stripe/events/v2_money_management_inbound_transfer_available_event.rb +61 -0
  48. data/lib/stripe/events/v2_money_management_inbound_transfer_bank_debit_failed_event.rb +44 -0
  49. data/lib/stripe/events/v2_money_management_inbound_transfer_bank_debit_processing_event.rb +44 -0
  50. data/lib/stripe/events/v2_money_management_inbound_transfer_bank_debit_queued_event.rb +44 -0
  51. data/lib/stripe/events/v2_money_management_inbound_transfer_bank_debit_returned_event.rb +44 -0
  52. data/lib/stripe/events/v2_money_management_inbound_transfer_bank_debit_succeeded_event.rb +44 -0
  53. data/lib/stripe/events/v2_money_management_outbound_payment_canceled_event.rb +44 -0
  54. data/lib/stripe/events/v2_money_management_outbound_payment_created_event.rb +44 -0
  55. data/lib/stripe/events/v2_money_management_outbound_payment_failed_event.rb +44 -0
  56. data/lib/stripe/events/v2_money_management_outbound_payment_posted_event.rb +44 -0
  57. data/lib/stripe/events/v2_money_management_outbound_payment_returned_event.rb +44 -0
  58. data/lib/stripe/events/v2_money_management_outbound_payment_updated_event.rb +44 -0
  59. data/lib/stripe/events/v2_money_management_outbound_transfer_canceled_event.rb +44 -0
  60. data/lib/stripe/events/v2_money_management_outbound_transfer_created_event.rb +44 -0
  61. data/lib/stripe/events/v2_money_management_outbound_transfer_failed_event.rb +44 -0
  62. data/lib/stripe/events/v2_money_management_outbound_transfer_posted_event.rb +44 -0
  63. data/lib/stripe/events/v2_money_management_outbound_transfer_returned_event.rb +44 -0
  64. data/lib/stripe/events/v2_money_management_outbound_transfer_updated_event.rb +44 -0
  65. data/lib/stripe/events/v2_money_management_payout_method_created_event.rb +44 -0
  66. data/lib/stripe/events/v2_money_management_payout_method_updated_event.rb +44 -0
  67. data/lib/stripe/events/v2_money_management_received_credit_available_event.rb +61 -0
  68. data/lib/stripe/events/v2_money_management_received_credit_failed_event.rb +44 -0
  69. data/lib/stripe/events/v2_money_management_received_credit_returned_event.rb +44 -0
  70. data/lib/stripe/events/v2_money_management_received_credit_succeeded_event.rb +44 -0
  71. data/lib/stripe/events/v2_money_management_received_debit_canceled_event.rb +44 -0
  72. data/lib/stripe/events/v2_money_management_received_debit_failed_event.rb +44 -0
  73. data/lib/stripe/events/v2_money_management_received_debit_pending_event.rb +44 -0
  74. data/lib/stripe/events/v2_money_management_received_debit_succeeded_event.rb +44 -0
  75. data/lib/stripe/events/v2_money_management_received_debit_updated_event.rb +44 -0
  76. data/lib/stripe/events/v2_money_management_transaction_created_event.rb +61 -0
  77. data/lib/stripe/events/v2_money_management_transaction_updated_event.rb +44 -0
  78. data/lib/stripe/instrumentation.rb +37 -15
  79. data/lib/stripe/list_object.rb +5 -3
  80. data/lib/stripe/multipart_encoder.rb +7 -7
  81. data/lib/stripe/oauth.rb +14 -21
  82. data/lib/stripe/object_types.rb +220 -103
  83. data/lib/stripe/params/account_capability_list_params.rb +13 -0
  84. data/lib/stripe/params/account_capability_retrieve_params.rb +13 -0
  85. data/lib/stripe/params/account_capability_update_params.rb +18 -0
  86. data/lib/stripe/params/account_create_params.rb +2440 -0
  87. data/lib/stripe/params/account_delete_params.rb +6 -0
  88. data/lib/stripe/params/account_external_account_create_params.rb +134 -0
  89. data/lib/stripe/params/account_external_account_delete_params.rb +6 -0
  90. data/lib/stripe/params/account_external_account_list_params.rb +25 -0
  91. data/lib/stripe/params/account_external_account_retrieve_params.rb +13 -0
  92. data/lib/stripe/params/account_external_account_update_params.rb +91 -0
  93. data/lib/stripe/params/account_link_create_params.rb +52 -0
  94. data/lib/stripe/params/account_list_params.rb +42 -0
  95. data/lib/stripe/params/account_login_link_create_params.rb +13 -0
  96. data/lib/stripe/params/account_notice_list_params.rb +25 -0
  97. data/lib/stripe/params/account_notice_retrieve_params.rb +13 -0
  98. data/lib/stripe/params/account_notice_update_params.rb +36 -0
  99. data/lib/stripe/params/account_person_create_params.rb +435 -0
  100. data/lib/stripe/params/account_person_delete_params.rb +6 -0
  101. data/lib/stripe/params/account_person_list_params.rb +61 -0
  102. data/lib/stripe/params/account_person_retrieve_params.rb +13 -0
  103. data/lib/stripe/params/account_person_update_params.rb +435 -0
  104. data/lib/stripe/params/account_persons_params.rb +61 -0
  105. data/lib/stripe/params/account_reject_params.rb +16 -0
  106. data/lib/stripe/params/account_retrieve_current_params.rb +13 -0
  107. data/lib/stripe/params/account_retrieve_params.rb +13 -0
  108. data/lib/stripe/params/account_session_create_params.rb +823 -0
  109. data/lib/stripe/params/account_update_params.rb +2350 -0
  110. data/lib/stripe/params/apple_pay_domain_create_params.rb +16 -0
  111. data/lib/stripe/params/apple_pay_domain_delete_params.rb +6 -0
  112. data/lib/stripe/params/apple_pay_domain_list_params.rb +31 -0
  113. data/lib/stripe/params/apple_pay_domain_retrieve_params.rb +13 -0
  114. data/lib/stripe/params/application_fee_list_params.rb +52 -0
  115. data/lib/stripe/params/application_fee_refund_create_params.rb +19 -0
  116. data/lib/stripe/params/application_fee_refund_list_params.rb +22 -0
  117. data/lib/stripe/params/application_fee_refund_retrieve_params.rb +13 -0
  118. data/lib/stripe/params/application_fee_refund_update_params.rb +16 -0
  119. data/lib/stripe/params/application_fee_retrieve_params.rb +13 -0
  120. data/lib/stripe/params/apps/secret_create_params.rb +38 -0
  121. data/lib/stripe/params/apps/secret_delete_where_params.rb +32 -0
  122. data/lib/stripe/params/apps/secret_find_params.rb +32 -0
  123. data/lib/stripe/params/apps/secret_list_params.rb +38 -0
  124. data/lib/stripe/params/balance_retrieve_params.rb +13 -0
  125. data/lib/stripe/params/balance_settings_retrieve_params.rb +13 -0
  126. data/lib/stripe/params/balance_settings_update_params.rb +67 -0
  127. data/lib/stripe/params/balance_transaction_list_params.rb +64 -0
  128. data/lib/stripe/params/balance_transaction_retrieve_params.rb +13 -0
  129. data/lib/stripe/params/billing/alert_activate_params.rb +15 -0
  130. data/lib/stripe/params/billing/alert_archive_params.rb +15 -0
  131. data/lib/stripe/params/billing/alert_create_params.rb +52 -0
  132. data/lib/stripe/params/billing/alert_deactivate_params.rb +15 -0
  133. data/lib/stripe/params/billing/alert_list_params.rb +37 -0
  134. data/lib/stripe/params/billing/alert_retrieve_params.rb +15 -0
  135. data/lib/stripe/params/billing/analytics/meter_usage_retrieve_params.rb +65 -0
  136. data/lib/stripe/params/billing/credit_balance_summary_retrieve_params.rb +57 -0
  137. data/lib/stripe/params/billing/credit_balance_transaction_list_params.rb +41 -0
  138. data/lib/stripe/params/billing/credit_balance_transaction_retrieve_params.rb +15 -0
  139. data/lib/stripe/params/billing/credit_grant_create_params.rb +107 -0
  140. data/lib/stripe/params/billing/credit_grant_expire_params.rb +15 -0
  141. data/lib/stripe/params/billing/credit_grant_list_params.rb +37 -0
  142. data/lib/stripe/params/billing/credit_grant_retrieve_params.rb +15 -0
  143. data/lib/stripe/params/billing/credit_grant_update_params.rb +21 -0
  144. data/lib/stripe/params/billing/credit_grant_void_grant_params.rb +15 -0
  145. data/lib/stripe/params/billing/meter_create_params.rb +70 -0
  146. data/lib/stripe/params/billing/meter_deactivate_params.rb +15 -0
  147. data/lib/stripe/params/billing/meter_event_adjustment_create_params.rb +32 -0
  148. data/lib/stripe/params/billing/meter_event_create_params.rb +27 -0
  149. data/lib/stripe/params/billing/meter_event_summary_list_params.rb +45 -0
  150. data/lib/stripe/params/billing/meter_list_params.rb +27 -0
  151. data/lib/stripe/params/billing/meter_reactivate_params.rb +15 -0
  152. data/lib/stripe/params/billing/meter_retrieve_params.rb +15 -0
  153. data/lib/stripe/params/billing/meter_update_params.rb +18 -0
  154. data/lib/stripe/params/billing_portal/configuration_create_params.rb +232 -0
  155. data/lib/stripe/params/billing_portal/configuration_list_params.rb +37 -0
  156. data/lib/stripe/params/billing_portal/configuration_retrieve_params.rb +15 -0
  157. data/lib/stripe/params/billing_portal/configuration_update_params.rb +238 -0
  158. data/lib/stripe/params/billing_portal/session_create_params.rb +183 -0
  159. data/lib/stripe/params/capital/financing_offer_list_params.rb +58 -0
  160. data/lib/stripe/params/capital/financing_offer_mark_delivered_params.rb +15 -0
  161. data/lib/stripe/params/capital/financing_offer_retrieve_params.rb +15 -0
  162. data/lib/stripe/params/capital/financing_summary_retrieve_params.rb +15 -0
  163. data/lib/stripe/params/capital/financing_transaction_list_params.rb +45 -0
  164. data/lib/stripe/params/capital/financing_transaction_retrieve_params.rb +15 -0
  165. data/lib/stripe/params/charge_capture_params.rb +1705 -0
  166. data/lib/stripe/params/charge_create_params.rb +172 -0
  167. data/lib/stripe/params/charge_list_params.rb +60 -0
  168. data/lib/stripe/params/charge_retrieve_params.rb +13 -0
  169. data/lib/stripe/params/charge_search_params.rb +22 -0
  170. data/lib/stripe/params/charge_update_params.rb +1750 -0
  171. data/lib/stripe/params/checkout/session_create_params.rb +2654 -0
  172. data/lib/stripe/params/checkout/session_expire_params.rb +15 -0
  173. data/lib/stripe/params/checkout/session_line_item_list_params.rb +24 -0
  174. data/lib/stripe/params/checkout/session_list_line_items_params.rb +24 -0
  175. data/lib/stripe/params/checkout/session_list_params.rb +87 -0
  176. data/lib/stripe/params/checkout/session_retrieve_params.rb +15 -0
  177. data/lib/stripe/params/checkout/session_update_params.rb +466 -0
  178. data/lib/stripe/params/climate/order_cancel_params.rb +15 -0
  179. data/lib/stripe/params/climate/order_create_params.rb +49 -0
  180. data/lib/stripe/params/climate/order_list_params.rb +24 -0
  181. data/lib/stripe/params/climate/order_retrieve_params.rb +15 -0
  182. data/lib/stripe/params/climate/order_update_params.rb +29 -0
  183. data/lib/stripe/params/climate/product_list_params.rb +24 -0
  184. data/lib/stripe/params/climate/product_retrieve_params.rb +15 -0
  185. data/lib/stripe/params/climate/supplier_list_params.rb +24 -0
  186. data/lib/stripe/params/climate/supplier_retrieve_params.rb +15 -0
  187. data/lib/stripe/params/confirmation_token_create_params.rb +747 -0
  188. data/lib/stripe/params/confirmation_token_retrieve_params.rb +13 -0
  189. data/lib/stripe/params/country_spec_list_params.rb +22 -0
  190. data/lib/stripe/params/country_spec_retrieve_params.rb +13 -0
  191. data/lib/stripe/params/coupon_create_params.rb +96 -0
  192. data/lib/stripe/params/coupon_delete_params.rb +6 -0
  193. data/lib/stripe/params/coupon_list_params.rb +42 -0
  194. data/lib/stripe/params/coupon_retrieve_params.rb +13 -0
  195. data/lib/stripe/params/coupon_update_params.rb +30 -0
  196. data/lib/stripe/params/credit_note_create_params.rb +161 -0
  197. data/lib/stripe/params/credit_note_line_item_list_params.rb +22 -0
  198. data/lib/stripe/params/credit_note_list_params.rb +60 -0
  199. data/lib/stripe/params/credit_note_list_preview_line_items_params.rb +173 -0
  200. data/lib/stripe/params/credit_note_preview_lines_list_params.rb +173 -0
  201. data/lib/stripe/params/credit_note_preview_params.rb +161 -0
  202. data/lib/stripe/params/credit_note_retrieve_params.rb +13 -0
  203. data/lib/stripe/params/credit_note_update_params.rb +19 -0
  204. data/lib/stripe/params/credit_note_void_credit_note_params.rb +13 -0
  205. data/lib/stripe/params/customer_balance_transaction_create_params.rb +25 -0
  206. data/lib/stripe/params/customer_balance_transaction_list_params.rb +52 -0
  207. data/lib/stripe/params/customer_balance_transaction_retrieve_params.rb +13 -0
  208. data/lib/stripe/params/customer_balance_transaction_update_params.rb +19 -0
  209. data/lib/stripe/params/customer_cash_balance_retrieve_params.rb +13 -0
  210. data/lib/stripe/params/customer_cash_balance_transaction_list_params.rb +22 -0
  211. data/lib/stripe/params/customer_cash_balance_transaction_retrieve_params.rb +13 -0
  212. data/lib/stripe/params/customer_cash_balance_update_params.rb +24 -0
  213. data/lib/stripe/params/customer_create_funding_instructions_params.rb +46 -0
  214. data/lib/stripe/params/customer_create_params.rb +259 -0
  215. data/lib/stripe/params/customer_delete_discount_params.rb +6 -0
  216. data/lib/stripe/params/customer_delete_params.rb +6 -0
  217. data/lib/stripe/params/customer_fund_cash_balance_params.rb +22 -0
  218. data/lib/stripe/params/customer_funding_instructions_create_params.rb +46 -0
  219. data/lib/stripe/params/customer_list_params.rb +56 -0
  220. data/lib/stripe/params/customer_list_payment_methods_params.rb +35 -0
  221. data/lib/stripe/params/customer_payment_method_list_params.rb +35 -0
  222. data/lib/stripe/params/customer_payment_method_retrieve_params.rb +13 -0
  223. data/lib/stripe/params/customer_payment_source_create_params.rb +22 -0
  224. data/lib/stripe/params/customer_payment_source_delete_params.rb +13 -0
  225. data/lib/stripe/params/customer_payment_source_list_params.rb +25 -0
  226. data/lib/stripe/params/customer_payment_source_retrieve_params.rb +13 -0
  227. data/lib/stripe/params/customer_payment_source_update_params.rb +114 -0
  228. data/lib/stripe/params/customer_payment_source_verify_params.rb +16 -0
  229. data/lib/stripe/params/customer_retrieve_params.rb +13 -0
  230. data/lib/stripe/params/customer_retrieve_payment_method_params.rb +13 -0
  231. data/lib/stripe/params/customer_search_params.rb +22 -0
  232. data/lib/stripe/params/customer_session_create_params.rb +219 -0
  233. data/lib/stripe/params/customer_tax_id_create_params.rb +19 -0
  234. data/lib/stripe/params/customer_tax_id_delete_params.rb +6 -0
  235. data/lib/stripe/params/customer_tax_id_list_params.rb +22 -0
  236. data/lib/stripe/params/customer_tax_id_retrieve_params.rb +13 -0
  237. data/lib/stripe/params/customer_update_params.rb +243 -0
  238. data/lib/stripe/params/dispute_close_params.rb +13 -0
  239. data/lib/stripe/params/dispute_list_params.rb +56 -0
  240. data/lib/stripe/params/dispute_retrieve_params.rb +13 -0
  241. data/lib/stripe/params/dispute_update_params.rb +317 -0
  242. data/lib/stripe/params/entitlements/active_entitlement_list_params.rb +33 -0
  243. data/lib/stripe/params/entitlements/active_entitlement_retrieve_params.rb +15 -0
  244. data/lib/stripe/params/entitlements/feature_create_params.rb +24 -0
  245. data/lib/stripe/params/entitlements/feature_list_params.rb +37 -0
  246. data/lib/stripe/params/entitlements/feature_retrieve_params.rb +15 -0
  247. data/lib/stripe/params/entitlements/feature_update_params.rb +24 -0
  248. data/lib/stripe/params/ephemeral_key_create_params.rb +31 -0
  249. data/lib/stripe/params/ephemeral_key_delete_params.rb +13 -0
  250. data/lib/stripe/params/event_list_params.rb +60 -0
  251. data/lib/stripe/params/event_retrieve_params.rb +13 -0
  252. data/lib/stripe/params/exchange_rate_list_params.rb +22 -0
  253. data/lib/stripe/params/exchange_rate_retrieve_params.rb +13 -0
  254. data/lib/stripe/params/external_account_create_params.rb +134 -0
  255. data/lib/stripe/params/external_account_delete_params.rb +6 -0
  256. data/lib/stripe/params/external_account_list_params.rb +25 -0
  257. data/lib/stripe/params/external_account_retrieve_params.rb +13 -0
  258. data/lib/stripe/params/external_account_update_params.rb +91 -0
  259. data/lib/stripe/params/file_create_params.rb +36 -0
  260. data/lib/stripe/params/file_link_create_params.rb +22 -0
  261. data/lib/stripe/params/file_link_list_params.rb +56 -0
  262. data/lib/stripe/params/file_link_retrieve_params.rb +13 -0
  263. data/lib/stripe/params/file_link_update_params.rb +19 -0
  264. data/lib/stripe/params/file_list_params.rb +52 -0
  265. data/lib/stripe/params/file_retrieve_params.rb +13 -0
  266. data/lib/stripe/params/financial_connections/account_disconnect_params.rb +15 -0
  267. data/lib/stripe/params/financial_connections/account_inferred_balance_list_params.rb +24 -0
  268. data/lib/stripe/params/financial_connections/account_list_owners_params.rb +33 -0
  269. data/lib/stripe/params/financial_connections/account_list_params.rb +51 -0
  270. data/lib/stripe/params/financial_connections/account_owner_list_params.rb +33 -0
  271. data/lib/stripe/params/financial_connections/account_refresh_account_params.rb +18 -0
  272. data/lib/stripe/params/financial_connections/account_refresh_params.rb +18 -0
  273. data/lib/stripe/params/financial_connections/account_retrieve_params.rb +15 -0
  274. data/lib/stripe/params/financial_connections/account_subscribe_params.rb +18 -0
  275. data/lib/stripe/params/financial_connections/account_unsubscribe_params.rb +18 -0
  276. data/lib/stripe/params/financial_connections/institution_list_params.rb +24 -0
  277. data/lib/stripe/params/financial_connections/institution_retrieve_params.rb +15 -0
  278. data/lib/stripe/params/financial_connections/session_create_params.rb +97 -0
  279. data/lib/stripe/params/financial_connections/session_retrieve_params.rb +15 -0
  280. data/lib/stripe/params/financial_connections/transaction_list_params.rb +67 -0
  281. data/lib/stripe/params/financial_connections/transaction_retrieve_params.rb +15 -0
  282. data/lib/stripe/params/forwarding/request_create_params.rb +59 -0
  283. data/lib/stripe/params/forwarding/request_list_params.rb +44 -0
  284. data/lib/stripe/params/forwarding/request_retrieve_params.rb +15 -0
  285. data/lib/stripe/params/fx_quote_create_params.rb +73 -0
  286. data/lib/stripe/params/fx_quote_list_params.rb +22 -0
  287. data/lib/stripe/params/fx_quote_retrieve_params.rb +13 -0
  288. data/lib/stripe/params/identity/verification_report_list_params.rb +62 -0
  289. data/lib/stripe/params/identity/verification_report_retrieve_params.rb +15 -0
  290. data/lib/stripe/params/identity/verification_session_cancel_params.rb +15 -0
  291. data/lib/stripe/params/identity/verification_session_create_params.rb +111 -0
  292. data/lib/stripe/params/identity/verification_session_list_params.rb +66 -0
  293. data/lib/stripe/params/identity/verification_session_redact_params.rb +15 -0
  294. data/lib/stripe/params/identity/verification_session_retrieve_params.rb +15 -0
  295. data/lib/stripe/params/identity/verification_session_update_params.rb +69 -0
  296. data/lib/stripe/params/invoice_add_lines_params.rb +263 -0
  297. data/lib/stripe/params/invoice_attach_payment_params.rb +61 -0
  298. data/lib/stripe/params/invoice_create_params.rb +723 -0
  299. data/lib/stripe/params/invoice_create_preview_params.rb +1810 -0
  300. data/lib/stripe/params/invoice_delete_params.rb +6 -0
  301. data/lib/stripe/params/invoice_finalize_invoice_params.rb +16 -0
  302. data/lib/stripe/params/invoice_item_create_params.rb +181 -0
  303. data/lib/stripe/params/invoice_item_delete_params.rb +6 -0
  304. data/lib/stripe/params/invoice_item_list_params.rb +64 -0
  305. data/lib/stripe/params/invoice_item_retrieve_params.rb +13 -0
  306. data/lib/stripe/params/invoice_item_update_params.rb +161 -0
  307. data/lib/stripe/params/invoice_line_item_list_params.rb +22 -0
  308. data/lib/stripe/params/invoice_line_item_update_params.rb +249 -0
  309. data/lib/stripe/params/invoice_list_params.rb +90 -0
  310. data/lib/stripe/params/invoice_mark_uncollectible_params.rb +13 -0
  311. data/lib/stripe/params/invoice_pay_params.rb +41 -0
  312. data/lib/stripe/params/invoice_payment_list_params.rb +75 -0
  313. data/lib/stripe/params/invoice_payment_retrieve_params.rb +13 -0
  314. data/lib/stripe/params/invoice_remove_lines_params.rb +30 -0
  315. data/lib/stripe/params/invoice_rendering_template_archive_params.rb +13 -0
  316. data/lib/stripe/params/invoice_rendering_template_list_params.rb +25 -0
  317. data/lib/stripe/params/invoice_rendering_template_retrieve_params.rb +16 -0
  318. data/lib/stripe/params/invoice_rendering_template_unarchive_params.rb +13 -0
  319. data/lib/stripe/params/invoice_retrieve_params.rb +13 -0
  320. data/lib/stripe/params/invoice_search_params.rb +22 -0
  321. data/lib/stripe/params/invoice_send_invoice_params.rb +13 -0
  322. data/lib/stripe/params/invoice_update_lines_params.rb +263 -0
  323. data/lib/stripe/params/invoice_update_params.rb +687 -0
  324. data/lib/stripe/params/invoice_void_invoice_params.rb +13 -0
  325. data/lib/stripe/params/issuing/authorization_approve_params.rb +21 -0
  326. data/lib/stripe/params/issuing/authorization_capture_params.rb +265 -0
  327. data/lib/stripe/params/issuing/authorization_create_params.rb +372 -0
  328. data/lib/stripe/params/issuing/authorization_decline_params.rb +18 -0
  329. data/lib/stripe/params/issuing/authorization_expire_params.rb +15 -0
  330. data/lib/stripe/params/issuing/authorization_finalize_amount_params.rb +143 -0
  331. data/lib/stripe/params/issuing/authorization_increment_params.rb +21 -0
  332. data/lib/stripe/params/issuing/authorization_list_params.rb +62 -0
  333. data/lib/stripe/params/issuing/authorization_respond_params.rb +18 -0
  334. data/lib/stripe/params/issuing/authorization_retrieve_params.rb +15 -0
  335. data/lib/stripe/params/issuing/authorization_reverse_params.rb +18 -0
  336. data/lib/stripe/params/issuing/authorization_update_params.rb +18 -0
  337. data/lib/stripe/params/issuing/card_create_params.rb +213 -0
  338. data/lib/stripe/params/issuing/card_deliver_card_params.rb +15 -0
  339. data/lib/stripe/params/issuing/card_fail_card_params.rb +15 -0
  340. data/lib/stripe/params/issuing/card_list_params.rb +78 -0
  341. data/lib/stripe/params/issuing/card_retrieve_params.rb +15 -0
  342. data/lib/stripe/params/issuing/card_return_card_params.rb +15 -0
  343. data/lib/stripe/params/issuing/card_ship_card_params.rb +15 -0
  344. data/lib/stripe/params/issuing/card_submit_card_params.rb +15 -0
  345. data/lib/stripe/params/issuing/card_update_params.rb +181 -0
  346. data/lib/stripe/params/issuing/cardholder_create_params.rb +239 -0
  347. data/lib/stripe/params/issuing/cardholder_list_params.rb +66 -0
  348. data/lib/stripe/params/issuing/cardholder_retrieve_params.rb +15 -0
  349. data/lib/stripe/params/issuing/cardholder_update_params.rb +230 -0
  350. data/lib/stripe/params/issuing/credit_underwriting_record_correct_params.rb +163 -0
  351. data/lib/stripe/params/issuing/credit_underwriting_record_create_from_application_params.rb +50 -0
  352. data/lib/stripe/params/issuing/credit_underwriting_record_create_from_proactive_review_params.rb +128 -0
  353. data/lib/stripe/params/issuing/credit_underwriting_record_list_params.rb +24 -0
  354. data/lib/stripe/params/issuing/credit_underwriting_record_report_decision_params.rb +86 -0
  355. data/lib/stripe/params/issuing/credit_underwriting_record_retrieve_params.rb +15 -0
  356. data/lib/stripe/params/issuing/dispute_create_params.rb +297 -0
  357. data/lib/stripe/params/issuing/dispute_list_params.rb +58 -0
  358. data/lib/stripe/params/issuing/dispute_retrieve_params.rb +15 -0
  359. data/lib/stripe/params/issuing/dispute_settlement_detail_list_params.rb +33 -0
  360. data/lib/stripe/params/issuing/dispute_settlement_detail_retrieve_params.rb +15 -0
  361. data/lib/stripe/params/issuing/dispute_submit_params.rb +18 -0
  362. data/lib/stripe/params/issuing/dispute_update_params.rb +275 -0
  363. data/lib/stripe/params/issuing/fraud_liability_debit_list_params.rb +44 -0
  364. data/lib/stripe/params/issuing/fraud_liability_debit_retrieve_params.rb +15 -0
  365. data/lib/stripe/params/issuing/personalization_design_activate_params.rb +15 -0
  366. data/lib/stripe/params/issuing/personalization_design_create_params.rb +75 -0
  367. data/lib/stripe/params/issuing/personalization_design_deactivate_params.rb +15 -0
  368. data/lib/stripe/params/issuing/personalization_design_list_params.rb +52 -0
  369. data/lib/stripe/params/issuing/personalization_design_reject_params.rb +29 -0
  370. data/lib/stripe/params/issuing/personalization_design_retrieve_params.rb +15 -0
  371. data/lib/stripe/params/issuing/personalization_design_update_params.rb +75 -0
  372. data/lib/stripe/params/issuing/physical_bundle_list_params.rb +37 -0
  373. data/lib/stripe/params/issuing/physical_bundle_retrieve_params.rb +15 -0
  374. data/lib/stripe/params/issuing/token_list_params.rb +58 -0
  375. data/lib/stripe/params/issuing/token_retrieve_params.rb +15 -0
  376. data/lib/stripe/params/issuing/token_update_params.rb +18 -0
  377. data/lib/stripe/params/issuing/transaction_create_force_capture_params.rb +316 -0
  378. data/lib/stripe/params/issuing/transaction_create_unlinked_refund_params.rb +316 -0
  379. data/lib/stripe/params/issuing/transaction_list_params.rb +66 -0
  380. data/lib/stripe/params/issuing/transaction_refund_params.rb +18 -0
  381. data/lib/stripe/params/issuing/transaction_retrieve_params.rb +15 -0
  382. data/lib/stripe/params/issuing/transaction_update_params.rb +18 -0
  383. data/lib/stripe/params/mandate_list_params.rb +39 -0
  384. data/lib/stripe/params/mandate_retrieve_params.rb +13 -0
  385. data/lib/stripe/params/margin_create_params.rb +25 -0
  386. data/lib/stripe/params/margin_list_params.rb +25 -0
  387. data/lib/stripe/params/margin_retrieve_params.rb +13 -0
  388. data/lib/stripe/params/margin_update_params.rb +22 -0
  389. data/lib/stripe/params/order_cancel_params.rb +13 -0
  390. data/lib/stripe/params/order_create_params.rb +2061 -0
  391. data/lib/stripe/params/order_line_item_list_params.rb +22 -0
  392. data/lib/stripe/params/order_list_line_items_params.rb +22 -0
  393. data/lib/stripe/params/order_list_params.rb +25 -0
  394. data/lib/stripe/params/order_reopen_params.rb +13 -0
  395. data/lib/stripe/params/order_retrieve_params.rb +13 -0
  396. data/lib/stripe/params/order_submit_params.rb +16 -0
  397. data/lib/stripe/params/order_update_params.rb +2065 -0
  398. data/lib/stripe/params/payment_attempt_record_list_params.rb +22 -0
  399. data/lib/stripe/params/payment_attempt_record_retrieve_params.rb +13 -0
  400. data/lib/stripe/params/payment_intent_amount_details_line_item_list_params.rb +22 -0
  401. data/lib/stripe/params/payment_intent_apply_customer_balance_params.rb +23 -0
  402. data/lib/stripe/params/payment_intent_cancel_params.rb +16 -0
  403. data/lib/stripe/params/payment_intent_capture_params.rb +1906 -0
  404. data/lib/stripe/params/payment_intent_confirm_params.rb +5647 -0
  405. data/lib/stripe/params/payment_intent_create_params.rb +5756 -0
  406. data/lib/stripe/params/payment_intent_decrement_authorization_params.rb +73 -0
  407. data/lib/stripe/params/payment_intent_increment_authorization_params.rb +295 -0
  408. data/lib/stripe/params/payment_intent_list_params.rb +56 -0
  409. data/lib/stripe/params/payment_intent_retrieve_params.rb +16 -0
  410. data/lib/stripe/params/payment_intent_search_params.rb +22 -0
  411. data/lib/stripe/params/payment_intent_trigger_action_params.rb +27 -0
  412. data/lib/stripe/params/payment_intent_update_params.rb +5660 -0
  413. data/lib/stripe/params/payment_intent_verify_microdeposits_params.rb +19 -0
  414. data/lib/stripe/params/payment_link_create_params.rb +815 -0
  415. data/lib/stripe/params/payment_link_line_item_list_params.rb +22 -0
  416. data/lib/stripe/params/payment_link_list_line_items_params.rb +22 -0
  417. data/lib/stripe/params/payment_link_list_params.rb +25 -0
  418. data/lib/stripe/params/payment_link_retrieve_params.rb +13 -0
  419. data/lib/stripe/params/payment_link_update_params.rb +603 -0
  420. data/lib/stripe/params/payment_method_attach_params.rb +19 -0
  421. data/lib/stripe/params/payment_method_configuration_create_params.rb +1303 -0
  422. data/lib/stripe/params/payment_method_configuration_list_params.rb +31 -0
  423. data/lib/stripe/params/payment_method_configuration_retrieve_params.rb +13 -0
  424. data/lib/stripe/params/payment_method_configuration_update_params.rb +1303 -0
  425. data/lib/stripe/params/payment_method_create_params.rb +694 -0
  426. data/lib/stripe/params/payment_method_detach_params.rb +13 -0
  427. data/lib/stripe/params/payment_method_domain_create_params.rb +19 -0
  428. data/lib/stripe/params/payment_method_domain_list_params.rb +35 -0
  429. data/lib/stripe/params/payment_method_domain_retrieve_params.rb +13 -0
  430. data/lib/stripe/params/payment_method_domain_update_params.rb +16 -0
  431. data/lib/stripe/params/payment_method_domain_validate_params.rb +13 -0
  432. data/lib/stripe/params/payment_method_list_params.rb +43 -0
  433. data/lib/stripe/params/payment_method_retrieve_params.rb +13 -0
  434. data/lib/stripe/params/payment_method_update_params.rb +139 -0
  435. data/lib/stripe/params/payment_record_report_payment_attempt_canceled_params.rb +19 -0
  436. data/lib/stripe/params/payment_record_report_payment_attempt_failed_params.rb +19 -0
  437. data/lib/stripe/params/payment_record_report_payment_attempt_guaranteed_params.rb +19 -0
  438. data/lib/stripe/params/payment_record_report_payment_attempt_informational_params.rb +93 -0
  439. data/lib/stripe/params/payment_record_report_payment_attempt_params.rb +186 -0
  440. data/lib/stripe/params/payment_record_report_payment_params.rb +252 -0
  441. data/lib/stripe/params/payment_record_report_refund_params.rb +79 -0
  442. data/lib/stripe/params/payment_record_retrieve_params.rb +13 -0
  443. data/lib/stripe/params/payout_cancel_params.rb +13 -0
  444. data/lib/stripe/params/payout_create_params.rb +51 -0
  445. data/lib/stripe/params/payout_list_params.rb +78 -0
  446. data/lib/stripe/params/payout_retrieve_params.rb +13 -0
  447. data/lib/stripe/params/payout_reverse_params.rb +16 -0
  448. data/lib/stripe/params/payout_update_params.rb +16 -0
  449. data/lib/stripe/params/plan_create_params.rb +158 -0
  450. data/lib/stripe/params/plan_delete_params.rb +6 -0
  451. data/lib/stripe/params/plan_list_params.rb +56 -0
  452. data/lib/stripe/params/plan_retrieve_params.rb +13 -0
  453. data/lib/stripe/params/plan_update_params.rb +35 -0
  454. data/lib/stripe/params/price_create_params.rb +278 -0
  455. data/lib/stripe/params/price_list_params.rb +87 -0
  456. data/lib/stripe/params/price_retrieve_params.rb +13 -0
  457. data/lib/stripe/params/price_search_params.rb +22 -0
  458. data/lib/stripe/params/price_update_params.rb +132 -0
  459. data/lib/stripe/params/privacy/redaction_job_cancel_params.rb +15 -0
  460. data/lib/stripe/params/privacy/redaction_job_create_params.rb +67 -0
  461. data/lib/stripe/params/privacy/redaction_job_list_params.rb +27 -0
  462. data/lib/stripe/params/privacy/redaction_job_retrieve_params.rb +15 -0
  463. data/lib/stripe/params/privacy/redaction_job_run_params.rb +15 -0
  464. data/lib/stripe/params/privacy/redaction_job_update_params.rb +18 -0
  465. data/lib/stripe/params/privacy/redaction_job_validate_params.rb +15 -0
  466. data/lib/stripe/params/privacy/redaction_job_validation_error_list_params.rb +24 -0
  467. data/lib/stripe/params/product_create_params.rb +243 -0
  468. data/lib/stripe/params/product_delete_params.rb +6 -0
  469. data/lib/stripe/params/product_feature_create_params.rb +16 -0
  470. data/lib/stripe/params/product_feature_delete_params.rb +6 -0
  471. data/lib/stripe/params/product_feature_list_params.rb +22 -0
  472. data/lib/stripe/params/product_feature_retrieve_params.rb +13 -0
  473. data/lib/stripe/params/product_list_params.rb +68 -0
  474. data/lib/stripe/params/product_retrieve_params.rb +13 -0
  475. data/lib/stripe/params/product_search_params.rb +22 -0
  476. data/lib/stripe/params/product_update_params.rb +96 -0
  477. data/lib/stripe/params/promotion_code_create_params.rb +95 -0
  478. data/lib/stripe/params/promotion_code_list_params.rb +68 -0
  479. data/lib/stripe/params/promotion_code_retrieve_params.rb +13 -0
  480. data/lib/stripe/params/promotion_code_update_params.rb +38 -0
  481. data/lib/stripe/params/quote_accept_params.rb +13 -0
  482. data/lib/stripe/params/quote_cancel_params.rb +13 -0
  483. data/lib/stripe/params/quote_computed_upfront_line_items_list_params.rb +22 -0
  484. data/lib/stripe/params/quote_create_params.rb +1103 -0
  485. data/lib/stripe/params/quote_finalize_quote_params.rb +16 -0
  486. data/lib/stripe/params/quote_line_item_list_params.rb +22 -0
  487. data/lib/stripe/params/quote_line_list_params.rb +22 -0
  488. data/lib/stripe/params/quote_list_computed_upfront_line_items_params.rb +22 -0
  489. data/lib/stripe/params/quote_list_line_items_params.rb +22 -0
  490. data/lib/stripe/params/quote_list_lines_params.rb +22 -0
  491. data/lib/stripe/params/quote_list_params.rb +47 -0
  492. data/lib/stripe/params/quote_list_preview_invoice_lines_params.rb +22 -0
  493. data/lib/stripe/params/quote_mark_draft_params.rb +13 -0
  494. data/lib/stripe/params/quote_mark_stale_params.rb +16 -0
  495. data/lib/stripe/params/quote_pdf_params.rb +13 -0
  496. data/lib/stripe/params/quote_preview_invoice_list_params.rb +22 -0
  497. data/lib/stripe/params/quote_preview_subscription_schedule_list_params.rb +22 -0
  498. data/lib/stripe/params/quote_reestimate_params.rb +13 -0
  499. data/lib/stripe/params/quote_retrieve_params.rb +13 -0
  500. data/lib/stripe/params/quote_update_params.rb +1072 -0
  501. data/lib/stripe/params/radar/early_fraud_warning_list_params.rb +58 -0
  502. data/lib/stripe/params/radar/early_fraud_warning_retrieve_params.rb +15 -0
  503. data/lib/stripe/params/radar/value_list_create_params.rb +27 -0
  504. data/lib/stripe/{resources/usage_record_summary.rb → params/radar/value_list_delete_params.rb} +2 -2
  505. data/lib/stripe/params/radar/value_list_item_create_params.rb +21 -0
  506. data/lib/stripe/params/radar/value_list_item_delete_params.rb +8 -0
  507. data/lib/stripe/params/radar/value_list_item_list_params.rb +58 -0
  508. data/lib/stripe/params/radar/value_list_item_retrieve_params.rb +15 -0
  509. data/lib/stripe/params/radar/value_list_list_params.rb +58 -0
  510. data/lib/stripe/params/radar/value_list_retrieve_params.rb +15 -0
  511. data/lib/stripe/params/radar/value_list_update_params.rb +24 -0
  512. data/lib/stripe/params/refund_cancel_params.rb +13 -0
  513. data/lib/stripe/params/refund_create_params.rb +59 -0
  514. data/lib/stripe/params/refund_expire_params.rb +13 -0
  515. data/lib/stripe/params/refund_list_params.rb +56 -0
  516. data/lib/stripe/params/refund_retrieve_params.rb +13 -0
  517. data/lib/stripe/params/refund_update_params.rb +16 -0
  518. data/lib/stripe/params/reporting/report_run_create_params.rb +59 -0
  519. data/lib/stripe/params/reporting/report_run_list_params.rb +44 -0
  520. data/lib/stripe/params/reporting/report_run_retrieve_params.rb +15 -0
  521. data/lib/stripe/params/reporting/report_type_list_params.rb +15 -0
  522. data/lib/stripe/params/reporting/report_type_retrieve_params.rb +15 -0
  523. data/lib/stripe/params/reserve/hold_list_params.rb +53 -0
  524. data/lib/stripe/params/reserve/hold_retrieve_params.rb +15 -0
  525. data/lib/stripe/params/reserve/plan_retrieve_params.rb +15 -0
  526. data/lib/stripe/params/reserve/release_list_params.rb +41 -0
  527. data/lib/stripe/params/reserve/release_retrieve_params.rb +15 -0
  528. data/lib/stripe/params/review_approve_params.rb +13 -0
  529. data/lib/stripe/params/review_list_params.rb +42 -0
  530. data/lib/stripe/params/review_retrieve_params.rb +13 -0
  531. data/lib/stripe/params/setup_attempt_list_params.rb +55 -0
  532. data/lib/stripe/params/setup_intent_cancel_params.rb +16 -0
  533. data/lib/stripe/params/setup_intent_confirm_params.rb +1272 -0
  534. data/lib/stripe/params/setup_intent_create_params.rb +1362 -0
  535. data/lib/stripe/params/setup_intent_list_params.rb +66 -0
  536. data/lib/stripe/params/setup_intent_retrieve_params.rb +16 -0
  537. data/lib/stripe/params/setup_intent_update_params.rb +1257 -0
  538. data/lib/stripe/params/setup_intent_verify_microdeposits_params.rb +19 -0
  539. data/lib/stripe/params/shipping_rate_create_params.rb +103 -0
  540. data/lib/stripe/params/shipping_rate_list_params.rb +56 -0
  541. data/lib/stripe/params/shipping_rate_retrieve_params.rb +13 -0
  542. data/lib/stripe/params/shipping_rate_update_params.rb +44 -0
  543. data/lib/stripe/params/sigma/scheduled_query_run_list_params.rb +24 -0
  544. data/lib/stripe/params/sigma/scheduled_query_run_retrieve_params.rb +15 -0
  545. data/lib/stripe/params/source_create_params.rb +317 -0
  546. data/lib/stripe/params/source_detach_params.rb +13 -0
  547. data/lib/stripe/params/source_retrieve_params.rb +16 -0
  548. data/lib/stripe/params/source_transaction_list_params.rb +22 -0
  549. data/lib/stripe/params/source_update_params.rb +259 -0
  550. data/lib/stripe/params/source_verify_params.rb +16 -0
  551. data/lib/stripe/params/subscription_attach_cadence_params.rb +16 -0
  552. data/lib/stripe/params/subscription_cancel_params.rb +33 -0
  553. data/lib/stripe/params/subscription_create_params.rb +982 -0
  554. data/lib/stripe/params/subscription_delete_discount_params.rb +6 -0
  555. data/lib/stripe/params/subscription_item_create_params.rb +178 -0
  556. data/lib/stripe/params/subscription_item_delete_params.rb +19 -0
  557. data/lib/stripe/params/subscription_item_list_params.rb +31 -0
  558. data/lib/stripe/params/subscription_item_retrieve_params.rb +13 -0
  559. data/lib/stripe/params/subscription_item_update_params.rb +162 -0
  560. data/lib/stripe/params/subscription_list_params.rb +133 -0
  561. data/lib/stripe/params/subscription_migrate_params.rb +35 -0
  562. data/lib/stripe/params/subscription_resume_params.rb +27 -0
  563. data/lib/stripe/params/subscription_retrieve_params.rb +13 -0
  564. data/lib/stripe/params/subscription_schedule_amend_params.rb +570 -0
  565. data/lib/stripe/params/subscription_schedule_cancel_params.rb +19 -0
  566. data/lib/stripe/params/subscription_schedule_create_params.rb +752 -0
  567. data/lib/stripe/params/subscription_schedule_list_params.rb +126 -0
  568. data/lib/stripe/params/subscription_schedule_release_params.rb +16 -0
  569. data/lib/stripe/params/subscription_schedule_retrieve_params.rb +13 -0
  570. data/lib/stripe/params/subscription_schedule_update_params.rb +720 -0
  571. data/lib/stripe/params/subscription_search_params.rb +22 -0
  572. data/lib/stripe/params/subscription_update_params.rb +941 -0
  573. data/lib/stripe/params/tax/association_find_params.rb +18 -0
  574. data/lib/stripe/params/tax/calculation_create_params.rb +206 -0
  575. data/lib/stripe/params/tax/calculation_line_item_list_params.rb +24 -0
  576. data/lib/stripe/params/tax/calculation_list_line_items_params.rb +24 -0
  577. data/lib/stripe/params/tax/calculation_retrieve_params.rb +15 -0
  578. data/lib/stripe/params/tax/form_list_params.rb +51 -0
  579. data/lib/stripe/params/tax/form_pdf_params.rb +15 -0
  580. data/lib/stripe/params/tax/form_retrieve_params.rb +15 -0
  581. data/lib/stripe/params/tax/registration_create_params.rb +2031 -0
  582. data/lib/stripe/params/tax/registration_list_params.rb +27 -0
  583. data/lib/stripe/params/tax/registration_retrieve_params.rb +15 -0
  584. data/lib/stripe/params/tax/registration_update_params.rb +21 -0
  585. data/lib/stripe/params/tax/settings_retrieve_params.rb +15 -0
  586. data/lib/stripe/params/tax/settings_update_params.rb +71 -0
  587. data/lib/stripe/params/tax/transaction_create_from_calculation_params.rb +27 -0
  588. data/lib/stripe/params/tax/transaction_create_reversal_params.rb +87 -0
  589. data/lib/stripe/params/tax/transaction_line_item_list_params.rb +24 -0
  590. data/lib/stripe/params/tax/transaction_list_line_items_params.rb +24 -0
  591. data/lib/stripe/params/tax/transaction_retrieve_params.rb +15 -0
  592. data/lib/stripe/params/tax_code_list_params.rb +22 -0
  593. data/lib/stripe/params/tax_code_retrieve_params.rb +13 -0
  594. data/lib/stripe/params/tax_id_create_params.rb +39 -0
  595. data/lib/stripe/params/tax_id_delete_params.rb +6 -0
  596. data/lib/stripe/params/tax_id_list_params.rb +42 -0
  597. data/lib/stripe/params/tax_id_retrieve_params.rb +13 -0
  598. data/lib/stripe/params/tax_rate_create_params.rb +55 -0
  599. data/lib/stripe/params/tax_rate_list_params.rb +56 -0
  600. data/lib/stripe/params/tax_rate_retrieve_params.rb +13 -0
  601. data/lib/stripe/params/tax_rate_update_params.rb +47 -0
  602. data/lib/stripe/params/terminal/configuration_create_params.rb +625 -0
  603. data/lib/stripe/params/terminal/configuration_delete_params.rb +8 -0
  604. data/lib/stripe/params/terminal/configuration_list_params.rb +33 -0
  605. data/lib/stripe/params/terminal/configuration_retrieve_params.rb +15 -0
  606. data/lib/stripe/params/terminal/configuration_update_params.rb +625 -0
  607. data/lib/stripe/params/terminal/connection_token_create_params.rb +18 -0
  608. data/lib/stripe/params/terminal/location_create_params.rb +153 -0
  609. data/lib/stripe/params/terminal/location_delete_params.rb +8 -0
  610. data/lib/stripe/params/terminal/location_list_params.rb +24 -0
  611. data/lib/stripe/params/terminal/location_retrieve_params.rb +15 -0
  612. data/lib/stripe/params/terminal/location_update_params.rb +153 -0
  613. data/lib/stripe/params/terminal/onboarding_link_create_params.rb +43 -0
  614. data/lib/stripe/params/terminal/reader_cancel_action_params.rb +15 -0
  615. data/lib/stripe/params/terminal/reader_collect_inputs_params.rb +96 -0
  616. data/lib/stripe/params/terminal/reader_collect_payment_method_params.rb +51 -0
  617. data/lib/stripe/params/terminal/reader_collected_data_retrieve_params.rb +15 -0
  618. data/lib/stripe/params/terminal/reader_confirm_payment_intent_params.rb +29 -0
  619. data/lib/stripe/params/terminal/reader_create_params.rb +27 -0
  620. data/lib/stripe/params/terminal/reader_delete_params.rb +8 -0
  621. data/lib/stripe/params/terminal/reader_list_params.rb +45 -0
  622. data/lib/stripe/params/terminal/reader_present_payment_method_params.rb +72 -0
  623. data/lib/stripe/params/terminal/reader_process_payment_intent_params.rb +55 -0
  624. data/lib/stripe/params/terminal/reader_process_setup_intent_params.rb +32 -0
  625. data/lib/stripe/params/terminal/reader_refund_payment_params.rb +53 -0
  626. data/lib/stripe/params/terminal/reader_retrieve_params.rb +15 -0
  627. data/lib/stripe/params/terminal/reader_set_reader_display_params.rb +52 -0
  628. data/lib/stripe/params/terminal/reader_succeed_input_collection_params.rb +18 -0
  629. data/lib/stripe/params/terminal/reader_timeout_input_collection_params.rb +15 -0
  630. data/lib/stripe/params/terminal/reader_update_params.rb +21 -0
  631. data/lib/stripe/params/test_helpers/confirmation_token_create_params.rb +749 -0
  632. data/lib/stripe/params/test_helpers/customer_fund_cash_balance_params.rb +24 -0
  633. data/lib/stripe/params/test_helpers/issuing/authorization_capture_params.rb +267 -0
  634. data/lib/stripe/params/test_helpers/issuing/authorization_create_params.rb +374 -0
  635. data/lib/stripe/params/test_helpers/issuing/authorization_expire_params.rb +17 -0
  636. data/lib/stripe/params/test_helpers/issuing/authorization_finalize_amount_params.rb +145 -0
  637. data/lib/stripe/params/test_helpers/issuing/authorization_increment_params.rb +23 -0
  638. data/lib/stripe/params/test_helpers/issuing/authorization_respond_params.rb +20 -0
  639. data/lib/stripe/params/test_helpers/issuing/authorization_reverse_params.rb +20 -0
  640. data/lib/stripe/params/test_helpers/issuing/card_deliver_card_params.rb +17 -0
  641. data/lib/stripe/params/test_helpers/issuing/card_fail_card_params.rb +17 -0
  642. data/lib/stripe/params/test_helpers/issuing/card_return_card_params.rb +17 -0
  643. data/lib/stripe/params/test_helpers/issuing/card_ship_card_params.rb +17 -0
  644. data/lib/stripe/params/test_helpers/issuing/card_submit_card_params.rb +17 -0
  645. data/lib/stripe/params/test_helpers/issuing/personalization_design_activate_params.rb +17 -0
  646. data/lib/stripe/params/test_helpers/issuing/personalization_design_deactivate_params.rb +17 -0
  647. data/lib/stripe/params/test_helpers/issuing/personalization_design_reject_params.rb +31 -0
  648. data/lib/stripe/params/test_helpers/issuing/transaction_create_force_capture_params.rb +318 -0
  649. data/lib/stripe/params/test_helpers/issuing/transaction_create_unlinked_refund_params.rb +318 -0
  650. data/lib/stripe/params/test_helpers/issuing/transaction_refund_params.rb +20 -0
  651. data/lib/stripe/params/test_helpers/refund_expire_params.rb +15 -0
  652. data/lib/stripe/params/test_helpers/terminal/reader_present_payment_method_params.rb +74 -0
  653. data/lib/stripe/params/test_helpers/terminal/reader_succeed_input_collection_params.rb +20 -0
  654. data/lib/stripe/params/test_helpers/terminal/reader_timeout_input_collection_params.rb +17 -0
  655. data/lib/stripe/params/test_helpers/test_clock_advance_params.rb +18 -0
  656. data/lib/stripe/params/test_helpers/test_clock_create_params.rb +21 -0
  657. data/lib/stripe/params/test_helpers/test_clock_delete_params.rb +8 -0
  658. data/lib/stripe/params/test_helpers/test_clock_list_params.rb +24 -0
  659. data/lib/stripe/params/test_helpers/test_clock_retrieve_params.rb +15 -0
  660. data/lib/stripe/params/test_helpers/treasury/inbound_transfer_fail_params.rb +28 -0
  661. data/lib/stripe/params/test_helpers/treasury/inbound_transfer_return_inbound_transfer_params.rb +17 -0
  662. data/lib/stripe/params/test_helpers/treasury/inbound_transfer_succeed_params.rb +17 -0
  663. data/lib/stripe/params/test_helpers/treasury/outbound_payment_fail_params.rb +17 -0
  664. data/lib/stripe/params/test_helpers/treasury/outbound_payment_post_params.rb +17 -0
  665. data/lib/stripe/params/test_helpers/treasury/outbound_payment_return_outbound_payment_params.rb +28 -0
  666. data/lib/stripe/params/test_helpers/treasury/outbound_payment_update_params.rb +57 -0
  667. data/lib/stripe/params/test_helpers/treasury/outbound_transfer_fail_params.rb +17 -0
  668. data/lib/stripe/params/test_helpers/treasury/outbound_transfer_post_params.rb +17 -0
  669. data/lib/stripe/params/test_helpers/treasury/outbound_transfer_return_outbound_transfer_params.rb +28 -0
  670. data/lib/stripe/params/test_helpers/treasury/outbound_transfer_update_params.rb +57 -0
  671. data/lib/stripe/params/test_helpers/treasury/received_credit_create_params.rb +92 -0
  672. data/lib/stripe/params/test_helpers/treasury/received_debit_create_params.rb +92 -0
  673. data/lib/stripe/params/token_create_params.rb +1210 -0
  674. data/lib/stripe/params/token_retrieve_params.rb +13 -0
  675. data/lib/stripe/params/topup_cancel_params.rb +13 -0
  676. data/lib/stripe/params/topup_create_params.rb +43 -0
  677. data/lib/stripe/params/topup_list_params.rb +74 -0
  678. data/lib/stripe/params/topup_retrieve_params.rb +13 -0
  679. data/lib/stripe/params/topup_update_params.rb +19 -0
  680. data/lib/stripe/params/transfer_create_params.rb +51 -0
  681. data/lib/stripe/params/transfer_list_params.rb +56 -0
  682. data/lib/stripe/params/transfer_retrieve_params.rb +13 -0
  683. data/lib/stripe/params/transfer_reversal_create_params.rb +31 -0
  684. data/lib/stripe/params/transfer_reversal_list_params.rb +22 -0
  685. data/lib/stripe/params/transfer_reversal_retrieve_params.rb +13 -0
  686. data/lib/stripe/params/transfer_reversal_update_params.rb +16 -0
  687. data/lib/stripe/params/transfer_update_params.rb +19 -0
  688. data/lib/stripe/params/treasury/credit_reversal_create_params.rb +21 -0
  689. data/lib/stripe/params/treasury/credit_reversal_list_params.rb +41 -0
  690. data/lib/stripe/params/treasury/credit_reversal_retrieve_params.rb +15 -0
  691. data/lib/stripe/params/treasury/debit_reversal_create_params.rb +21 -0
  692. data/lib/stripe/params/treasury/debit_reversal_list_params.rb +45 -0
  693. data/lib/stripe/params/treasury/debit_reversal_retrieve_params.rb +15 -0
  694. data/lib/stripe/params/treasury/financial_account_close_params.rb +32 -0
  695. data/lib/stripe/params/treasury/financial_account_create_params.rb +208 -0
  696. data/lib/stripe/params/treasury/financial_account_features_retrieve_params.rb +15 -0
  697. data/lib/stripe/params/treasury/financial_account_features_update_params.rb +166 -0
  698. data/lib/stripe/params/treasury/financial_account_list_params.rb +54 -0
  699. data/lib/stripe/params/treasury/financial_account_retrieve_features_params.rb +15 -0
  700. data/lib/stripe/params/treasury/financial_account_retrieve_params.rb +15 -0
  701. data/lib/stripe/params/treasury/financial_account_update_features_params.rb +166 -0
  702. data/lib/stripe/params/treasury/financial_account_update_params.rb +223 -0
  703. data/lib/stripe/params/treasury/inbound_transfer_cancel_params.rb +15 -0
  704. data/lib/stripe/params/treasury/inbound_transfer_create_params.rb +45 -0
  705. data/lib/stripe/params/treasury/inbound_transfer_fail_params.rb +26 -0
  706. data/lib/stripe/params/treasury/inbound_transfer_list_params.rb +37 -0
  707. data/lib/stripe/params/treasury/inbound_transfer_retrieve_params.rb +15 -0
  708. data/lib/stripe/params/treasury/inbound_transfer_return_inbound_transfer_params.rb +15 -0
  709. data/lib/stripe/params/treasury/inbound_transfer_succeed_params.rb +15 -0
  710. data/lib/stripe/params/treasury/outbound_payment_cancel_params.rb +15 -0
  711. data/lib/stripe/params/treasury/outbound_payment_create_params.rb +190 -0
  712. data/lib/stripe/params/treasury/outbound_payment_fail_params.rb +15 -0
  713. data/lib/stripe/params/treasury/outbound_payment_list_params.rb +62 -0
  714. data/lib/stripe/params/treasury/outbound_payment_post_params.rb +15 -0
  715. data/lib/stripe/params/treasury/outbound_payment_retrieve_params.rb +15 -0
  716. data/lib/stripe/params/treasury/outbound_payment_return_outbound_payment_params.rb +26 -0
  717. data/lib/stripe/params/treasury/outbound_payment_update_params.rb +55 -0
  718. data/lib/stripe/params/treasury/outbound_transfer_cancel_params.rb +15 -0
  719. data/lib/stripe/params/treasury/outbound_transfer_create_params.rb +105 -0
  720. data/lib/stripe/params/treasury/outbound_transfer_fail_params.rb +15 -0
  721. data/lib/stripe/params/treasury/outbound_transfer_list_params.rb +37 -0
  722. data/lib/stripe/params/treasury/outbound_transfer_post_params.rb +15 -0
  723. data/lib/stripe/params/treasury/outbound_transfer_retrieve_params.rb +15 -0
  724. data/lib/stripe/params/treasury/outbound_transfer_return_outbound_transfer_params.rb +26 -0
  725. data/lib/stripe/params/treasury/outbound_transfer_update_params.rb +55 -0
  726. data/lib/stripe/params/treasury/received_credit_create_params.rb +90 -0
  727. data/lib/stripe/params/treasury/received_credit_list_params.rb +49 -0
  728. data/lib/stripe/params/treasury/received_credit_retrieve_params.rb +15 -0
  729. data/lib/stripe/params/treasury/received_debit_create_params.rb +90 -0
  730. data/lib/stripe/params/treasury/received_debit_list_params.rb +37 -0
  731. data/lib/stripe/params/treasury/received_debit_retrieve_params.rb +15 -0
  732. data/lib/stripe/params/treasury/transaction_entry_list_params.rb +84 -0
  733. data/lib/stripe/params/treasury/transaction_entry_retrieve_params.rb +15 -0
  734. data/lib/stripe/params/treasury/transaction_list_params.rb +92 -0
  735. data/lib/stripe/params/treasury/transaction_retrieve_params.rb +15 -0
  736. data/lib/stripe/params/v2/billing/bill_setting_create_params.rb +74 -0
  737. data/lib/stripe/params/v2/billing/bill_setting_list_params.rb +21 -0
  738. data/lib/stripe/params/v2/billing/bill_setting_retrieve_params.rb +10 -0
  739. data/lib/stripe/params/v2/billing/bill_setting_update_params.rb +80 -0
  740. data/lib/stripe/params/v2/billing/bill_settings/version_list_params.rb +19 -0
  741. data/lib/stripe/params/v2/billing/bill_settings/version_retrieve_params.rb +12 -0
  742. data/lib/stripe/{resources/issuing/card_details.rb → params/v2/billing/cadence_cancel_params.rb} +3 -3
  743. data/lib/stripe/params/v2/billing/cadence_create_params.rb +253 -0
  744. data/lib/stripe/params/v2/billing/cadence_list_params.rb +43 -0
  745. data/lib/stripe/params/v2/billing/cadence_retrieve_params.rb +17 -0
  746. data/lib/stripe/params/v2/billing/cadence_update_params.rb +75 -0
  747. data/lib/stripe/params/v2/billing/collection_setting_create_params.rb +223 -0
  748. data/lib/stripe/params/v2/billing/collection_setting_list_params.rb +21 -0
  749. data/lib/stripe/params/v2/billing/collection_setting_retrieve_params.rb +10 -0
  750. data/lib/stripe/params/v2/billing/collection_setting_update_params.rb +229 -0
  751. data/lib/stripe/params/v2/billing/collection_settings/version_list_params.rb +19 -0
  752. data/lib/stripe/params/v2/billing/collection_settings/version_retrieve_params.rb +12 -0
  753. data/lib/stripe/params/v2/billing/meter_event_adjustment_create_params.rb +31 -0
  754. data/lib/stripe/params/v2/billing/meter_event_create_params.rb +33 -0
  755. data/lib/stripe/params/v2/billing/meter_event_session_create_params.rb +10 -0
  756. data/lib/stripe/params/v2/billing/meter_event_stream_create_params.rb +41 -0
  757. data/lib/stripe/params/v2/billing/profile_create_params.rb +37 -0
  758. data/lib/stripe/params/v2/billing/profile_list_params.rb +40 -0
  759. data/lib/stripe/params/v2/billing/profile_retrieve_params.rb +10 -0
  760. data/lib/stripe/params/v2/billing/profile_update_params.rb +35 -0
  761. data/lib/stripe/params/v2/core/account_close_params.rb +17 -0
  762. data/lib/stripe/params/v2/core/account_create_params.rb +2363 -0
  763. data/lib/stripe/params/v2/core/account_link_create_params.rb +101 -0
  764. data/lib/stripe/params/v2/core/account_list_params.rb +23 -0
  765. data/lib/stripe/params/v2/core/account_retrieve_params.rb +17 -0
  766. data/lib/stripe/params/v2/core/account_token_create_params.rb +1023 -0
  767. data/lib/stripe/params/v2/core/account_token_retrieve_params.rb +10 -0
  768. data/lib/stripe/params/v2/core/account_update_params.rb +2409 -0
  769. data/lib/stripe/params/v2/core/accounts/person_create_params.rb +497 -0
  770. data/lib/stripe/params/v2/core/accounts/person_delete_params.rb +12 -0
  771. data/lib/stripe/params/v2/core/accounts/person_list_params.rb +19 -0
  772. data/lib/stripe/params/v2/core/accounts/person_retrieve_params.rb +12 -0
  773. data/lib/stripe/params/v2/core/accounts/person_token_create_params.rb +487 -0
  774. data/lib/stripe/params/v2/core/accounts/person_token_retrieve_params.rb +12 -0
  775. data/lib/stripe/params/v2/core/accounts/person_update_params.rb +497 -0
  776. data/lib/stripe/params/v2/core/event_destination_create_params.rb +79 -0
  777. data/lib/stripe/params/v2/core/event_destination_delete_params.rb +10 -0
  778. data/lib/stripe/params/v2/core/event_destination_disable_params.rb +10 -0
  779. data/lib/stripe/params/v2/core/event_destination_enable_params.rb +10 -0
  780. data/lib/stripe/params/v2/core/event_destination_list_params.rb +20 -0
  781. data/lib/stripe/params/v2/core/event_destination_ping_params.rb +10 -0
  782. data/lib/stripe/params/v2/core/event_destination_retrieve_params.rb +17 -0
  783. data/lib/stripe/params/v2/core/event_destination_update_params.rb +47 -0
  784. data/lib/stripe/params/v2/core/event_list_params.rb +45 -0
  785. data/lib/stripe/params/v2/core/event_retrieve_params.rb +10 -0
  786. data/lib/stripe/params/v2/core/vault/gb_bank_account_acknowledge_confirmation_of_payee_params.rb +12 -0
  787. data/lib/stripe/params/v2/core/vault/gb_bank_account_archive_params.rb +12 -0
  788. data/lib/stripe/params/v2/core/vault/gb_bank_account_create_params.rb +50 -0
  789. data/lib/stripe/params/v2/core/vault/gb_bank_account_initiate_confirmation_of_payee_params.rb +22 -0
  790. data/lib/stripe/params/v2/core/vault/gb_bank_account_list_params.rb +19 -0
  791. data/lib/stripe/params/v2/core/vault/gb_bank_account_retrieve_params.rb +12 -0
  792. data/lib/stripe/params/v2/core/vault/us_bank_account_archive_params.rb +12 -0
  793. data/lib/stripe/params/v2/core/vault/us_bank_account_confirm_microdeposits_params.rb +22 -0
  794. data/lib/stripe/params/v2/core/vault/us_bank_account_create_params.rb +33 -0
  795. data/lib/stripe/params/v2/core/vault/us_bank_account_list_params.rb +22 -0
  796. data/lib/stripe/params/v2/core/vault/us_bank_account_retrieve_params.rb +12 -0
  797. data/lib/stripe/params/v2/core/vault/us_bank_account_send_microdeposits_params.rb +12 -0
  798. data/lib/stripe/params/v2/core/vault/us_bank_account_update_params.rb +22 -0
  799. data/lib/stripe/params/v2/money_management/adjustment_list_params.rb +48 -0
  800. data/lib/stripe/params/v2/money_management/adjustment_retrieve_params.rb +10 -0
  801. data/lib/stripe/params/v2/money_management/financial_account_close_params.rb +28 -0
  802. data/lib/stripe/params/v2/money_management/financial_account_create_params.rb +34 -0
  803. data/lib/stripe/params/v2/money_management/financial_account_list_params.rb +20 -0
  804. data/lib/stripe/params/v2/money_management/financial_account_retrieve_params.rb +10 -0
  805. data/lib/stripe/params/v2/money_management/financial_account_update_params.rb +20 -0
  806. data/lib/stripe/params/v2/money_management/financial_address_create_params.rb +20 -0
  807. data/lib/stripe/params/v2/money_management/financial_address_list_params.rb +23 -0
  808. data/lib/stripe/params/v2/money_management/financial_address_retrieve_params.rb +17 -0
  809. data/lib/stripe/params/v2/money_management/inbound_transfer_create_params.rb +62 -0
  810. data/lib/stripe/params/v2/money_management/inbound_transfer_list_params.rb +44 -0
  811. data/lib/stripe/params/v2/money_management/inbound_transfer_retrieve_params.rb +10 -0
  812. data/lib/stripe/params/v2/money_management/outbound_payment_cancel_params.rb +10 -0
  813. data/lib/stripe/params/v2/money_management/outbound_payment_create_params.rb +110 -0
  814. data/lib/stripe/params/v2/money_management/outbound_payment_list_params.rb +52 -0
  815. data/lib/stripe/params/v2/money_management/outbound_payment_quote_create_params.rb +79 -0
  816. data/lib/stripe/params/v2/money_management/outbound_payment_quote_retrieve_params.rb +10 -0
  817. data/lib/stripe/params/v2/money_management/outbound_payment_retrieve_params.rb +10 -0
  818. data/lib/stripe/params/v2/money_management/outbound_setup_intent_cancel_params.rb +10 -0
  819. data/lib/stripe/params/v2/money_management/outbound_setup_intent_create_params.rb +85 -0
  820. data/lib/stripe/params/v2/money_management/outbound_setup_intent_list_params.rb +17 -0
  821. data/lib/stripe/params/v2/money_management/outbound_setup_intent_retrieve_params.rb +10 -0
  822. data/lib/stripe/params/v2/money_management/outbound_setup_intent_update_params.rb +80 -0
  823. data/lib/stripe/params/v2/money_management/outbound_transfer_cancel_params.rb +10 -0
  824. data/lib/stripe/params/v2/money_management/outbound_transfer_create_params.rb +89 -0
  825. data/lib/stripe/params/v2/money_management/outbound_transfer_list_params.rb +48 -0
  826. data/lib/stripe/params/v2/money_management/outbound_transfer_retrieve_params.rb +10 -0
  827. data/lib/stripe/params/v2/money_management/payout_method_archive_params.rb +10 -0
  828. data/lib/stripe/params/v2/money_management/payout_method_list_params.rb +31 -0
  829. data/lib/stripe/params/v2/money_management/payout_method_retrieve_params.rb +10 -0
  830. data/lib/stripe/params/v2/money_management/payout_method_unarchive_params.rb +10 -0
  831. data/lib/stripe/params/v2/money_management/payout_methods_bank_account_spec_retrieve_params.rb +17 -0
  832. data/lib/stripe/params/v2/money_management/received_credit_list_params.rb +44 -0
  833. data/lib/stripe/params/v2/money_management/received_credit_retrieve_params.rb +10 -0
  834. data/lib/stripe/params/v2/money_management/received_debit_list_params.rb +17 -0
  835. data/lib/stripe/params/v2/money_management/received_debit_retrieve_params.rb +10 -0
  836. data/lib/stripe/params/v2/money_management/transaction_entry_list_params.rb +43 -0
  837. data/lib/stripe/params/v2/money_management/transaction_entry_retrieve_params.rb +10 -0
  838. data/lib/stripe/params/v2/money_management/transaction_list_params.rb +47 -0
  839. data/lib/stripe/params/v2/money_management/transaction_retrieve_params.rb +10 -0
  840. data/lib/stripe/params/v2/test_helpers/financial_address_credit_params.rb +34 -0
  841. data/lib/stripe/params/v2/test_helpers/financial_address_generate_microdeposits_params.rb +10 -0
  842. data/lib/stripe/params/webhook_endpoint_create_params.rb +39 -0
  843. data/lib/stripe/params/webhook_endpoint_delete_params.rb +6 -0
  844. data/lib/stripe/params/webhook_endpoint_list_params.rb +22 -0
  845. data/lib/stripe/params/webhook_endpoint_retrieve_params.rb +13 -0
  846. data/lib/stripe/params/webhook_endpoint_update_params.rb +35 -0
  847. data/lib/stripe/params.rb +767 -0
  848. data/lib/stripe/request_options.rb +138 -0
  849. data/lib/stripe/request_params.rb +24 -0
  850. data/lib/stripe/resources/account.rb +1320 -26
  851. data/lib/stripe/resources/account_link.rb +29 -0
  852. data/lib/stripe/resources/account_notice.rb +94 -0
  853. data/lib/stripe/resources/account_session.rb +764 -0
  854. data/lib/stripe/resources/alipay_account.rb +1 -1
  855. data/lib/stripe/resources/apple_pay_domain.rb +59 -0
  856. data/lib/stripe/resources/application.rb +28 -0
  857. data/lib/stripe/resources/application_fee.rb +64 -2
  858. data/lib/stripe/resources/application_fee_refund.rb +34 -2
  859. data/lib/stripe/resources/apps/secret.rb +96 -0
  860. data/lib/stripe/resources/balance.rb +332 -0
  861. data/lib/stripe/resources/balance_settings.rb +92 -0
  862. data/lib/stripe/resources/balance_transaction.rb +80 -0
  863. data/lib/stripe/resources/bank_account.rb +177 -6
  864. data/lib/stripe/resources/billing/alert.rb +142 -0
  865. data/lib/stripe/resources/billing/alert_triggered.rb +34 -0
  866. data/lib/stripe/resources/billing/analytics/meter_usage.rb +33 -0
  867. data/lib/stripe/resources/billing/analytics/meter_usage_row.rb +38 -0
  868. data/lib/stripe/resources/billing/credit_balance_summary.rb +104 -0
  869. data/lib/stripe/resources/billing/credit_balance_transaction.rb +177 -0
  870. data/lib/stripe/resources/billing/credit_grant.rb +200 -0
  871. data/lib/stripe/resources/billing/meter.rb +178 -0
  872. data/lib/stripe/resources/billing/meter_event.rb +49 -0
  873. data/lib/stripe/resources/billing/meter_event_adjustment.rb +59 -0
  874. data/lib/stripe/resources/billing/meter_event_summary.rb +40 -0
  875. data/lib/stripe/resources/billing_portal/configuration.rb +292 -0
  876. data/lib/stripe/resources/billing_portal/session.rb +228 -0
  877. data/lib/stripe/resources/capability.rb +147 -2
  878. data/lib/stripe/resources/capital/financing_offer.rb +142 -0
  879. data/lib/stripe/resources/capital/financing_summary.rb +82 -0
  880. data/lib/stripe/resources/capital/financing_transaction.rb +99 -0
  881. data/lib/stripe/resources/card.rb +129 -3
  882. data/lib/stripe/resources/cash_balance.rb +39 -0
  883. data/lib/stripe/resources/charge.rb +2516 -3
  884. data/lib/stripe/resources/checkout/session.rb +2454 -4
  885. data/lib/stripe/resources/climate/order.rb +173 -0
  886. data/lib/stripe/resources/climate/product.rb +72 -0
  887. data/lib/stripe/resources/climate/supplier.rb +69 -0
  888. data/lib/stripe/resources/confirmation_token.rb +1873 -0
  889. data/lib/stripe/resources/connect_collection_transfer.rb +32 -0
  890. data/lib/stripe/resources/country_spec.rb +82 -0
  891. data/lib/stripe/resources/coupon.rb +143 -0
  892. data/lib/stripe/resources/credit_note.rb +290 -8
  893. data/lib/stripe/resources/credit_note_line_item.rb +133 -0
  894. data/lib/stripe/resources/customer.rb +403 -27
  895. data/lib/stripe/resources/customer_balance_transaction.rb +48 -1
  896. data/lib/stripe/resources/customer_cash_balance_transaction.rb +234 -0
  897. data/lib/stripe/resources/customer_session.rb +264 -0
  898. data/lib/stripe/resources/discount.rb +58 -0
  899. data/lib/stripe/resources/dispute.rb +466 -2
  900. data/lib/stripe/resources/entitlements/active_entitlement.rb +45 -0
  901. data/lib/stripe/resources/entitlements/active_entitlement_summary.rb +31 -0
  902. data/lib/stripe/resources/entitlements/feature.rb +72 -0
  903. data/lib/stripe/resources/ephemeral_key.rb +44 -0
  904. data/lib/stripe/resources/event.rb +149 -0
  905. data/lib/stripe/resources/exchange_rate.rb +59 -0
  906. data/lib/stripe/resources/file.rb +65 -12
  907. data/lib/stripe/resources/file_link.rb +53 -0
  908. data/lib/stripe/resources/financial_connections/account.rb +342 -5
  909. data/lib/stripe/resources/financial_connections/account_inferred_balance.rb +35 -0
  910. data/lib/stripe/resources/financial_connections/account_owner.rb +29 -0
  911. data/lib/stripe/resources/financial_connections/account_ownership.rb +21 -0
  912. data/lib/stripe/resources/financial_connections/institution.rb +127 -0
  913. data/lib/stripe/resources/financial_connections/session.rb +140 -0
  914. data/lib/stripe/resources/financial_connections/transaction.rb +73 -0
  915. data/lib/stripe/resources/forwarding/request.rb +163 -0
  916. data/lib/stripe/resources/funding_instructions.rb +510 -1
  917. data/lib/stripe/resources/fx_quote.rb +147 -0
  918. data/lib/stripe/resources/identity/verification_report.rb +396 -0
  919. data/lib/stripe/resources/identity/verification_session.rb +397 -4
  920. data/lib/stripe/resources/invoice.rb +1393 -20
  921. data/lib/stripe/resources/invoice_item.rb +214 -0
  922. data/lib/stripe/resources/invoice_line_item.rb +341 -1
  923. data/lib/stripe/resources/invoice_payment.rb +92 -0
  924. data/lib/stripe/resources/invoice_rendering_template.rb +90 -0
  925. data/lib/stripe/resources/issuing/authorization.rb +650 -4
  926. data/lib/stripe/resources/issuing/card.rb +410 -4
  927. data/lib/stripe/resources/issuing/cardholder.rb +278 -0
  928. data/lib/stripe/resources/issuing/credit_underwriting_record.rb +263 -0
  929. data/lib/stripe/resources/issuing/dispute.rb +301 -2
  930. data/lib/stripe/resources/issuing/dispute_settlement_detail.rb +71 -0
  931. data/lib/stripe/resources/issuing/fraud_liability_debit.rb +51 -0
  932. data/lib/stripe/resources/issuing/personalization_design.rb +206 -0
  933. data/lib/stripe/resources/issuing/physical_bundle.rb +65 -0
  934. data/lib/stripe/resources/issuing/settlement.rb +61 -0
  935. data/lib/stripe/resources/issuing/token.rb +195 -0
  936. data/lib/stripe/resources/issuing/transaction.rb +444 -0
  937. data/lib/stripe/resources/line_item.rb +142 -0
  938. data/lib/stripe/resources/login_link.rb +20 -0
  939. data/lib/stripe/resources/mandate.rb +433 -0
  940. data/lib/stripe/resources/margin.rb +64 -0
  941. data/lib/stripe/resources/order.rb +960 -6
  942. data/lib/stripe/resources/payment_attempt_record.rb +2165 -0
  943. data/lib/stripe/resources/payment_intent.rb +3886 -14
  944. data/lib/stripe/resources/payment_intent_amount_details_line_item.rb +138 -0
  945. data/lib/stripe/resources/payment_link.rb +772 -2
  946. data/lib/stripe/resources/payment_method.rb +1792 -4
  947. data/lib/stripe/resources/payment_method_configuration.rb +2090 -0
  948. data/lib/stripe/resources/payment_method_domain.rb +280 -0
  949. data/lib/stripe/resources/payment_record.rb +2295 -0
  950. data/lib/stripe/resources/payout.rb +139 -4
  951. data/lib/stripe/resources/person.rb +475 -1
  952. data/lib/stripe/resources/plan.rb +137 -0
  953. data/lib/stripe/resources/price.rb +240 -1
  954. data/lib/stripe/resources/privacy/redaction_job.rb +187 -0
  955. data/lib/stripe/resources/privacy/redaction_job_validation_error.rb +49 -0
  956. data/lib/stripe/resources/product.rb +138 -1
  957. data/lib/stripe/resources/product_feature.rb +33 -0
  958. data/lib/stripe/resources/promotion_code.rb +110 -0
  959. data/lib/stripe/resources/quote.rb +1173 -36
  960. data/lib/stripe/resources/quote_line.rb +521 -0
  961. data/lib/stripe/resources/quote_preview_invoice.rb +1182 -0
  962. data/lib/stripe/resources/quote_preview_subscription_schedule.rb +732 -0
  963. data/lib/stripe/resources/radar/early_fraud_warning.rb +42 -0
  964. data/lib/stripe/resources/radar/value_list.rb +87 -0
  965. data/lib/stripe/resources/radar/value_list_item.rb +71 -0
  966. data/lib/stripe/resources/refund.rb +748 -4
  967. data/lib/stripe/resources/reporting/report_run.rb +91 -0
  968. data/lib/stripe/resources/reporting/report_type.rb +48 -1
  969. data/lib/stripe/resources/reserve/hold.rb +74 -0
  970. data/lib/stripe/resources/reserve/plan.rb +78 -0
  971. data/lib/stripe/resources/reserve/release.rb +77 -0
  972. data/lib/stripe/resources/reserve_transaction.rb +30 -0
  973. data/lib/stripe/resources/reversal.rb +46 -2
  974. data/lib/stripe/resources/review.rb +99 -2
  975. data/lib/stripe/resources/setup_attempt.rb +664 -0
  976. data/lib/stripe/resources/setup_intent.rb +816 -6
  977. data/lib/stripe/resources/shipping_rate.rb +132 -0
  978. data/lib/stripe/resources/sigma/scheduled_query_run.rb +60 -0
  979. data/lib/stripe/resources/source.rb +973 -10
  980. data/lib/stripe/resources/source_mandate_notification.rb +98 -0
  981. data/lib/stripe/resources/source_transaction.rb +146 -0
  982. data/lib/stripe/resources/subscription.rb +979 -5
  983. data/lib/stripe/resources/subscription_item.rb +132 -10
  984. data/lib/stripe/resources/subscription_schedule.rb +780 -4
  985. data/lib/stripe/resources/tax/association.rb +86 -0
  986. data/lib/stripe/resources/tax/calculation.rb +321 -0
  987. data/lib/stripe/resources/tax/calculation_line_item.rb +103 -0
  988. data/lib/stripe/resources/tax/form.rb +264 -0
  989. data/lib/stripe/resources/tax/registration.rb +2259 -0
  990. data/lib/stripe/resources/tax/settings.rb +131 -0
  991. data/lib/stripe/resources/tax/transaction.rb +287 -0
  992. data/lib/stripe/resources/tax/transaction_line_item.rb +60 -0
  993. data/lib/stripe/resources/tax_code.rb +26 -0
  994. data/lib/stripe/resources/tax_deducted_at_source.rb +30 -0
  995. data/lib/stripe/resources/tax_id.rb +103 -11
  996. data/lib/stripe/resources/tax_rate.rb +87 -0
  997. data/lib/stripe/resources/terminal/configuration.rb +724 -0
  998. data/lib/stripe/resources/terminal/connection_token.rb +31 -0
  999. data/lib/stripe/resources/terminal/location.rb +168 -0
  1000. data/lib/stripe/resources/terminal/onboarding_link.rb +71 -0
  1001. data/lib/stripe/resources/terminal/reader.rb +752 -10
  1002. data/lib/stripe/resources/terminal/reader_collected_data.rb +47 -0
  1003. data/lib/stripe/resources/test_helpers/test_clock.rb +110 -2
  1004. data/lib/stripe/resources/token.rb +66 -0
  1005. data/lib/stripe/resources/topup.rb +80 -2
  1006. data/lib/stripe/resources/transfer.rb +74 -6
  1007. data/lib/stripe/resources/treasury/credit_reversal.rb +86 -0
  1008. data/lib/stripe/resources/treasury/debit_reversal.rb +101 -0
  1009. data/lib/stripe/resources/treasury/financial_account.rb +255 -0
  1010. data/lib/stripe/resources/treasury/financial_account_features.rb +398 -0
  1011. data/lib/stripe/resources/treasury/inbound_transfer.rb +308 -0
  1012. data/lib/stripe/resources/treasury/outbound_payment.rb +408 -0
  1013. data/lib/stripe/resources/treasury/outbound_transfer.rb +418 -0
  1014. data/lib/stripe/resources/treasury/received_credit.rb +291 -0
  1015. data/lib/stripe/resources/treasury/received_debit.rb +256 -0
  1016. data/lib/stripe/resources/treasury/transaction.rb +143 -0
  1017. data/lib/stripe/resources/treasury/transaction_entry.rb +124 -0
  1018. data/lib/stripe/resources/v2/amount.rb +9 -0
  1019. data/lib/stripe/resources/v2/billing/bill_setting.rb +102 -0
  1020. data/lib/stripe/resources/v2/billing/bill_setting_version.rb +90 -0
  1021. data/lib/stripe/resources/v2/billing/cadence.rb +609 -0
  1022. data/lib/stripe/resources/v2/billing/collection_setting.rb +274 -0
  1023. data/lib/stripe/resources/v2/billing/collection_setting_version.rb +262 -0
  1024. data/lib/stripe/resources/v2/billing/meter_event.rb +43 -0
  1025. data/lib/stripe/resources/v2/billing/meter_event_adjustment.rb +52 -0
  1026. data/lib/stripe/resources/v2/billing/meter_event_session.rb +37 -0
  1027. data/lib/stripe/resources/v2/billing/profile.rb +46 -0
  1028. data/lib/stripe/resources/v2/core/account.rb +4115 -0
  1029. data/lib/stripe/resources/v2/core/account_link.rb +123 -0
  1030. data/lib/stripe/resources/v2/core/account_person.rb +477 -0
  1031. data/lib/stripe/resources/v2/core/account_person_token.rb +37 -0
  1032. data/lib/stripe/resources/v2/core/account_token.rb +37 -0
  1033. data/lib/stripe/resources/v2/core/event.rb +69 -0
  1034. data/lib/stripe/resources/v2/core/event_destination.rb +119 -0
  1035. data/lib/stripe/resources/v2/core/event_notification.rb +62 -0
  1036. data/lib/stripe/resources/v2/core/vault/gb_bank_account.rb +114 -0
  1037. data/lib/stripe/resources/v2/core/vault/us_bank_account.rb +83 -0
  1038. data/lib/stripe/resources/v2/deleted_object.rb +21 -0
  1039. data/lib/stripe/resources/v2/financial_address_credit_simulation.rb +28 -0
  1040. data/lib/stripe/resources/v2/financial_address_generated_microdeposits.rb +44 -0
  1041. data/lib/stripe/resources/v2/money_management/adjustment.rb +82 -0
  1042. data/lib/stripe/resources/v2/money_management/financial_account.rb +188 -0
  1043. data/lib/stripe/resources/v2/money_management/financial_address.rb +132 -0
  1044. data/lib/stripe/resources/v2/money_management/inbound_transfer.rb +197 -0
  1045. data/lib/stripe/resources/v2/money_management/outbound_payment.rb +261 -0
  1046. data/lib/stripe/resources/v2/money_management/outbound_payment_quote.rb +202 -0
  1047. data/lib/stripe/resources/v2/money_management/outbound_setup_intent.rb +69 -0
  1048. data/lib/stripe/resources/v2/money_management/outbound_transfer.rb +240 -0
  1049. data/lib/stripe/resources/v2/money_management/payout_method.rb +111 -0
  1050. data/lib/stripe/resources/v2/money_management/payout_methods_bank_account_spec.rb +81 -0
  1051. data/lib/stripe/resources/v2/money_management/received_credit.rb +246 -0
  1052. data/lib/stripe/resources/v2/money_management/received_debit.rb +152 -0
  1053. data/lib/stripe/resources/v2/money_management/transaction.rb +180 -0
  1054. data/lib/stripe/resources/v2/money_management/transaction_entry.rb +153 -0
  1055. data/lib/stripe/resources/webhook_endpoint.rb +90 -0
  1056. data/lib/stripe/resources.rb +175 -11
  1057. data/lib/stripe/search_result_object.rb +5 -2
  1058. data/lib/stripe/services/account_capability_service.rb +39 -0
  1059. data/lib/stripe/services/account_external_account_service.rb +68 -0
  1060. data/lib/stripe/services/account_link_service.rb +17 -0
  1061. data/lib/stripe/services/account_login_link_service.rb +19 -0
  1062. data/lib/stripe/services/account_notice_service.rb +39 -0
  1063. data/lib/stripe/services/account_person_service.rb +61 -0
  1064. data/lib/stripe/services/account_service.rb +100 -0
  1065. data/lib/stripe/services/account_session_service.rb +17 -0
  1066. data/lib/stripe/services/apple_pay_domain_service.rb +50 -0
  1067. data/lib/stripe/services/application_fee_refund_service.rb +60 -0
  1068. data/lib/stripe/services/application_fee_service.rb +35 -0
  1069. data/lib/stripe/services/apps/secret_service.rb +52 -0
  1070. data/lib/stripe/services/apps_service.rb +13 -0
  1071. data/lib/stripe/services/balance_service.rb +12 -0
  1072. data/lib/stripe/services/balance_settings_service.rb +30 -0
  1073. data/lib/stripe/services/balance_transaction_service.rb +32 -0
  1074. data/lib/stripe/services/billing/alert_service.rb +74 -0
  1075. data/lib/stripe/services/billing/analytics/meter_usage_service.rb +21 -0
  1076. data/lib/stripe/services/billing/analytics_service.rb +15 -0
  1077. data/lib/stripe/services/billing/credit_balance_summary_service.rb +19 -0
  1078. data/lib/stripe/services/billing/credit_balance_transaction_service.rb +30 -0
  1079. data/lib/stripe/services/billing/credit_grant_service.rb +74 -0
  1080. data/lib/stripe/services/billing/meter_event_adjustment_service.rb +19 -0
  1081. data/lib/stripe/services/billing/meter_event_service.rb +19 -0
  1082. data/lib/stripe/services/billing/meter_event_summary_service.rb +19 -0
  1083. data/lib/stripe/services/billing/meter_service.rb +81 -0
  1084. data/lib/stripe/services/billing_portal/configuration_service.rb +52 -0
  1085. data/lib/stripe/services/billing_portal/session_service.rb +19 -0
  1086. data/lib/stripe/services/billing_portal_service.rb +14 -0
  1087. data/lib/stripe/services/billing_service.rb +21 -0
  1088. data/lib/stripe/services/capital/financing_offer_service.rb +42 -0
  1089. data/lib/stripe/services/capital/financing_summary_service.rb +19 -0
  1090. data/lib/stripe/services/capital/financing_transaction_service.rb +31 -0
  1091. data/lib/stripe/services/capital_service.rb +15 -0
  1092. data/lib/stripe/services/charge_service.rb +69 -0
  1093. data/lib/stripe/services/checkout/session_line_item_service.rb +19 -0
  1094. data/lib/stripe/services/checkout/session_service.rb +74 -0
  1095. data/lib/stripe/services/checkout_service.rb +13 -0
  1096. data/lib/stripe/services/climate/order_service.rb +68 -0
  1097. data/lib/stripe/services/climate/product_service.rb +30 -0
  1098. data/lib/stripe/services/climate/supplier_service.rb +30 -0
  1099. data/lib/stripe/services/climate_service.rb +15 -0
  1100. data/lib/stripe/services/confirmation_token_service.rb +17 -0
  1101. data/lib/stripe/services/country_spec_service.rb +28 -0
  1102. data/lib/stripe/services/coupon_service.rb +51 -0
  1103. data/lib/stripe/services/credit_note_line_item_service.rb +17 -0
  1104. data/lib/stripe/services/credit_note_preview_lines_service.rb +17 -0
  1105. data/lib/stripe/services/credit_note_service.rb +92 -0
  1106. data/lib/stripe/services/customer_balance_transaction_service.rb +50 -0
  1107. data/lib/stripe/services/customer_cash_balance_service.rb +28 -0
  1108. data/lib/stripe/services/customer_cash_balance_transaction_service.rb +28 -0
  1109. data/lib/stripe/services/customer_funding_instructions_service.rb +19 -0
  1110. data/lib/stripe/services/customer_payment_method_service.rb +28 -0
  1111. data/lib/stripe/services/customer_payment_source_service.rb +76 -0
  1112. data/lib/stripe/services/customer_service.rb +89 -0
  1113. data/lib/stripe/services/customer_session_service.rb +17 -0
  1114. data/lib/stripe/services/customer_tax_id_service.rb +50 -0
  1115. data/lib/stripe/services/dispute_service.rb +48 -0
  1116. data/lib/stripe/services/entitlements/active_entitlement_service.rb +30 -0
  1117. data/lib/stripe/services/entitlements/feature_service.rb +52 -0
  1118. data/lib/stripe/services/entitlements_service.rb +14 -0
  1119. data/lib/stripe/services/ephemeral_key_service.rb +28 -0
  1120. data/lib/stripe/services/event_service.rb +22 -0
  1121. data/lib/stripe/services/exchange_rate_service.rb +32 -0
  1122. data/lib/stripe/services/external_account_service.rb +68 -0
  1123. data/lib/stripe/services/file_link_service.rb +38 -0
  1124. data/lib/stripe/services/file_service.rb +35 -0
  1125. data/lib/stripe/services/financial_connections/account_inferred_balance_service.rb +19 -0
  1126. data/lib/stripe/services/financial_connections/account_owner_service.rb +19 -0
  1127. data/lib/stripe/services/financial_connections/account_service.rb +83 -0
  1128. data/lib/stripe/services/financial_connections/institution_service.rb +30 -0
  1129. data/lib/stripe/services/financial_connections/session_service.rb +30 -0
  1130. data/lib/stripe/services/financial_connections/transaction_service.rb +30 -0
  1131. data/lib/stripe/services/financial_connections_service.rb +16 -0
  1132. data/lib/stripe/services/forwarding/request_service.rb +41 -0
  1133. data/lib/stripe/services/forwarding_service.rb +13 -0
  1134. data/lib/stripe/services/fx_quote_service.rb +27 -0
  1135. data/lib/stripe/services/identity/verification_report_service.rb +30 -0
  1136. data/lib/stripe/services/identity/verification_session_service.rb +106 -0
  1137. data/lib/stripe/services/identity_service.rb +14 -0
  1138. data/lib/stripe/services/invoice_item_service.rb +61 -0
  1139. data/lib/stripe/services/invoice_line_item_service.rb +31 -0
  1140. data/lib/stripe/services/invoice_payment_service.rb +28 -0
  1141. data/lib/stripe/services/invoice_rendering_template_service.rb +50 -0
  1142. data/lib/stripe/services/invoice_service.rb +206 -0
  1143. data/lib/stripe/services/issuing/authorization_service.rb +65 -0
  1144. data/lib/stripe/services/issuing/card_service.rb +52 -0
  1145. data/lib/stripe/services/issuing/cardholder_service.rb +52 -0
  1146. data/lib/stripe/services/issuing/credit_underwriting_record_service.rb +74 -0
  1147. data/lib/stripe/services/issuing/dispute_service.rb +63 -0
  1148. data/lib/stripe/services/issuing/dispute_settlement_detail_service.rb +30 -0
  1149. data/lib/stripe/services/issuing/fraud_liability_debit_service.rb +30 -0
  1150. data/lib/stripe/services/issuing/personalization_design_service.rb +52 -0
  1151. data/lib/stripe/services/issuing/physical_bundle_service.rb +30 -0
  1152. data/lib/stripe/services/issuing/token_service.rb +41 -0
  1153. data/lib/stripe/services/issuing/transaction_service.rb +41 -0
  1154. data/lib/stripe/services/issuing_service.rb +24 -0
  1155. data/lib/stripe/services/mandate_service.rb +22 -0
  1156. data/lib/stripe/services/margin_service.rb +50 -0
  1157. data/lib/stripe/services/oauth_service.rb +63 -0
  1158. data/lib/stripe/services/order_line_item_service.rb +17 -0
  1159. data/lib/stripe/services/order_service.rb +78 -0
  1160. data/lib/stripe/services/payment_attempt_record_service.rb +28 -0
  1161. data/lib/stripe/services/payment_intent_amount_details_line_item_service.rb +17 -0
  1162. data/lib/stripe/services/payment_intent_service.rb +253 -0
  1163. data/lib/stripe/services/payment_link_line_item_service.rb +17 -0
  1164. data/lib/stripe/services/payment_link_service.rb +57 -0
  1165. data/lib/stripe/services/payment_method_configuration_service.rb +50 -0
  1166. data/lib/stripe/services/payment_method_domain_service.rb +66 -0
  1167. data/lib/stripe/services/payment_method_service.rb +86 -0
  1168. data/lib/stripe/services/payment_record_service.rb +101 -0
  1169. data/lib/stripe/services/payout_service.rb +66 -0
  1170. data/lib/stripe/services/plan_service.rb +49 -0
  1171. data/lib/stripe/services/price_service.rb +52 -0
  1172. data/lib/stripe/services/privacy/redaction_job_service.rb +104 -0
  1173. data/lib/stripe/services/privacy/redaction_job_validation_error_service.rb +19 -0
  1174. data/lib/stripe/services/privacy_service.rb +13 -0
  1175. data/lib/stripe/services/product_feature_service.rb +50 -0
  1176. data/lib/stripe/services/product_service.rb +70 -0
  1177. data/lib/stripe/services/promotion_code_service.rb +50 -0
  1178. data/lib/stripe/services/quote_computed_upfront_line_items_service.rb +17 -0
  1179. data/lib/stripe/services/quote_line_item_service.rb +17 -0
  1180. data/lib/stripe/services/quote_line_service.rb +17 -0
  1181. data/lib/stripe/services/quote_preview_invoice_service.rb +17 -0
  1182. data/lib/stripe/services/quote_preview_subscription_schedule_service.rb +17 -0
  1183. data/lib/stripe/services/quote_service.rb +140 -0
  1184. data/lib/stripe/services/radar/early_fraud_warning_service.rb +32 -0
  1185. data/lib/stripe/services/radar/value_list_item_service.rb +52 -0
  1186. data/lib/stripe/services/radar/value_list_service.rb +63 -0
  1187. data/lib/stripe/services/radar_service.rb +15 -0
  1188. data/lib/stripe/services/refund_service.rb +63 -0
  1189. data/lib/stripe/services/reporting/report_run_service.rb +41 -0
  1190. data/lib/stripe/services/reporting/report_type_service.rb +30 -0
  1191. data/lib/stripe/services/reporting_service.rb +14 -0
  1192. data/lib/stripe/services/reserve/hold_service.rb +30 -0
  1193. data/lib/stripe/services/reserve/plan_service.rb +19 -0
  1194. data/lib/stripe/services/reserve/release_service.rb +30 -0
  1195. data/lib/stripe/services/reserve_service.rb +15 -0
  1196. data/lib/stripe/services/review_service.rb +33 -0
  1197. data/lib/stripe/services/setup_attempt_service.rb +17 -0
  1198. data/lib/stripe/services/setup_intent_service.rb +105 -0
  1199. data/lib/stripe/services/shipping_rate_service.rb +50 -0
  1200. data/lib/stripe/services/sigma/scheduled_query_run_service.rb +30 -0
  1201. data/lib/stripe/services/sigma_service.rb +13 -0
  1202. data/lib/stripe/services/source_service.rb +64 -0
  1203. data/lib/stripe/services/source_transaction_service.rb +17 -0
  1204. data/lib/stripe/services/subscription_item_service.rb +61 -0
  1205. data/lib/stripe/services/subscription_schedule_service.rb +83 -0
  1206. data/lib/stripe/services/subscription_service.rb +149 -0
  1207. data/lib/stripe/services/tax/association_service.rb +19 -0
  1208. data/lib/stripe/services/tax/calculation_line_item_service.rb +19 -0
  1209. data/lib/stripe/services/tax/calculation_service.rb +37 -0
  1210. data/lib/stripe/services/tax/form_service.rb +37 -0
  1211. data/lib/stripe/services/tax/registration_service.rb +54 -0
  1212. data/lib/stripe/services/tax/settings_service.rb +30 -0
  1213. data/lib/stripe/services/tax/transaction_line_item_service.rb +19 -0
  1214. data/lib/stripe/services/tax/transaction_service.rb +48 -0
  1215. data/lib/stripe/services/tax_code_service.rb +22 -0
  1216. data/lib/stripe/services/tax_id_service.rb +38 -0
  1217. data/lib/stripe/services/tax_rate_service.rb +38 -0
  1218. data/lib/stripe/services/tax_service.rb +18 -0
  1219. data/lib/stripe/services/terminal/configuration_service.rb +63 -0
  1220. data/lib/stripe/services/terminal/connection_token_service.rb +19 -0
  1221. data/lib/stripe/services/terminal/location_service.rb +64 -0
  1222. data/lib/stripe/services/terminal/onboarding_link_service.rb +19 -0
  1223. data/lib/stripe/services/terminal/reader_collected_data_service.rb +19 -0
  1224. data/lib/stripe/services/terminal/reader_service.rb +151 -0
  1225. data/lib/stripe/services/terminal_service.rb +18 -0
  1226. data/lib/stripe/services/test_helpers/confirmation_token_service.rb +19 -0
  1227. data/lib/stripe/services/test_helpers/customer_service.rb +19 -0
  1228. data/lib/stripe/services/test_helpers/issuing/authorization_service.rb +87 -0
  1229. data/lib/stripe/services/test_helpers/issuing/card_service.rb +65 -0
  1230. data/lib/stripe/services/test_helpers/issuing/personalization_design_service.rb +43 -0
  1231. data/lib/stripe/services/test_helpers/issuing/transaction_service.rb +43 -0
  1232. data/lib/stripe/services/test_helpers/issuing_service.rb +19 -0
  1233. data/lib/stripe/services/test_helpers/refund_service.rb +19 -0
  1234. data/lib/stripe/services/test_helpers/terminal/reader_service.rb +43 -0
  1235. data/lib/stripe/services/test_helpers/terminal_service.rb +15 -0
  1236. data/lib/stripe/services/test_helpers/test_clock_service.rb +63 -0
  1237. data/lib/stripe/services/test_helpers/treasury/inbound_transfer_service.rb +43 -0
  1238. data/lib/stripe/services/test_helpers/treasury/outbound_payment_service.rb +54 -0
  1239. data/lib/stripe/services/test_helpers/treasury/outbound_transfer_service.rb +54 -0
  1240. data/lib/stripe/services/test_helpers/treasury/received_credit_service.rb +21 -0
  1241. data/lib/stripe/services/test_helpers/treasury/received_debit_service.rb +21 -0
  1242. data/lib/stripe/services/test_helpers/treasury_service.rb +19 -0
  1243. data/lib/stripe/services/test_helpers_service.rb +19 -0
  1244. data/lib/stripe/services/token_service.rb +23 -0
  1245. data/lib/stripe/services/topup_service.rb +49 -0
  1246. data/lib/stripe/services/transfer_reversal_service.rb +56 -0
  1247. data/lib/stripe/services/transfer_service.rb +47 -0
  1248. data/lib/stripe/services/treasury/credit_reversal_service.rb +41 -0
  1249. data/lib/stripe/services/treasury/debit_reversal_service.rb +41 -0
  1250. data/lib/stripe/services/treasury/financial_account_features_service.rb +30 -0
  1251. data/lib/stripe/services/treasury/financial_account_service.rb +70 -0
  1252. data/lib/stripe/services/treasury/inbound_transfer_service.rb +52 -0
  1253. data/lib/stripe/services/treasury/outbound_payment_service.rb +52 -0
  1254. data/lib/stripe/services/treasury/outbound_transfer_service.rb +52 -0
  1255. data/lib/stripe/services/treasury/received_credit_service.rb +30 -0
  1256. data/lib/stripe/services/treasury/received_debit_service.rb +30 -0
  1257. data/lib/stripe/services/treasury/transaction_entry_service.rb +30 -0
  1258. data/lib/stripe/services/treasury/transaction_service.rb +30 -0
  1259. data/lib/stripe/services/treasury_service.rb +22 -0
  1260. data/lib/stripe/services/v1_services.rb +101 -0
  1261. data/lib/stripe/services/v2/billing/bill_setting_service.rb +61 -0
  1262. data/lib/stripe/services/v2/billing/bill_settings/version_service.rb +34 -0
  1263. data/lib/stripe/services/v2/billing/cadence_service.rb +65 -0
  1264. data/lib/stripe/services/v2/billing/collection_setting_service.rb +61 -0
  1265. data/lib/stripe/services/v2/billing/collection_settings/version_service.rb +34 -0
  1266. data/lib/stripe/services/v2/billing/meter_event_adjustment_service.rb +21 -0
  1267. data/lib/stripe/services/v2/billing/meter_event_service.rb +21 -0
  1268. data/lib/stripe/services/v2/billing/meter_event_session_service.rb +21 -0
  1269. data/lib/stripe/services/v2/billing/meter_event_stream_service.rb +23 -0
  1270. data/lib/stripe/services/v2/billing/profile_service.rb +54 -0
  1271. data/lib/stripe/services/v2/billing_service.rb +22 -0
  1272. data/lib/stripe/services/v2/core/account_link_service.rb +21 -0
  1273. data/lib/stripe/services/v2/core/account_service.rb +73 -0
  1274. data/lib/stripe/services/v2/core/account_token_service.rb +32 -0
  1275. data/lib/stripe/services/v2/core/accounts/person_service.rb +67 -0
  1276. data/lib/stripe/services/v2/core/accounts/person_token_service.rb +34 -0
  1277. data/lib/stripe/services/v2/core/event_destination_service.rb +98 -0
  1278. data/lib/stripe/services/v2/core/event_service.rb +32 -0
  1279. data/lib/stripe/services/v2/core/vault/gb_bank_account_service.rb +85 -0
  1280. data/lib/stripe/services/v2/core/vault/us_bank_account_service.rb +101 -0
  1281. data/lib/stripe/services/v2/core/vault_service.rb +18 -0
  1282. data/lib/stripe/services/v2/core_service.rb +20 -0
  1283. data/lib/stripe/services/v2/money_management/adjustment_service.rb +32 -0
  1284. data/lib/stripe/services/v2/money_management/financial_account_service.rb +70 -0
  1285. data/lib/stripe/services/v2/money_management/financial_address_service.rb +46 -0
  1286. data/lib/stripe/services/v2/money_management/inbound_transfer_service.rb +45 -0
  1287. data/lib/stripe/services/v2/money_management/outbound_payment_quote_service.rb +34 -0
  1288. data/lib/stripe/services/v2/money_management/outbound_payment_service.rb +62 -0
  1289. data/lib/stripe/services/v2/money_management/outbound_setup_intent_service.rb +75 -0
  1290. data/lib/stripe/services/v2/money_management/outbound_transfer_service.rb +60 -0
  1291. data/lib/stripe/services/v2/money_management/payout_method_service.rb +65 -0
  1292. data/lib/stripe/services/v2/money_management/payout_methods_bank_account_spec_service.rb +23 -0
  1293. data/lib/stripe/services/v2/money_management/received_credit_service.rb +32 -0
  1294. data/lib/stripe/services/v2/money_management/received_debit_service.rb +32 -0
  1295. data/lib/stripe/services/v2/money_management/transaction_entry_service.rb +32 -0
  1296. data/lib/stripe/services/v2/money_management/transaction_service.rb +32 -0
  1297. data/lib/stripe/services/v2/money_management_service.rb +31 -0
  1298. data/lib/stripe/services/v2/test_helper_service.rb +15 -0
  1299. data/lib/stripe/services/v2/test_helpers/financial_address_service.rb +36 -0
  1300. data/lib/stripe/services/v2_services.rb +16 -0
  1301. data/lib/stripe/services/webhook_endpoint_service.rb +61 -0
  1302. data/lib/stripe/services.rb +246 -0
  1303. data/lib/stripe/singleton_api_resource.rb +3 -3
  1304. data/lib/stripe/stripe_client.rb +61 -1023
  1305. data/lib/stripe/stripe_configuration.rb +60 -42
  1306. data/lib/stripe/stripe_context.rb +68 -0
  1307. data/lib/stripe/stripe_event_notification_handler.rb +425 -0
  1308. data/lib/stripe/stripe_object.rb +142 -47
  1309. data/lib/stripe/stripe_response.rb +1 -3
  1310. data/lib/stripe/stripe_service.rb +34 -0
  1311. data/lib/stripe/util.rb +134 -45
  1312. data/lib/stripe/v2_list_object.rb +84 -0
  1313. data/lib/stripe/version.rb +1 -1
  1314. data/lib/stripe/webhook.rb +3 -2
  1315. data/lib/stripe.rb +98 -0
  1316. data/rbi/stripe/resources/v2/core/event_notification.rbi +43 -0
  1317. data/rbi/stripe/stripe_client.rbi +30 -0
  1318. data/rbi/stripe.rbi +219587 -0
  1319. metadata +1210 -28
  1320. data/CHANGELOG.md +0 -1036
  1321. data/CODE_OF_CONDUCT.md +0 -77
  1322. data/CONTRIBUTORS +0 -3
  1323. data/Gemfile +0 -33
  1324. data/History.txt +0 -1
  1325. data/LICENSE +0 -21
  1326. data/Makefile +0 -7
  1327. data/README.md +0 -350
  1328. data/Rakefile +0 -37
  1329. data/VERSION +0 -1
  1330. data/lib/stripe/resources/bitcoin_receiver.rb +0 -24
  1331. data/lib/stripe/resources/bitcoin_transaction.rb +0 -16
  1332. data/lib/stripe/resources/order_return.rb +0 -10
  1333. data/lib/stripe/resources/recipient.rb +0 -14
  1334. data/lib/stripe/resources/sku.rb +0 -13
  1335. data/lib/stripe/resources/three_d_secure.rb +0 -14
  1336. data/stripe.gemspec +0 -41
@@ -0,0 +1,1173 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "stripe/instrumentation"
4
+
5
+ module Stripe
6
+ # APIRequestor executes requests against the Stripe API and allows a user to
7
+ # recover both a resource a call returns as well as a response object that
8
+ # contains information on the HTTP call.
9
+ class APIRequestor
10
+ # A set of all known thread contexts across all threads and a mutex to
11
+ # synchronize global access to them.
12
+ @thread_contexts_with_connection_managers = Set.new
13
+ @thread_contexts_with_connection_managers_mutex = Mutex.new
14
+ @last_connection_manager_gc = Util.monotonic_time
15
+
16
+ # Initializes a new APIRequestor
17
+ def initialize(config_arg = {})
18
+ @system_profiler = SystemProfiler.new
19
+ @last_request_metrics = Queue.new
20
+
21
+ @config = case config_arg
22
+ when Hash
23
+ StripeConfiguration.new.reverse_duplicate_merge(config_arg)
24
+ when Stripe::StripeConfiguration
25
+ config_arg
26
+ when String
27
+ StripeConfiguration.new.reverse_duplicate_merge(
28
+ { api_key: config_arg }
29
+ )
30
+ else
31
+ raise ArgumentError, "Can't handle argument: #{config_arg}"
32
+ end
33
+ end
34
+
35
+ attr_reader :config, :options
36
+
37
+ # Gets a currently active `APIRequestor`. Set for the current thread when
38
+ # `APIRequestor#request` is being run so that API operations being executed
39
+ # inside of that block can find the currently active requestor. It's reset to
40
+ # the original value (hopefully `nil`) after the block ends.
41
+ #
42
+ # For internal use only. Does not provide a stable API and may be broken
43
+ # with future non-major changes.
44
+ def self.active_requestor
45
+ current_thread_context.active_requestor || default_requestor
46
+ end
47
+
48
+ # Finishes any active connections by closing their TCP connection and
49
+ # clears them from internal tracking in all connection managers across all
50
+ # threads.
51
+ #
52
+ # If passed a `config` object, only clear connection managers for that
53
+ # particular configuration.
54
+ #
55
+ # For internal use only. Does not provide a stable API and may be broken
56
+ # with future non-major changes.
57
+ def self.clear_all_connection_managers(config: nil)
58
+ # Just a quick path for when configuration is being set for the first
59
+ # time before any connections have been opened. There is technically some
60
+ # potential for thread raciness here, but not in a practical sense.
61
+ return if @thread_contexts_with_connection_managers.empty?
62
+
63
+ @thread_contexts_with_connection_managers_mutex.synchronize do
64
+ pruned_contexts = Set.new
65
+
66
+ @thread_contexts_with_connection_managers.each do |thread_context|
67
+ # Note that the thread context itself is not destroyed, but we clear
68
+ # its connection manager and remove our reference to it. If it ever
69
+ # makes a new request we'll give it a new connection manager and
70
+ # it'll go back into `@thread_contexts_with_connection_managers`.
71
+ thread_context.default_connection_managers.reject! do |cm_config, cm|
72
+ if config.nil? || config.key == cm_config
73
+ cm.clear
74
+ true
75
+ end
76
+ end
77
+
78
+ pruned_contexts << thread_context if thread_context.default_connection_managers.empty?
79
+ end
80
+
81
+ @thread_contexts_with_connection_managers.subtract(pruned_contexts)
82
+ end
83
+ end
84
+
85
+ # A default requestor for the current thread.
86
+ def self.default_requestor
87
+ current_thread_context.default_requestor ||= APIRequestor.new(Stripe.config)
88
+ end
89
+
90
+ # A default connection manager for the current thread scoped to the
91
+ # configuration object that may be provided.
92
+ def self.default_connection_manager(config = Stripe.config)
93
+ current_thread_context.default_connection_managers[config.key] ||= begin
94
+ connection_manager = ConnectionManager.new(config)
95
+
96
+ @thread_contexts_with_connection_managers_mutex.synchronize do
97
+ maybe_gc_connection_managers
98
+ @thread_contexts_with_connection_managers << current_thread_context
99
+ end
100
+
101
+ connection_manager
102
+ end
103
+ end
104
+
105
+ # Checks if an error is a problem that we should retry on. This includes
106
+ # both socket errors that may represent an intermittent problem and some
107
+ # special HTTP statuses.
108
+ def self.should_retry?(error,
109
+ num_retries:, config: Stripe.config)
110
+ return false if num_retries >= config.max_network_retries
111
+
112
+ case error
113
+ when Net::OpenTimeout, Net::ReadTimeout
114
+ # Retry on timeout-related problems (either on open or read).
115
+ true
116
+ when EOFError, Errno::ECONNREFUSED, Errno::ECONNRESET, # rubocop:todo Lint/DuplicateBranch
117
+ Errno::EHOSTUNREACH, Errno::ETIMEDOUT, SocketError
118
+ # Destination refused the connection, the connection was reset, or a
119
+ # variety of other connection failures. This could occur from a single
120
+ # saturated server, so retry in case it's intermittent.
121
+ true
122
+ when Stripe::StripeError
123
+ # The API may ask us not to retry (e.g. if doing so would be a no-op),
124
+ # or advise us to retry (e.g. in cases of lock timeouts). Defer to
125
+ # those instructions if given.
126
+ return false if error.http_headers["stripe-should-retry"] == "false"
127
+ return true if error.http_headers["stripe-should-retry"] == "true"
128
+
129
+ # 409 Conflict
130
+ return true if error.http_status == 409
131
+
132
+ # 429 Too Many Requests
133
+ #
134
+ # There are a few different problems that can lead to a 429. The most
135
+ # common is rate limiting, on which we *don't* want to retry because
136
+ # that'd likely contribute to more contention problems. However, some
137
+ # 429s are lock timeouts, which is when a request conflicted with
138
+ # another request or an internal process on some particular object.
139
+ # These 429s are safe to retry.
140
+ return true if error.http_status == 429 && error.code == "lock_timeout"
141
+
142
+ # Retry on 500, 503, and other internal errors.
143
+ #
144
+ # Note that we expect the stripe-should-retry header to be false
145
+ # in most cases when a 500 is returned, since our idempotency framework
146
+ # would typically replay it anyway.
147
+ true if error.http_status >= 500
148
+ else
149
+ false
150
+ end
151
+ end
152
+
153
+ def self.sleep_time(num_retries, config: Stripe.config)
154
+ # Apply exponential backoff with initial_network_retry_delay on the
155
+ # number of num_retries so far as inputs. Do not allow the number to
156
+ # exceed max_network_retry_delay.
157
+ sleep_seconds = [
158
+ config.initial_network_retry_delay * (2**(num_retries - 1)),
159
+ config.max_network_retry_delay,
160
+ ].min
161
+
162
+ # Apply some jitter by randomizing the value in the range of
163
+ # (sleep_seconds / 2) to (sleep_seconds).
164
+ sleep_seconds *= (0.5 * (1 + rand))
165
+
166
+ # But never sleep less than the base sleep seconds.
167
+ [config.initial_network_retry_delay, sleep_seconds].max
168
+ end
169
+
170
+ # Executes the API call within the given block. Usage looks like:
171
+ #
172
+ # client = APIRequestor.new
173
+ # charge, resp = client.request { Charge.create }
174
+ #
175
+ def request
176
+ old_api_requestor = self.class.current_thread_context.active_requestor
177
+ self.class.current_thread_context.active_requestor = self
178
+
179
+ if self.class.current_thread_context.last_responses&.key?(object_id)
180
+ raise "calls to APIRequestor#request cannot be nested within a thread"
181
+ end
182
+
183
+ self.class.current_thread_context.last_responses ||= {}
184
+ self.class.current_thread_context.last_responses[object_id] = nil
185
+
186
+ begin
187
+ res = yield
188
+ [res, self.class.current_thread_context.last_responses[object_id]]
189
+ ensure
190
+ self.class.current_thread_context.active_requestor = old_api_requestor
191
+ self.class.current_thread_context.last_responses.delete(object_id)
192
+ end
193
+ end
194
+ extend Gem::Deprecate
195
+ deprecate :request, "StripeClient#raw_request", 2024, 9
196
+
197
+ def execute_request(method, path, base_address,
198
+ params: {}, opts: {}, usage: [])
199
+ params = params.to_h if params.is_a?(RequestParams)
200
+ http_resp, req_opts = execute_request_internal(
201
+ method, path, base_address, params, opts, usage
202
+ )
203
+ req_opts = RequestOptions.extract_opts_from_hash(req_opts)
204
+
205
+ resp = interpret_response(http_resp)
206
+
207
+ # If being called from `APIRequestor#request`, put the last response in
208
+ # thread-local memory so that it can be returned to the user. Don't store
209
+ # anything otherwise so that we don't leak memory.
210
+ store_last_response(object_id, resp)
211
+
212
+ api_mode = Util.get_api_mode(path)
213
+ Util.convert_to_stripe_object_with_params(resp.data, params, RequestOptions.persistable(req_opts), resp,
214
+ api_mode: api_mode, requestor: self,
215
+ v2_deleted_object: method == :delete && api_mode == :v2)
216
+ end
217
+
218
+ # Execute request without instantiating a new object if the relevant object's name matches the class
219
+ #
220
+ # For internal use only. Does not provide a stable API and may be broken
221
+ # with future non-major changes.
222
+ def execute_request_initialize_from(method, path, base_address, object,
223
+ params: {}, opts: {}, usage: [])
224
+ opts = RequestOptions.combine_opts(object.instance_variable_get(:@opts) || {}, opts)
225
+ opts = Util.normalize_opts(opts)
226
+
227
+ params = params.to_h if params.is_a?(RequestParams)
228
+
229
+ http_resp, req_opts = execute_request_internal(
230
+ method, path, base_address, params, opts, usage
231
+ )
232
+ req_opts = RequestOptions.extract_opts_from_hash(req_opts)
233
+
234
+ resp = interpret_response(http_resp)
235
+
236
+ # If being called from `APIRequestor#request`, put the last response in
237
+ # thread-local memory so that it can be returned to the user. Don't store
238
+ # anything otherwise so that we don't leak memory.
239
+ store_last_response(object_id, resp)
240
+
241
+ if Util.object_name_matches_class?(resp.data[:object], object.class)
242
+ object.send(:initialize_from,
243
+ resp.data, RequestOptions.persistable(req_opts), resp,
244
+ api_mode: :v1, requestor: self)
245
+ else
246
+ Util.convert_to_stripe_object_with_params(resp.data, params,
247
+ RequestOptions.persistable(req_opts),
248
+ resp, api_mode: :v1, requestor: self)
249
+ end
250
+ end
251
+
252
+ def interpret_response(http_resp)
253
+ StripeResponse.from_net_http(http_resp)
254
+ rescue JSON::ParserError
255
+ raise general_api_error(http_resp.code.to_i, http_resp.body)
256
+ end
257
+
258
+ # Executes a request and returns the body as a stream instead of converting
259
+ # it to a StripeObject. This should be used for any request where we expect
260
+ # an arbitrary binary response.
261
+ #
262
+ # A `read_body_chunk` block can be passed, which will be called repeatedly
263
+ # with the body chunks read from the socket.
264
+ #
265
+ # If a block is passed, a StripeHeadersOnlyResponse is returned as the
266
+ # block is expected to do all the necessary body processing. If no block is
267
+ # passed, then a StripeStreamResponse is returned containing an IO stream
268
+ # with the response body.
269
+ def execute_request_stream(method, path,
270
+ base_address,
271
+ params: {}, opts: {}, usage: [],
272
+ &read_body_chunk_block)
273
+ unless block_given?
274
+ raise ArgumentError,
275
+ "execute_request_stream requires a read_body_chunk_block"
276
+ end
277
+
278
+ params = params.to_h if params.is_a?(RequestParams)
279
+ http_resp, api_key = execute_request_internal(
280
+ method, path, base_address, params, opts, usage, &read_body_chunk_block
281
+ )
282
+
283
+ # When the read_body_chunk_block is given, we no longer have access to the
284
+ # response body at this point and so return a response object containing
285
+ # only the headers. This is because the body was consumed by the block.
286
+ resp = StripeHeadersOnlyResponse.from_net_http(http_resp)
287
+
288
+ [resp, api_key]
289
+ end
290
+
291
+ def store_last_response(object_id, resp)
292
+ return unless last_response_has_key?(object_id)
293
+
294
+ self.class.current_thread_context.last_responses[object_id] = resp
295
+ end
296
+
297
+ def last_response_has_key?(object_id)
298
+ self.class.current_thread_context.last_responses&.key?(object_id)
299
+ end
300
+
301
+ #
302
+ # private
303
+ #
304
+
305
+ # Time (in seconds) that a connection manager has not been used before it's
306
+ # eligible for garbage collection.
307
+ CONNECTION_MANAGER_GC_LAST_USED_EXPIRY = 120
308
+
309
+ # How often to check (in seconds) for connection managers that haven't been
310
+ # used in a long time and which should be garbage collected.
311
+ CONNECTION_MANAGER_GC_PERIOD = 60
312
+
313
+ ERROR_MESSAGE_CONNECTION =
314
+ "Unexpected error communicating when trying to connect to " \
315
+ "Stripe (%s). You may be seeing this message because your DNS is not " \
316
+ "working or you don't have an internet connection. To check, try " \
317
+ "running `host stripe.com` from the command line."
318
+ ERROR_MESSAGE_SSL =
319
+ "Could not establish a secure connection to Stripe (%s), you " \
320
+ "may need to upgrade your OpenSSL version. To check, try running " \
321
+ "`openssl s_client -connect api.stripe.com:443` from the command " \
322
+ "line."
323
+
324
+ # Common error suffix sared by both connect and read timeout messages.
325
+ ERROR_MESSAGE_TIMEOUT_SUFFIX =
326
+ "Please check your internet connection and try again. " \
327
+ "If this problem persists, you should check Stripe's service " \
328
+ "status at https://status.stripe.com, or let us know at " \
329
+ "support@stripe.com."
330
+
331
+ ERROR_MESSAGE_TIMEOUT_CONNECT = (
332
+ "Timed out connecting to Stripe (%s). " +
333
+ ERROR_MESSAGE_TIMEOUT_SUFFIX
334
+ ).freeze
335
+
336
+ ERROR_MESSAGE_TIMEOUT_READ = (
337
+ "Timed out communicating with Stripe (%s). " +
338
+ ERROR_MESSAGE_TIMEOUT_SUFFIX
339
+ ).freeze
340
+
341
+ # Maps types of exceptions that we're likely to see during a network
342
+ # request to more user-friendly messages that we put in front of people.
343
+ # The original error message is also appended onto the final exception for
344
+ # full transparency.
345
+ NETWORK_ERROR_MESSAGES_MAP = {
346
+ EOFError => ERROR_MESSAGE_CONNECTION,
347
+ Errno::ECONNREFUSED => ERROR_MESSAGE_CONNECTION,
348
+ Errno::ECONNRESET => ERROR_MESSAGE_CONNECTION,
349
+ Errno::EHOSTUNREACH => ERROR_MESSAGE_CONNECTION,
350
+ Errno::ETIMEDOUT => ERROR_MESSAGE_TIMEOUT_CONNECT,
351
+ SocketError => ERROR_MESSAGE_CONNECTION,
352
+
353
+ Net::OpenTimeout => ERROR_MESSAGE_TIMEOUT_CONNECT,
354
+ Net::ReadTimeout => ERROR_MESSAGE_TIMEOUT_READ,
355
+
356
+ OpenSSL::SSL::SSLError => ERROR_MESSAGE_SSL,
357
+ }.freeze
358
+ private_constant :NETWORK_ERROR_MESSAGES_MAP
359
+
360
+ # A record representing any data that `APIRequestor` puts into
361
+ # `Thread.current`. Making it a class likes this gives us a little extra
362
+ # type safety and lets us document what each field does.
363
+ #
364
+ # For internal use only. Does not provide a stable API and may be broken
365
+ # with future non-major changes.
366
+ class ThreadContext
367
+ # A `APIRequestor` that's been flagged as currently active within a
368
+ # thread by `APIRequestor#request`. A requestor stays active until the
369
+ # completion of the request block.
370
+ attr_accessor :active_requestor
371
+
372
+ # A default `APIRequestor` object for the thread. Used in all cases where
373
+ # the user hasn't specified their own.
374
+ attr_accessor :default_requestor
375
+
376
+ # A temporary map of object IDs to responses from last executed API
377
+ # calls. Used to return a responses from calls to `APIRequestor#request`.
378
+ #
379
+ # Stored in the thread data to make the use of a single `APIRequestor`
380
+ # object safe across multiple threads. Stored as a map so that multiple
381
+ # `APIRequestor` objects can run concurrently on the same thread.
382
+ #
383
+ # Responses are only left in as long as they're needed, which means
384
+ # they're removed as soon as a call leaves `APIRequestor#request`, and
385
+ # because that's wrapped in an `ensure` block, they should never leave
386
+ # garbage in `Thread.current`.
387
+ attr_accessor :last_responses
388
+
389
+ # A map of connection mangers for the thread. Normally shared between
390
+ # all `APIRequestor` objects on a particular thread, and created so as to
391
+ # minimize the number of open connections that an application needs.
392
+ def default_connection_managers
393
+ @default_connection_managers ||= {}
394
+ end
395
+
396
+ def reset_connection_managers
397
+ @default_connection_managers = {}
398
+ end
399
+ end
400
+
401
+ # Access data stored for `APIRequestor` within the thread's current
402
+ # context. Returns `ThreadContext`.
403
+ #
404
+ # For internal use only. Does not provide a stable API and may be broken
405
+ # with future non-major changes.
406
+ def self.current_thread_context
407
+ Thread.current[:api_requestor__internal_use_only] ||= ThreadContext.new
408
+ end
409
+
410
+ # Garbage collects connection managers that haven't been used in some time,
411
+ # with the idea being that we want to remove old connection managers that
412
+ # belong to dead threads and the like.
413
+ #
414
+ # Prefixed with `maybe_` because garbage collection will only run
415
+ # periodically so that we're not constantly engaged in busy work. If
416
+ # connection managers live a little passed their useful age it's not
417
+ # harmful, so it's not necessary to get them right away.
418
+ #
419
+ # For testability, returns `nil` if it didn't run and the number of
420
+ # connection managers that were garbage collected otherwise.
421
+ #
422
+ # IMPORTANT: This method is not thread-safe and expects to be called inside
423
+ # a lock on `@thread_contexts_with_connection_managers_mutex`.
424
+ #
425
+ # For internal use only. Does not provide a stable API and may be broken
426
+ # with future non-major changes.
427
+ def self.maybe_gc_connection_managers
428
+ next_gc_time = @last_connection_manager_gc + CONNECTION_MANAGER_GC_PERIOD
429
+ return nil if next_gc_time > Util.monotonic_time
430
+
431
+ last_used_threshold =
432
+ Util.monotonic_time - CONNECTION_MANAGER_GC_LAST_USED_EXPIRY
433
+
434
+ pruned_contexts = []
435
+ @thread_contexts_with_connection_managers.each do |thread_context|
436
+ thread_context
437
+ .default_connection_managers
438
+ .each do |config_key, connection_manager|
439
+ next if connection_manager.last_used > last_used_threshold
440
+
441
+ connection_manager.clear
442
+ thread_context.default_connection_managers.delete(config_key)
443
+ end
444
+ end
445
+
446
+ @thread_contexts_with_connection_managers.each do |thread_context|
447
+ next unless thread_context.default_connection_managers.empty?
448
+
449
+ pruned_contexts << thread_context
450
+ end
451
+
452
+ @thread_contexts_with_connection_managers -= pruned_contexts
453
+ @last_connection_manager_gc = Util.monotonic_time
454
+
455
+ pruned_contexts.count
456
+ end
457
+
458
+ private def execute_request_internal(method, path,
459
+ base_address, params, opts, usage,
460
+ &read_body_chunk_block)
461
+ api_mode = Util.get_api_mode(path)
462
+ opts = RequestOptions.merge_config_and_opts(config, opts)
463
+
464
+ raise ArgumentError, "method should be a symbol" \
465
+ unless method.is_a?(Symbol)
466
+ raise ArgumentError, "path should be a string" \
467
+ unless path.is_a?(String)
468
+
469
+ base_url ||= config.base_addresses[base_address]
470
+
471
+ raise ArgumentError, "api_base cannot be empty" if base_url.nil? || base_url.empty?
472
+
473
+ api_key ||= opts[:api_key]
474
+ params = Util.objects_to_ids(params)
475
+
476
+ check_api_key!(api_key)
477
+
478
+ body_params = nil
479
+ query_params = nil
480
+ case method
481
+ when :get, :head, :delete
482
+ query_params = params
483
+ else
484
+ body_params = params
485
+ end
486
+
487
+ query_params, path = merge_query_params(query_params, path)
488
+
489
+ headers = request_headers(method, api_mode, opts)
490
+ url = api_url(path, base_url)
491
+
492
+ # Merge given query parameters with any already encoded in the path.
493
+ query = query_params ? Util.encode_parameters(query_params, api_mode) : nil
494
+
495
+ # Encoding body parameters is a little more complex because we may have
496
+ # to send a multipart-encoded body. `body_log` is produced separately as
497
+ # a log-friendly variant of the encoded form. File objects are displayed
498
+ # as such instead of as their file contents.
499
+ body, body_log =
500
+ body_params ? encode_body(body_params, headers, api_mode) : [nil, nil]
501
+
502
+ # stores information on the request we're about to make so that we don't
503
+ # have to pass as many parameters around for logging.
504
+ context = RequestLogContext.new
505
+ context.account = headers["Stripe-Account"]
506
+ context.api_key = api_key
507
+ context.api_version = headers["Stripe-Version"]
508
+ context.body = body_log
509
+ context.idempotency_key = headers["Idempotency-Key"]
510
+ context.method = method
511
+ context.path = path
512
+ context.query = query
513
+
514
+ # A block can be passed in to read the content directly from the response.
515
+ # We want to execute this block only when the response was actually
516
+ # successful. When it wasn't, we defer to the standard error handling as
517
+ # we have to read the body and parse the error JSON.
518
+ response_block =
519
+ if block_given?
520
+ lambda do |response|
521
+ response.read_body(&read_body_chunk_block) unless should_handle_as_error(response.code.to_i)
522
+ end
523
+ end
524
+
525
+ http_resp =
526
+ execute_request_with_rescues(base_url, headers, api_mode, usage, context) do
527
+ self.class
528
+ .default_connection_manager(config)
529
+ .execute_request(method, url,
530
+ body: body,
531
+ headers: headers,
532
+ query: query,
533
+ &response_block)
534
+ end
535
+
536
+ [http_resp, opts]
537
+ end
538
+
539
+ private def api_url(url, base_url)
540
+ base_url + url
541
+ end
542
+
543
+ private def check_api_key!(api_key)
544
+ unless api_key
545
+ raise AuthenticationError, "No API key provided. " \
546
+ 'Set your API key using "Stripe.api_key = <API-KEY>". ' \
547
+ "You can generate API keys from the Stripe web interface. " \
548
+ "See https://stripe.com/api for details, or email " \
549
+ "support@stripe.com if you have any questions."
550
+ end
551
+
552
+ return unless api_key =~ /\s/
553
+
554
+ raise AuthenticationError, "Your API key is invalid, as it contains " \
555
+ "whitespace. (HINT: You can double-check your API key from the " \
556
+ "Stripe web interface. See https://stripe.com/api for details, or " \
557
+ "email support@stripe.com if you have any questions.)"
558
+ end
559
+
560
+ # Encodes a set of body parameters using multipart if `Content-Type` is set
561
+ # for that, or standard form-encoding otherwise. Returns the encoded body
562
+ # and a version of the encoded body that's safe to be logged.
563
+ private def encode_body(body_params, headers, api_mode)
564
+ body = nil
565
+ flattened_params = Util.flatten_params(body_params, api_mode)
566
+
567
+ if headers["Content-Type"] == MultipartEncoder::MULTIPART_FORM_DATA
568
+ body, content_type = MultipartEncoder.encode(flattened_params)
569
+
570
+ # Set a new content type that also includes the multipart boundary.
571
+ # See `MultipartEncoder` for details.
572
+ headers["Content-Type"] = content_type
573
+
574
+ # `#to_s` any complex objects like files and the like to build output
575
+ # that's more conducive to logging.
576
+ flattened_params =
577
+ # https://go/j/RUN_DEVSDK-1956 - this is probably a bug
578
+ # once fixed, you can remove the exclusions referencing this ticket in .rubocop.yml
579
+ flattened_params.map { |k, v| [k, v.is_a?(String) ? v : v.to_s] }.to_h
580
+
581
+ elsif api_mode == :v2
582
+ body = JSON.generate(body_params)
583
+ headers["Content-Type"] = "application/json"
584
+ else
585
+ body = Util.encode_parameters(body_params, api_mode)
586
+ headers["Content-Type"] = "application/x-www-form-urlencoded"
587
+ end
588
+
589
+ body_log = if api_mode == :v2
590
+ body
591
+ else
592
+ # We don't use `Util.encode_parameters` partly as an optimization (to
593
+ # not redo work we've already done), and partly because the encoded
594
+ # forms of certain characters introduce a lot of visual noise and it's
595
+ # nice to have a clearer format for logs.
596
+ flattened_params.map { |k, v| "#{k}=#{v}" }.join("&")
597
+ end
598
+
599
+ [body, body_log]
600
+ end
601
+
602
+ private def should_handle_as_error(http_status)
603
+ http_status >= 400
604
+ end
605
+
606
+ private def execute_request_with_rescues(base_url, headers, api_mode, usage, context)
607
+ num_retries = 0
608
+
609
+ begin
610
+ request_start = nil
611
+ user_data = nil
612
+
613
+ log_request(context, num_retries)
614
+ user_data = notify_request_begin(context)
615
+
616
+ request_start = Util.monotonic_time
617
+ resp = yield
618
+ request_duration = Util.monotonic_time - request_start
619
+
620
+ http_status = resp.code.to_i
621
+ context = context.dup_from_response_headers(resp)
622
+
623
+ handle_error_response(resp, context, api_mode) if should_handle_as_error(http_status)
624
+
625
+ log_response(context, request_start, http_status, resp.body, resp)
626
+ notify_request_end(context, request_duration, http_status,
627
+ num_retries, user_data, resp, headers)
628
+
629
+ if config.enable_telemetry? && context.request_id
630
+ request_duration_ms = (request_duration * 1000).to_i
631
+ @last_request_metrics << StripeRequestMetrics.new(context.request_id, request_duration_ms, usage: usage)
632
+ end
633
+
634
+ # We rescue all exceptions from a request so that we have an easy spot to
635
+ # implement our retry logic across the board. We'll re-raise if it's a
636
+ # type of exception that we didn't expect to handle.
637
+ rescue StandardError => e
638
+ # If we modify context we copy it into a new variable so as not to
639
+ # taint the original on a retry.
640
+ error_context = context
641
+ http_status = nil
642
+ request_duration = Util.monotonic_time - request_start if request_start
643
+
644
+ if e.is_a?(Stripe::StripeError)
645
+ error_context = context.dup_from_response_headers(e.http_headers)
646
+ http_status = resp.code.to_i
647
+ log_response(error_context, request_start,
648
+ e.http_status, e.http_body, resp)
649
+ else
650
+ log_response_error(error_context, request_start, e)
651
+ end
652
+ notify_request_end(context, request_duration, http_status, num_retries,
653
+ user_data, resp, headers)
654
+
655
+ if self.class.should_retry?(e,
656
+ num_retries: num_retries,
657
+ config: config)
658
+ num_retries += 1
659
+ sleep self.class.sleep_time(num_retries, config: config)
660
+ retry
661
+ end
662
+
663
+ case e
664
+ when Stripe::StripeError
665
+ raise
666
+ when *NETWORK_ERROR_MESSAGES_MAP.keys
667
+ handle_network_error(e, error_context, num_retries, base_url)
668
+
669
+ # Only handle errors when we know we can do so, and re-raise otherwise.
670
+ # This should be pretty infrequent.
671
+ else # rubocop:todo Lint/DuplicateBranch
672
+ raise
673
+ end
674
+ end
675
+
676
+ resp
677
+ end
678
+
679
+ private def notify_request_begin(context)
680
+ return unless Instrumentation.any_subscribers?(:request_begin)
681
+
682
+ event = Instrumentation::RequestBeginEvent.new(
683
+ method: context.method,
684
+ path: context.path,
685
+ user_data: {}
686
+ )
687
+ Stripe::Instrumentation.notify(:request_begin, event)
688
+
689
+ # This field may be set in the `request_begin` callback. If so, we'll
690
+ # forward it onto `request_end`.
691
+ event.user_data
692
+ end
693
+
694
+ private def notify_request_end(context, duration, http_status, num_retries,
695
+ user_data, resp, headers)
696
+ return if !Instrumentation.any_subscribers?(:request_end) &&
697
+ !Instrumentation.any_subscribers?(:request)
698
+
699
+ request_context = Stripe::Instrumentation::RequestContext.new(
700
+ duration: duration,
701
+ context: context,
702
+ header: headers
703
+ )
704
+ response_context = Stripe::Instrumentation::ResponseContext.new(
705
+ http_status: http_status,
706
+ response: resp
707
+ )
708
+
709
+ event = Instrumentation::RequestEndEvent.new(
710
+ request_context: request_context,
711
+ response_context: response_context,
712
+ num_retries: num_retries,
713
+ user_data: user_data || {}
714
+ )
715
+ Stripe::Instrumentation.notify(:request_end, event)
716
+
717
+ # The name before `request_begin` was also added. Provided for backwards
718
+ # compatibility.
719
+ Stripe::Instrumentation.notify(:request, event)
720
+ end
721
+
722
+ private def general_api_error(status, body)
723
+ APIError.new("Invalid response object from API: #{body.inspect} " \
724
+ "(HTTP response code was #{status})",
725
+ http_status: status, http_body: body)
726
+ end
727
+
728
+ # Formats a plugin "app info" hash into a string that we can tack onto the
729
+ # end of a User-Agent string where it'll be fairly prominent in places like
730
+ # the Dashboard. Note that this formatting has been implemented to match
731
+ # other libraries, and shouldn't be changed without universal consensus.
732
+ private def format_app_info(info)
733
+ str = info[:name]
734
+ str = "#{str}/#{info[:version]}" unless info[:version].nil?
735
+ str = "#{str} (#{info[:url]})" unless info[:url].nil?
736
+ str
737
+ end
738
+
739
+ private def handle_error_response(http_resp, context, api_mode)
740
+ begin
741
+ resp = StripeResponse.from_net_http(http_resp)
742
+ error_data = resp.data[:error]
743
+
744
+ raise StripeError, "Indeterminate error" unless error_data
745
+ rescue JSON::ParserError, StripeError
746
+ raise general_api_error(http_resp.code.to_i, http_resp.body)
747
+ end
748
+
749
+ error = if error_data.is_a?(String)
750
+ specific_oauth_error(resp, error_data, context)
751
+ elsif api_mode == :v2
752
+ specific_v2_api_error(resp, error_data, context)
753
+ else
754
+ specific_api_error(resp, error_data, context)
755
+ end
756
+
757
+ error.response = resp
758
+ raise(error)
759
+ end
760
+
761
+ # Works around an edge case where we end up with both query parameters from
762
+ # parameteers and query parameters that were appended onto the end of the
763
+ # given path.
764
+ #
765
+ # Decode any parameters that were added onto the end of a path and add them
766
+ # to a unified query parameter hash so that all parameters end up in one
767
+ # place and all of them are correctly included in the final request.
768
+ private def merge_query_params(query_params, path)
769
+ u = URI.parse(path)
770
+
771
+ # Return original results if there was nothing to be found.
772
+ return query_params, path if u.query.nil?
773
+
774
+ query_params ||= {}
775
+ query_params = Hash[URI.decode_www_form(u.query)].merge(query_params)
776
+
777
+ # Reset the path minus any query parameters that were specified.
778
+ path = u.path
779
+
780
+ [query_params, path]
781
+ end
782
+
783
+ private def specific_api_error(resp, error_data, context)
784
+ Util.log_error("Stripe API error",
785
+ status: resp.http_status,
786
+ error_code: error_data[:code],
787
+ error_message: error_data[:message],
788
+ error_param: error_data[:param],
789
+ error_type: error_data[:type],
790
+ idempotency_key: context.idempotency_key,
791
+ request_id: context.request_id,
792
+ config: config)
793
+
794
+ # The standard set of arguments that can be used to initialize most of
795
+ # the exceptions.
796
+ opts = {
797
+ http_body: resp.http_body,
798
+ http_headers: resp.http_headers,
799
+ http_status: resp.http_status,
800
+ json_body: resp.data,
801
+ code: error_data[:code],
802
+ }
803
+
804
+ case resp.http_status
805
+ when 400, 404
806
+ case error_data[:type]
807
+ when "idempotency_error"
808
+ IdempotencyError.new(error_data[:message], **opts)
809
+ else
810
+ InvalidRequestError.new(
811
+ error_data[:message], error_data[:param],
812
+ **opts
813
+ )
814
+ end
815
+ when 401
816
+ AuthenticationError.new(error_data[:message], **opts)
817
+ when 402
818
+ CardError.new(
819
+ error_data[:message], error_data[:param],
820
+ **opts
821
+ )
822
+ when 403
823
+ PermissionError.new(error_data[:message], **opts)
824
+ when 429
825
+ RateLimitError.new(error_data[:message], **opts)
826
+ else
827
+ APIError.new(error_data[:message], **opts)
828
+ end
829
+ end
830
+
831
+ private def specific_v2_api_error(resp, error_data, context)
832
+ Util.log_error("Stripe v2 API error",
833
+ status: resp.http_status,
834
+ error_code: error_data[:code],
835
+ error_message: error_data[:message],
836
+ error_param: error_data[:param],
837
+ error_type: error_data[:type],
838
+ idempotency_key: context.idempotency_key,
839
+ request_id: context.request_id,
840
+ config: config)
841
+
842
+ # The standard set of arguments that can be used to initialize most of
843
+ # the exceptions.
844
+ opts = {
845
+ http_body: resp.http_body,
846
+ http_headers: resp.http_headers,
847
+ http_status: resp.http_status,
848
+ json_body: resp.data,
849
+ code: error_data[:code],
850
+ }
851
+
852
+ case error_data[:type]
853
+ when "idempotency_error"
854
+ IdempotencyError.new(error_data[:message], **opts)
855
+ # switch cases: The beginning of the section generated from our OpenAPI spec
856
+ when "already_canceled"
857
+ AlreadyCanceledError.new(error_data[:message], **opts)
858
+ when "already_exists"
859
+ AlreadyExistsError.new(error_data[:message], **opts)
860
+ when "blocked_by_stripe"
861
+ BlockedByStripeError.new(error_data[:message], **opts)
862
+ when "controlled_by_alternate_resource"
863
+ ControlledByAlternateResourceError.new(error_data[:message], **opts)
864
+ when "controlled_by_dashboard"
865
+ ControlledByDashboardError.new(error_data[:message], **opts)
866
+ when "feature_not_enabled"
867
+ FeatureNotEnabledError.new(error_data[:message], **opts)
868
+ when "financial_account_not_open"
869
+ FinancialAccountNotOpenError.new(error_data[:message], **opts)
870
+ when "insufficient_funds"
871
+ InsufficientFundsError.new(error_data[:message], **opts)
872
+ when "invalid_payment_method"
873
+
874
+ InvalidPaymentMethodError.new(
875
+ error_data[:message],
876
+ **opts,
877
+ invalid_param: error_data[:invalid_param]
878
+ )
879
+
880
+ when "invalid_payout_method"
881
+ InvalidPayoutMethodError.new(error_data[:message], **opts)
882
+ when "non_zero_balance"
883
+ NonZeroBalanceError.new(error_data[:message], **opts)
884
+ when "not_cancelable"
885
+ NotCancelableError.new(error_data[:message], **opts)
886
+ when "quota_exceeded"
887
+ QuotaExceededError.new(error_data[:message], **opts)
888
+ when "recipient_not_notifiable"
889
+ RecipientNotNotifiableError.new(error_data[:message], **opts)
890
+ when "temporary_session_expired"
891
+ TemporarySessionExpiredError.new(error_data[:message], **opts)
892
+ # switch cases: The end of the section generated from our OpenAPI spec
893
+ else
894
+ specific_api_error(resp, error_data, context)
895
+ end
896
+ end
897
+
898
+ # Attempts to look at a response's error code and return an OAuth error if
899
+ # one matches. Will return `nil` if the code isn't recognized.
900
+ private def specific_oauth_error(resp, error_code, context)
901
+ description = resp.data[:error_description] || error_code
902
+
903
+ Util.log_error("Stripe OAuth error",
904
+ status: resp.http_status,
905
+ error_code: error_code,
906
+ error_description: description,
907
+ idempotency_key: context.idempotency_key,
908
+ request_id: context.request_id,
909
+ config: config)
910
+
911
+ args = {
912
+ http_status: resp.http_status, http_body: resp.http_body,
913
+ json_body: resp.data, http_headers: resp.http_headers,
914
+ }
915
+
916
+ case error_code
917
+ when "invalid_client"
918
+ OAuth::InvalidClientError.new(error_code, description, **args)
919
+ when "invalid_grant"
920
+ OAuth::InvalidGrantError.new(error_code, description, **args)
921
+ when "invalid_request"
922
+ OAuth::InvalidRequestError.new(error_code, description, **args)
923
+ when "invalid_scope"
924
+ OAuth::InvalidScopeError.new(error_code, description, **args)
925
+ when "unsupported_grant_type"
926
+ OAuth::UnsupportedGrantTypeError.new(error_code, description, **args)
927
+ when "unsupported_response_type"
928
+ OAuth::UnsupportedResponseTypeError.new(error_code, description, **args)
929
+ else
930
+ # We'd prefer that all errors are typed, but we create a generic
931
+ # OAuthError in case we run into a code that we don't recognize.
932
+ OAuth::OAuthError.new(error_code, description, **args)
933
+ end
934
+ end
935
+
936
+ private def handle_network_error(error, context, num_retries,
937
+ base_url)
938
+ Util.log_error("Stripe network error",
939
+ error_message: error.message,
940
+ idempotency_key: context.idempotency_key,
941
+ request_id: context.request_id,
942
+ config: config)
943
+
944
+ errors, message = NETWORK_ERROR_MESSAGES_MAP.detect do |(e, _)|
945
+ error.is_a?(e)
946
+ end
947
+
948
+ if errors.nil?
949
+ message = "Unexpected error #{error.class.name} communicating " \
950
+ "with Stripe. Please let us know at support@stripe.com."
951
+ end
952
+
953
+ message %= base_url
954
+
955
+ message += " Request was retried #{num_retries} times." if num_retries > 0
956
+
957
+ raise APIConnectionError,
958
+ message + "\n\n(Network error: #{error.message})"
959
+ end
960
+
961
+ private def request_headers(method, api_mode, req_opts)
962
+ user_agent = "Stripe/#{api_mode} RubyBindings/#{Stripe::VERSION}"
963
+ user_agent += " " + format_app_info(Stripe.app_info) unless Stripe.app_info.nil?
964
+
965
+ headers = {
966
+ "User-Agent" => user_agent,
967
+ "Authorization" => "Bearer #{req_opts[:api_key]}",
968
+ }
969
+
970
+ if config.enable_telemetry?
971
+ begin
972
+ headers["X-Stripe-Client-Telemetry"] = JSON.generate(
973
+ last_request_metrics: @last_request_metrics.pop(true)&.payload
974
+ )
975
+ rescue ThreadError
976
+ # last_request_metrics is best effort, ignore failures when queue
977
+ # is empty. should fail if this is the first request ever sent
978
+ # on a requestor
979
+ end
980
+ end
981
+
982
+ headers["Idempotency-Key"] = req_opts[:idempotency_key] if req_opts[:idempotency_key]
983
+ # It is only safe to retry network failures on post and delete
984
+ # requests if we add an Idempotency-Key header
985
+ if %i[post delete].include?(method) && (api_mode == :v2 || config.max_network_retries > 0)
986
+ headers["Idempotency-Key"] ||= SecureRandom.uuid
987
+ end
988
+
989
+ headers["Stripe-Version"] = req_opts[:stripe_version] if req_opts[:stripe_version]
990
+ headers["Stripe-Account"] = req_opts[:stripe_account] if req_opts[:stripe_account]
991
+ headers["Stripe-Context"] = req_opts[:stripe_context] if req_opts[:stripe_context]
992
+
993
+ user_agent = @system_profiler.user_agent
994
+ begin
995
+ headers.update(
996
+ "X-Stripe-Client-User-Agent" => JSON.generate(user_agent)
997
+ )
998
+ rescue StandardError => e
999
+ headers.update(
1000
+ "X-Stripe-Client-Raw-User-Agent" => user_agent.inspect,
1001
+ :error => "#{e} (#{e.class})"
1002
+ )
1003
+ end
1004
+
1005
+ headers.update(req_opts[:headers])
1006
+ end
1007
+
1008
+ private def log_request(context, num_retries)
1009
+ Util.log_info("Request to Stripe API",
1010
+ account: context.account,
1011
+ api_version: context.api_version,
1012
+ idempotency_key: context.idempotency_key,
1013
+ method: context.method,
1014
+ num_retries: num_retries,
1015
+ path: context.path,
1016
+ config: config)
1017
+ Util.log_debug("Request details",
1018
+ body: context.body,
1019
+ idempotency_key: context.idempotency_key,
1020
+ query: context.query,
1021
+ config: config,
1022
+ process_id: Process.pid,
1023
+ thread_object_id: Thread.current.object_id,
1024
+ log_timestamp: Util.monotonic_time)
1025
+ end
1026
+
1027
+ private def log_response(context, request_start, status, body, resp)
1028
+ Util.log_info("Response from Stripe API",
1029
+ account: context.account,
1030
+ api_version: context.api_version,
1031
+ elapsed: Util.monotonic_time - request_start,
1032
+ idempotency_key: context.idempotency_key,
1033
+ method: context.method,
1034
+ path: context.path,
1035
+ request_id: context.request_id,
1036
+ status: status,
1037
+ config: config)
1038
+ Util.log_debug("Response details",
1039
+ body: body,
1040
+ idempotency_key: context.idempotency_key,
1041
+ request_id: context.request_id,
1042
+ config: config,
1043
+ process_id: Process.pid,
1044
+ thread_object_id: Thread.current.object_id,
1045
+ response_object_id: resp.object_id,
1046
+ log_timestamp: Util.monotonic_time)
1047
+
1048
+ return unless context.request_id
1049
+
1050
+ Util.log_debug("Dashboard link for request",
1051
+ idempotency_key: context.idempotency_key,
1052
+ request_id: context.request_id,
1053
+ url: Util.request_id_dashboard_url(context.request_id,
1054
+ context.api_key),
1055
+ config: config)
1056
+ end
1057
+
1058
+ private def log_response_error(context, request_start, error)
1059
+ elapsed = request_start ? Util.monotonic_time - request_start : nil
1060
+ Util.log_error("Request error",
1061
+ elapsed: elapsed,
1062
+ error_message: error.message,
1063
+ idempotency_key: context.idempotency_key,
1064
+ method: context.method,
1065
+ path: context.path,
1066
+ config: config)
1067
+ end
1068
+
1069
+ # RequestLogContext stores information about a request that's begin made so
1070
+ # that we can log certain information. It's useful because it means that we
1071
+ # don't have to pass around as many parameters.
1072
+ class RequestLogContext
1073
+ attr_accessor :body, :account, :api_key, :api_version, :idempotency_key, :method, :path, :query, :request_id
1074
+
1075
+ # The idea with this method is that we might want to update some of
1076
+ # context information because a response that we've received from the API
1077
+ # contains information that's more authoritative than what we started
1078
+ # with for a request. For example, we should trust whatever came back in
1079
+ # a `Stripe-Version` header beyond what configuration information that we
1080
+ # might have had available.
1081
+ def dup_from_response_headers(headers)
1082
+ context = dup
1083
+ context.account = headers["Stripe-Account"]
1084
+ context.api_version = headers["Stripe-Version"]
1085
+ context.idempotency_key = headers["Idempotency-Key"]
1086
+ context.request_id = headers["Request-Id"]
1087
+ context
1088
+ end
1089
+ end
1090
+
1091
+ # SystemProfiler extracts information about the system that we're running
1092
+ # in so that we can generate a rich user agent header to help debug
1093
+ # integrations.
1094
+ class SystemProfiler
1095
+ def self.uname
1096
+ if ::File.exist?("/proc/version")
1097
+ ::File.read("/proc/version").strip
1098
+ else
1099
+ case RbConfig::CONFIG["host_os"]
1100
+ when /linux|darwin|bsd|sunos|solaris|cygwin/i
1101
+ uname_from_system
1102
+ when /mswin|mingw/i
1103
+ uname_from_system_ver
1104
+ else
1105
+ "unknown platform"
1106
+ end
1107
+ end
1108
+ end
1109
+
1110
+ def self.uname_from_system
1111
+ (`uname -a 2>/dev/null` || "").strip
1112
+ rescue Errno::ENOENT
1113
+ "uname executable not found"
1114
+ rescue Errno::ENOMEM # couldn't create subprocess
1115
+ "uname lookup failed"
1116
+ end
1117
+
1118
+ def self.uname_from_system_ver
1119
+ (`ver` || "").strip
1120
+ rescue Errno::ENOENT
1121
+ "ver executable not found"
1122
+ rescue Errno::ENOMEM # couldn't create subprocess
1123
+ "uname lookup failed"
1124
+ end
1125
+
1126
+ def initialize
1127
+ @uname = self.class.uname
1128
+ end
1129
+
1130
+ def user_agent
1131
+ lang_version = "#{RUBY_VERSION} p#{RUBY_PATCHLEVEL} " \
1132
+ "(#{RUBY_RELEASE_DATE})"
1133
+
1134
+ {
1135
+ application: Stripe.app_info,
1136
+ bindings_version: Stripe::VERSION,
1137
+ lang: "ruby",
1138
+ lang_version: lang_version,
1139
+ platform: RUBY_PLATFORM,
1140
+ engine: defined?(RUBY_ENGINE) ? RUBY_ENGINE : "",
1141
+ publisher: "stripe",
1142
+ uname: @uname,
1143
+ hostname: Socket.gethostname,
1144
+ }.delete_if { |_k, v| v.nil? }
1145
+ end
1146
+ end
1147
+
1148
+ # StripeRequestMetrics tracks metadata to be reported to stripe for metrics
1149
+ # collection
1150
+ class StripeRequestMetrics
1151
+ # The Stripe request ID of the response.
1152
+ attr_accessor :request_id
1153
+
1154
+ # Request duration in milliseconds
1155
+ attr_accessor :request_duration_ms
1156
+
1157
+ # list of names of tracked behaviors associated with this request
1158
+ attr_accessor :usage
1159
+
1160
+ def initialize(request_id, request_duration_ms, usage: [])
1161
+ self.request_id = request_id
1162
+ self.request_duration_ms = request_duration_ms
1163
+ self.usage = usage
1164
+ end
1165
+
1166
+ def payload
1167
+ ret = { request_id: request_id, request_duration_ms: request_duration_ms }
1168
+ ret[:usage] = usage if !usage.nil? && !usage.empty?
1169
+ ret
1170
+ end
1171
+ end
1172
+ end
1173
+ end