straddle 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +127 -0
  3. data/README.md +32 -1
  4. data/lib/straddle/client.rb +49 -1
  5. data/lib/straddle/internal/transport/base_client.rb +5 -0
  6. data/lib/straddle/internal/transport/pooled_net_requester.rb +13 -11
  7. data/lib/straddle/internal/util.rb +61 -10
  8. data/lib/straddle/models/bridge/link_create_paykey_response.rb +8 -0
  9. data/lib/straddle/models/bridge/link_create_tan_response.rb +8 -0
  10. data/lib/straddle/models/charge_cancel_params.rb +8 -1
  11. data/lib/straddle/models/charge_create_params.rb +22 -4
  12. data/lib/straddle/models/charge_get_params.rb +7 -1
  13. data/lib/straddle/models/charge_hold_params.rb +8 -1
  14. data/lib/straddle/models/charge_release_params.rb +8 -1
  15. data/lib/straddle/models/charge_unmask_params.rb +7 -1
  16. data/lib/straddle/models/charge_unmask_response.rb +190 -5
  17. data/lib/straddle/models/charge_update_params.rb +11 -4
  18. data/lib/straddle/models/charge_v1.rb +188 -5
  19. data/lib/straddle/models/customer_delete_params.rb +7 -1
  20. data/lib/straddle/models/customer_get_params.rb +7 -1
  21. data/lib/straddle/models/customer_unmasked_params.rb +7 -1
  22. data/lib/straddle/models/customer_update_params.rb +8 -1
  23. data/lib/straddle/models/customers/review_decision_params.rb +8 -1
  24. data/lib/straddle/models/customers/review_get_params.rb +7 -1
  25. data/lib/straddle/models/customers/review_refresh_review_params.rb +7 -1
  26. data/lib/straddle/models/embed/account_get_params.rb +11 -1
  27. data/lib/straddle/models/embed/account_list_params.rb +8 -1
  28. data/lib/straddle/models/embed/account_onboard_params.rb +7 -1
  29. data/lib/straddle/models/embed/account_paged_v1.rb +4 -0
  30. data/lib/straddle/models/embed/account_simulate_params.rb +7 -1
  31. data/lib/straddle/models/embed/account_update_params.rb +8 -1
  32. data/lib/straddle/models/embed/account_v1.rb +4 -0
  33. data/lib/straddle/models/embed/accounts/capability_request_create_params.rb +8 -1
  34. data/lib/straddle/models/embed/accounts/capability_request_list_params.rb +8 -1
  35. data/lib/straddle/models/embed/accounts/capability_request_paged_v1.rb +9 -1
  36. data/lib/straddle/models/embed/address_v1.rb +14 -38
  37. data/lib/straddle/models/embed/linked_bank_account_cancel_params.rb +7 -1
  38. data/lib/straddle/models/embed/linked_bank_account_get_params.rb +7 -1
  39. data/lib/straddle/models/embed/linked_bank_account_unmask_params.rb +7 -1
  40. data/lib/straddle/models/embed/linked_bank_account_update_params.rb +8 -1
  41. data/lib/straddle/models/embed/organization_get_params.rb +7 -1
  42. data/lib/straddle/models/embed/representative.rb +2 -2
  43. data/lib/straddle/models/embed/representative_create_params.rb +2 -2
  44. data/lib/straddle/models/embed/representative_get_params.rb +7 -1
  45. data/lib/straddle/models/embed/representative_paged.rb +2 -2
  46. data/lib/straddle/models/embed/representative_unmask_params.rb +7 -1
  47. data/lib/straddle/models/embed/representative_update_params.rb +10 -3
  48. data/lib/straddle/models/funding_event_get_params.rb +7 -1
  49. data/lib/straddle/models/funding_event_list_params.rb +105 -1
  50. data/lib/straddle/models/funding_event_summary_item_v1.rb +128 -1
  51. data/lib/straddle/models/funding_event_summary_paged_v1.rb +128 -1
  52. data/lib/straddle/models/paykey_cancel_params.rb +7 -1
  53. data/lib/straddle/models/paykey_get_params.rb +7 -1
  54. data/lib/straddle/models/paykey_list_params.rb +40 -1
  55. data/lib/straddle/models/paykey_reveal_params.rb +7 -1
  56. data/lib/straddle/models/paykey_reveal_response.rb +8 -0
  57. data/lib/straddle/models/paykey_summary_paged_v1.rb +19 -1
  58. data/lib/straddle/models/paykey_unmasked_params.rb +7 -1
  59. data/lib/straddle/models/paykey_unmasked_v1.rb +8 -0
  60. data/lib/straddle/models/paykey_update_balance_params.rb +7 -1
  61. data/lib/straddle/models/paykey_v1.rb +19 -1
  62. data/lib/straddle/models/paykeys/review_decision_params.rb +7 -1
  63. data/lib/straddle/models/paykeys/review_get_params.rb +7 -1
  64. data/lib/straddle/models/paykeys/review_get_response.rb +19 -4
  65. data/lib/straddle/models/paykeys/review_refresh_review_params.rb +7 -1
  66. data/lib/straddle/models/payment_list_params.rb +71 -1
  67. data/lib/straddle/models/payment_summary_paged_v1.rb +110 -4
  68. data/lib/straddle/models/payout_cancel_params.rb +8 -1
  69. data/lib/straddle/models/payout_create_params.rb +22 -4
  70. data/lib/straddle/models/payout_get_params.rb +7 -1
  71. data/lib/straddle/models/payout_hold_params.rb +8 -1
  72. data/lib/straddle/models/payout_release_params.rb +8 -1
  73. data/lib/straddle/models/payout_unmask_params.rb +7 -1
  74. data/lib/straddle/models/payout_unmask_response.rb +193 -5
  75. data/lib/straddle/models/payout_update_params.rb +11 -4
  76. data/lib/straddle/models/payout_upload_authorization_document_params.rb +57 -0
  77. data/lib/straddle/models/payout_v1.rb +188 -5
  78. data/lib/straddle/models/status_details_v1.rb +7 -0
  79. data/lib/straddle/models.rb +2 -0
  80. data/lib/straddle/resources/bridge/link.rb +12 -6
  81. data/lib/straddle/resources/bridge.rb +13 -1
  82. data/lib/straddle/resources/charges.rb +13 -8
  83. data/lib/straddle/resources/customers/review.rb +7 -1
  84. data/lib/straddle/resources/customers.rb +23 -10
  85. data/lib/straddle/resources/embed/accounts/capability_requests.rb +9 -4
  86. data/lib/straddle/resources/embed/accounts.rb +29 -15
  87. data/lib/straddle/resources/embed/linked_bank_accounts.rb +11 -6
  88. data/lib/straddle/resources/embed/organizations.rb +7 -2
  89. data/lib/straddle/resources/embed/representatives.rb +15 -8
  90. data/lib/straddle/resources/embed.rb +19 -0
  91. data/lib/straddle/resources/funding_events.rb +22 -3
  92. data/lib/straddle/resources/paykeys/review.rb +7 -2
  93. data/lib/straddle/resources/paykeys.rb +42 -11
  94. data/lib/straddle/resources/payments.rb +30 -6
  95. data/lib/straddle/resources/payouts.rb +60 -7
  96. data/lib/straddle/version.rb +1 -1
  97. data/lib/straddle.rb +2 -0
  98. data/manifest.yaml +1 -0
  99. data/rbi/straddle/client.rbi +34 -0
  100. data/rbi/straddle/internal/util.rbi +29 -1
  101. data/rbi/straddle/models/bridge/link_create_paykey_response.rbi +40 -0
  102. data/rbi/straddle/models/bridge/link_create_tan_response.rbi +40 -0
  103. data/rbi/straddle/models/charge_cancel_params.rbi +6 -0
  104. data/rbi/straddle/models/charge_create_params.rbi +29 -3
  105. data/rbi/straddle/models/charge_get_params.rbi +6 -0
  106. data/rbi/straddle/models/charge_hold_params.rbi +6 -0
  107. data/rbi/straddle/models/charge_release_params.rbi +6 -0
  108. data/rbi/straddle/models/charge_unmask_params.rbi +6 -0
  109. data/rbi/straddle/models/charge_unmask_response.rbi +396 -6
  110. data/rbi/straddle/models/charge_update_params.rbi +9 -3
  111. data/rbi/straddle/models/charge_v1.rbi +364 -6
  112. data/rbi/straddle/models/customer_delete_params.rbi +6 -0
  113. data/rbi/straddle/models/customer_get_params.rbi +6 -0
  114. data/rbi/straddle/models/customer_unmasked_params.rbi +6 -0
  115. data/rbi/straddle/models/customer_update_params.rbi +6 -0
  116. data/rbi/straddle/models/customers/review_decision_params.rbi +6 -0
  117. data/rbi/straddle/models/customers/review_get_params.rbi +6 -0
  118. data/rbi/straddle/models/customers/review_refresh_review_params.rbi +6 -0
  119. data/rbi/straddle/models/embed/account_get_params.rbi +13 -1
  120. data/rbi/straddle/models/embed/account_list_params.rbi +9 -0
  121. data/rbi/straddle/models/embed/account_onboard_params.rbi +6 -0
  122. data/rbi/straddle/models/embed/account_paged_v1.rbi +20 -0
  123. data/rbi/straddle/models/embed/account_simulate_params.rbi +6 -0
  124. data/rbi/straddle/models/embed/account_update_params.rbi +6 -0
  125. data/rbi/straddle/models/embed/account_v1.rbi +20 -0
  126. data/rbi/straddle/models/embed/accounts/capability_request_create_params.rbi +6 -0
  127. data/rbi/straddle/models/embed/accounts/capability_request_list_params.rbi +6 -0
  128. data/rbi/straddle/models/embed/accounts/capability_request_paged_v1.rbi +8 -0
  129. data/rbi/straddle/models/embed/address_v1.rbi +18 -42
  130. data/rbi/straddle/models/embed/linked_bank_account_cancel_params.rbi +6 -0
  131. data/rbi/straddle/models/embed/linked_bank_account_get_params.rbi +11 -1
  132. data/rbi/straddle/models/embed/linked_bank_account_unmask_params.rbi +11 -1
  133. data/rbi/straddle/models/embed/linked_bank_account_update_params.rbi +6 -0
  134. data/rbi/straddle/models/embed/organization_get_params.rbi +11 -1
  135. data/rbi/straddle/models/embed/representative.rbi +2 -2
  136. data/rbi/straddle/models/embed/representative_create_params.rbi +2 -2
  137. data/rbi/straddle/models/embed/representative_get_params.rbi +11 -1
  138. data/rbi/straddle/models/embed/representative_paged.rbi +2 -2
  139. data/rbi/straddle/models/embed/representative_unmask_params.rbi +11 -1
  140. data/rbi/straddle/models/embed/representative_update_params.rbi +8 -2
  141. data/rbi/straddle/models/funding_event_get_params.rbi +6 -0
  142. data/rbi/straddle/models/funding_event_list_params.rbi +333 -0
  143. data/rbi/straddle/models/funding_event_summary_item_v1.rbi +392 -0
  144. data/rbi/straddle/models/funding_event_summary_paged_v1.rbi +393 -0
  145. data/rbi/straddle/models/paykey_cancel_params.rbi +6 -0
  146. data/rbi/straddle/models/paykey_get_params.rbi +6 -0
  147. data/rbi/straddle/models/paykey_list_params.rbi +52 -0
  148. data/rbi/straddle/models/paykey_reveal_params.rbi +6 -0
  149. data/rbi/straddle/models/paykey_reveal_response.rbi +40 -0
  150. data/rbi/straddle/models/paykey_summary_paged_v1.rbi +55 -3
  151. data/rbi/straddle/models/paykey_unmasked_params.rbi +6 -0
  152. data/rbi/straddle/models/paykey_unmasked_v1.rbi +40 -0
  153. data/rbi/straddle/models/paykey_update_balance_params.rbi +6 -0
  154. data/rbi/straddle/models/paykey_v1.rbi +52 -3
  155. data/rbi/straddle/models/paykeys/review_decision_params.rbi +6 -0
  156. data/rbi/straddle/models/paykeys/review_get_params.rbi +6 -0
  157. data/rbi/straddle/models/paykeys/review_get_response.rbi +55 -18
  158. data/rbi/straddle/models/paykeys/review_refresh_review_params.rbi +6 -0
  159. data/rbi/straddle/models/payment_list_params.rbi +126 -0
  160. data/rbi/straddle/models/payment_summary_paged_v1.rbi +214 -6
  161. data/rbi/straddle/models/payout_cancel_params.rbi +6 -0
  162. data/rbi/straddle/models/payout_create_params.rbi +29 -3
  163. data/rbi/straddle/models/payout_get_params.rbi +6 -0
  164. data/rbi/straddle/models/payout_hold_params.rbi +6 -0
  165. data/rbi/straddle/models/payout_release_params.rbi +6 -0
  166. data/rbi/straddle/models/payout_unmask_params.rbi +6 -0
  167. data/rbi/straddle/models/payout_unmask_response.rbi +393 -3
  168. data/rbi/straddle/models/payout_update_params.rbi +9 -3
  169. data/rbi/straddle/models/payout_upload_authorization_document_params.rbi +88 -0
  170. data/rbi/straddle/models/payout_v1.rbi +361 -3
  171. data/rbi/straddle/models/status_details_v1.rbi +29 -0
  172. data/rbi/straddle/models.rbi +3 -0
  173. data/rbi/straddle/resources/bridge/link.rbi +12 -6
  174. data/rbi/straddle/resources/bridge.rbi +13 -1
  175. data/rbi/straddle/resources/charges.rbi +13 -8
  176. data/rbi/straddle/resources/customers/review.rbi +7 -1
  177. data/rbi/straddle/resources/customers.rbi +20 -8
  178. data/rbi/straddle/resources/embed/accounts/capability_requests.rbi +6 -2
  179. data/rbi/straddle/resources/embed/accounts.rbi +22 -10
  180. data/rbi/straddle/resources/embed/linked_bank_accounts.rbi +8 -4
  181. data/rbi/straddle/resources/embed/organizations.rbi +4 -0
  182. data/rbi/straddle/resources/embed/representatives.rbi +12 -6
  183. data/rbi/straddle/resources/embed.rbi +19 -0
  184. data/rbi/straddle/resources/funding_events.rbi +27 -0
  185. data/rbi/straddle/resources/paykeys/review.rbi +7 -2
  186. data/rbi/straddle/resources/paykeys.rbi +32 -8
  187. data/rbi/straddle/resources/payments.rbi +28 -3
  188. data/rbi/straddle/resources/payouts.rbi +44 -7
  189. data/sig/straddle/internal/util.rbs +14 -0
  190. data/sig/straddle/models/bridge/link_create_paykey_response.rbs +17 -1
  191. data/sig/straddle/models/bridge/link_create_tan_response.rbs +17 -1
  192. data/sig/straddle/models/charge_cancel_params.rbs +5 -0
  193. data/sig/straddle/models/charge_create_params.rbs +18 -4
  194. data/sig/straddle/models/charge_get_params.rbs +5 -0
  195. data/sig/straddle/models/charge_hold_params.rbs +5 -0
  196. data/sig/straddle/models/charge_release_params.rbs +5 -0
  197. data/sig/straddle/models/charge_unmask_params.rbs +5 -0
  198. data/sig/straddle/models/charge_unmask_response.rbs +166 -7
  199. data/sig/straddle/models/charge_update_params.rbs +9 -4
  200. data/sig/straddle/models/charge_v1.rbs +166 -7
  201. data/sig/straddle/models/customer_delete_params.rbs +5 -0
  202. data/sig/straddle/models/customer_get_params.rbs +5 -0
  203. data/sig/straddle/models/customer_unmasked_params.rbs +5 -0
  204. data/sig/straddle/models/customer_update_params.rbs +5 -0
  205. data/sig/straddle/models/customers/review_decision_params.rbs +5 -0
  206. data/sig/straddle/models/customers/review_get_params.rbs +5 -0
  207. data/sig/straddle/models/customers/review_refresh_review_params.rbs +5 -0
  208. data/sig/straddle/models/embed/account_get_params.rbs +5 -1
  209. data/sig/straddle/models/embed/account_list_params.rbs +7 -0
  210. data/sig/straddle/models/embed/account_onboard_params.rbs +5 -0
  211. data/sig/straddle/models/embed/account_paged_v1.rbs +18 -2
  212. data/sig/straddle/models/embed/account_simulate_params.rbs +5 -0
  213. data/sig/straddle/models/embed/account_update_params.rbs +5 -0
  214. data/sig/straddle/models/embed/account_v1.rbs +18 -2
  215. data/sig/straddle/models/embed/accounts/capability_request_create_params.rbs +5 -0
  216. data/sig/straddle/models/embed/accounts/capability_request_list_params.rbs +5 -0
  217. data/sig/straddle/models/embed/accounts/capability_request_paged_v1.rbs +5 -0
  218. data/sig/straddle/models/embed/address_v1.rbs +12 -27
  219. data/sig/straddle/models/embed/linked_bank_account_cancel_params.rbs +10 -1
  220. data/sig/straddle/models/embed/linked_bank_account_get_params.rbs +9 -1
  221. data/sig/straddle/models/embed/linked_bank_account_unmask_params.rbs +9 -1
  222. data/sig/straddle/models/embed/linked_bank_account_update_params.rbs +5 -0
  223. data/sig/straddle/models/embed/organization_get_params.rbs +5 -1
  224. data/sig/straddle/models/embed/representative_get_params.rbs +9 -1
  225. data/sig/straddle/models/embed/representative_unmask_params.rbs +9 -1
  226. data/sig/straddle/models/embed/representative_update_params.rbs +5 -0
  227. data/sig/straddle/models/funding_event_get_params.rbs +5 -0
  228. data/sig/straddle/models/funding_event_list_params.rbs +125 -0
  229. data/sig/straddle/models/funding_event_summary_item_v1.rbs +164 -0
  230. data/sig/straddle/models/funding_event_summary_paged_v1.rbs +164 -0
  231. data/sig/straddle/models/paykey_cancel_params.rbs +5 -0
  232. data/sig/straddle/models/paykey_get_params.rbs +5 -0
  233. data/sig/straddle/models/paykey_list_params.rbs +31 -1
  234. data/sig/straddle/models/paykey_reveal_params.rbs +5 -0
  235. data/sig/straddle/models/paykey_reveal_response.rbs +17 -1
  236. data/sig/straddle/models/paykey_summary_paged_v1.rbs +25 -4
  237. data/sig/straddle/models/paykey_unmasked_params.rbs +5 -0
  238. data/sig/straddle/models/paykey_unmasked_v1.rbs +17 -1
  239. data/sig/straddle/models/paykey_update_balance_params.rbs +5 -0
  240. data/sig/straddle/models/paykey_v1.rbs +25 -4
  241. data/sig/straddle/models/paykeys/review_decision_params.rbs +5 -0
  242. data/sig/straddle/models/paykeys/review_get_params.rbs +5 -0
  243. data/sig/straddle/models/paykeys/review_get_response.rbs +28 -10
  244. data/sig/straddle/models/paykeys/review_refresh_review_params.rbs +5 -0
  245. data/sig/straddle/models/payment_list_params.rbs +80 -2
  246. data/sig/straddle/models/payment_summary_paged_v1.rbs +89 -7
  247. data/sig/straddle/models/payout_cancel_params.rbs +5 -0
  248. data/sig/straddle/models/payout_create_params.rbs +18 -4
  249. data/sig/straddle/models/payout_get_params.rbs +5 -0
  250. data/sig/straddle/models/payout_hold_params.rbs +5 -0
  251. data/sig/straddle/models/payout_release_params.rbs +5 -0
  252. data/sig/straddle/models/payout_unmask_params.rbs +5 -0
  253. data/sig/straddle/models/payout_unmask_response.rbs +163 -4
  254. data/sig/straddle/models/payout_update_params.rbs +9 -4
  255. data/sig/straddle/models/payout_upload_authorization_document_params.rbs +59 -0
  256. data/sig/straddle/models/payout_v1.rbs +163 -4
  257. data/sig/straddle/models/status_details_v1.rbs +14 -0
  258. data/sig/straddle/models.rbs +2 -0
  259. data/sig/straddle/resources/charges.rbs +2 -2
  260. data/sig/straddle/resources/embed/accounts.rbs +1 -0
  261. data/sig/straddle/resources/funding_events.rbs +4 -0
  262. data/sig/straddle/resources/paykeys.rbs +4 -0
  263. data/sig/straddle/resources/payments.rbs +7 -0
  264. data/sig/straddle/resources/payouts.rbs +12 -2
  265. metadata +19 -2
@@ -2,6 +2,10 @@
2
2
 
3
3
  module Straddle
4
4
  module Resources
5
+ # Payouts represent transfers from Straddle to customer bank accounts. Create
6
+ # payouts to handle disbursements, process refunds, or manage marketplace
7
+ # settlements. Use payouts to send money quickly and securely with the most
8
+ # cost-effective rail automatically selected.
5
9
  class Payouts
6
10
  # Some parameter documentations has been truncated, see
7
11
  # {Straddle::Models::PayoutCreateParams} for more details.
@@ -14,7 +18,7 @@ module Straddle
14
18
  #
15
19
  # @param currency [String] Body param: The currency of the payout. Only USD is supported.
16
20
  #
17
- # @param description [String] Body param: An arbitrary description for the payout.
21
+ # @param description [String, nil] Body param: An arbitrary description for the payout.
18
22
  #
19
23
  # @param device [Straddle::Models::DeviceInfoV1] Body param: Information about the device used when the customer authorized the p
20
24
  #
@@ -24,7 +28,7 @@ module Straddle
24
28
  #
25
29
  # @param payment_date [Date] Body param: The desired date on which the payout should be occur. For payouts, t
26
30
  #
27
- # @param config [Straddle::Models::PayoutCreateParams::Config] Body param:
31
+ # @param config [Straddle::Models::PayoutCreateParams::Config] Body param
28
32
  #
29
33
  # @param metadata [Hash{Symbol=>String}, nil] Body param: Up to 20 additional user-defined key-value pairs. Useful for storing
30
34
  #
@@ -68,11 +72,11 @@ module Straddle
68
72
  #
69
73
  # @overload update(id, amount:, description:, payment_date:, metadata: nil, correlation_id: nil, idempotency_key: nil, request_id: nil, straddle_account_id: nil, request_options: {})
70
74
  #
71
- # @param id [String] Path param:
75
+ # @param id [String] Path param
72
76
  #
73
77
  # @param amount [Integer] Body param: The amount of the payout in cents.
74
78
  #
75
- # @param description [String] Body param: An arbitrary description for the payout.
79
+ # @param description [String, nil] Body param: An arbitrary description for the payout.
76
80
  #
77
81
  # @param payment_date [Date] Body param: The desired date on which the payment should be occur. For payouts,
78
82
  #
@@ -118,7 +122,7 @@ module Straddle
118
122
  #
119
123
  # @overload cancel(id, reason:, correlation_id: nil, idempotency_key: nil, request_id: nil, straddle_account_id: nil, request_options: {})
120
124
  #
121
- # @param id [String] Path param:
125
+ # @param id [String] Path param
122
126
  #
123
127
  # @param reason [String] Body param: Details about why the payout status was updated.
124
128
  #
@@ -195,7 +199,7 @@ module Straddle
195
199
  #
196
200
  # @overload hold(id, reason:, correlation_id: nil, idempotency_key: nil, request_id: nil, straddle_account_id: nil, request_options: {})
197
201
  #
198
- # @param id [String] Path param:
202
+ # @param id [String] Path param
199
203
  #
200
204
  # @param reason [String] Body param: Details about why the payout status was updated.
201
205
  #
@@ -239,7 +243,7 @@ module Straddle
239
243
  #
240
244
  # @overload release(id, reason:, correlation_id: nil, idempotency_key: nil, request_id: nil, straddle_account_id: nil, request_options: {})
241
245
  #
242
- # @param id [String] Path param:
246
+ # @param id [String] Path param
243
247
  #
244
248
  # @param reason [String] Body param: Details about why the payout status was updated.
245
249
  #
@@ -307,6 +311,55 @@ module Straddle
307
311
  )
308
312
  end
309
313
 
314
+ # Some parameter documentations has been truncated, see
315
+ # {Straddle::Models::PayoutUploadAuthorizationDocumentParams} for more details.
316
+ #
317
+ # Uploads a document as proof of authorization for a payout. Uploading again adds
318
+ # another entry to documents rather than replacing the previous one.
319
+ #
320
+ # @overload upload_authorization_document(id, file:, correlation_id: nil, idempotency_key: nil, request_id: nil, straddle_account_id: nil, request_options: {})
321
+ #
322
+ # @param id [String] Path param
323
+ #
324
+ # @param file [Pathname, StringIO, IO, String, Straddle::FilePart] Body param: The document file to upload as proof of authorization for this payou
325
+ #
326
+ # @param correlation_id [String] Header param: Optional client generated identifier to trace and debug a series o
327
+ #
328
+ # @param idempotency_key [String] Header param: Optional client generated value to use for idempotent requests.
329
+ #
330
+ # @param request_id [String] Header param: Optional client generated identifier to trace and debug a request.
331
+ #
332
+ # @param straddle_account_id [String] Header param: For use by platforms to specify an account id and set scope of a r
333
+ #
334
+ # @param request_options [Straddle::RequestOptions, Hash{Symbol=>Object}, nil]
335
+ #
336
+ # @return [Straddle::Models::PayoutV1]
337
+ #
338
+ # @see Straddle::Models::PayoutUploadAuthorizationDocumentParams
339
+ def upload_authorization_document(id, params)
340
+ parsed, options = Straddle::PayoutUploadAuthorizationDocumentParams.dump_request(params)
341
+ header_params =
342
+ {
343
+ correlation_id: "correlation-id",
344
+ idempotency_key: "idempotency-key",
345
+ request_id: "request-id",
346
+ straddle_account_id: "straddle-account-id"
347
+ }
348
+ @client.request(
349
+ method: :post,
350
+ path: ["v1/payouts/%1$s/authorization", id],
351
+ headers: {
352
+ "content-type" => "multipart/form-data",
353
+ **parsed.slice(*header_params.keys)
354
+ }.transform_keys(
355
+ header_params
356
+ ),
357
+ body: parsed.except(*header_params.keys),
358
+ model: Straddle::PayoutV1,
359
+ options: options
360
+ )
361
+ end
362
+
310
363
  # @api private
311
364
  #
312
365
  # @param client [Straddle::Client]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Straddle
4
- VERSION = "0.3.0"
4
+ VERSION = "0.5.0"
5
5
  end
data/lib/straddle.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  # Standard libraries.
4
4
  # rubocop:disable Lint/RedundantRequireStatement
5
5
  require "English"
6
+ require "base64"
6
7
  require "cgi"
7
8
  require "date"
8
9
  require "erb"
@@ -155,6 +156,7 @@ require_relative "straddle/models/payout_release_params"
155
156
  require_relative "straddle/models/payout_unmask_params"
156
157
  require_relative "straddle/models/payout_unmask_response"
157
158
  require_relative "straddle/models/payout_update_params"
159
+ require_relative "straddle/models/payout_upload_authorization_document_params"
158
160
  require_relative "straddle/models/payout_v1"
159
161
  require_relative "straddle/models/report_create_total_customers_by_status_params"
160
162
  require_relative "straddle/models/report_create_total_customers_by_status_response"
data/manifest.yaml CHANGED
@@ -1,5 +1,6 @@
1
1
  dependencies:
2
2
  - English
3
+ - base64
3
4
  - cgi
4
5
  - date
5
6
  - erb
@@ -27,24 +27,58 @@ module Straddle
27
27
  sig { returns(Straddle::Resources::Embed) }
28
28
  attr_reader :embed
29
29
 
30
+ # Bridge provides a comprehensive suite of tools for connecting customer bank
31
+ # accounts. Use it to generate secure widget sessions for instant account
32
+ # verification, accept tokens from major providers like Plaid and Finicity, or
33
+ # verify accounts directly via our API. Bridge handles all sensitive banking
34
+ # credentials and ensures secure, compliant connections with support for 90% of US
35
+ # bank accounts.
30
36
  sig { returns(Straddle::Resources::Bridge) }
31
37
  attr_reader :bridge
32
38
 
39
+ # Customers represent the end users who send or receive payments through your
40
+ # integration. Each customer undergoes automatic identity verification and fraud
41
+ # screening upon creation. Use customers to track payment history, manage bank
42
+ # account connections, and maintain a secure record of all transactions associated
43
+ # with a user. Customers can be either individuals or businesses with appropriate
44
+ # compliance checks for each type.
33
45
  sig { returns(Straddle::Resources::Customers) }
34
46
  attr_reader :customers
35
47
 
48
+ # Paykeys are secure tokens that link verified customer identities to their bank
49
+ # accounts. Each Paykey includes built-in balance checking, fraud detection
50
+ # through LSTM machine learning models, and can be reused for subscriptions and
51
+ # recurring payments without storing sensitive data. Paykeys eliminate fraud by
52
+ # ensuring the person initiating payment owns the funding account.
36
53
  sig { returns(Straddle::Resources::Paykeys) }
37
54
  attr_reader :paykeys
38
55
 
56
+ # Charges represent attempts to debit money from a customer's bank account using a
57
+ # Paykey. Each charge includes automatic balance verification, real-time fraud
58
+ # screening, and multi-rail optimization and detailed status tracking throughout
59
+ # the payment lifecycle. Use charges to accept bank payments with confidence
60
+ # knowing every transaction is protected.
39
61
  sig { returns(Straddle::Resources::Charges) }
40
62
  attr_reader :charges
41
63
 
64
+ # Funding events represent all money movement between Straddle and an Account's
65
+ # external bank accounts. They are automatically generated when charges settle or
66
+ # payouts are initiated. Each event provides detailed tracking of settlement
67
+ # status, fee breakdowns, and reconciliation data across both incoming and
68
+ # outgoing transfers. Use funding events to monitor your platform's entire money
69
+ # movement lifecycle.
42
70
  sig { returns(Straddle::Resources::FundingEvents) }
43
71
  attr_reader :funding_events
44
72
 
73
+ # Payments provide endpoints to filter both Charges and Payouts with multiple
74
+ # different parameters.
45
75
  sig { returns(Straddle::Resources::Payments) }
46
76
  attr_reader :payments
47
77
 
78
+ # Payouts represent transfers from Straddle to customer bank accounts. Create
79
+ # payouts to handle disbursements, process refunds, or manage marketplace
80
+ # settlements. Use payouts to send money quickly and securely with the most
81
+ # cost-effective rail automatically selected.
48
82
  sig { returns(Straddle::Resources::Payouts) }
49
83
  attr_reader :payouts
50
84
 
@@ -148,12 +148,20 @@ module Straddle
148
148
  end
149
149
  end
150
150
 
151
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
152
+ RFC_3986_NOT_PCHARS = T.let(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/, Regexp)
153
+
151
154
  class << self
152
155
  # @api private
153
156
  sig { params(uri: URI::Generic).returns(String) }
154
157
  def uri_origin(uri)
155
158
  end
156
159
 
160
+ # @api private
161
+ sig { params(path: T.any(String, Integer)).returns(String) }
162
+ def encode_path(path)
163
+ end
164
+
157
165
  # @api private
158
166
  sig { params(path: T.any(String, T::Array[String])).returns(String) }
159
167
  def interpolate_path(path)
@@ -296,11 +304,31 @@ module Straddle
296
304
  end
297
305
 
298
306
  JSON_CONTENT =
299
- T.let(%r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}, Regexp)
307
+ T.let(%r{^application/(?:[a-zA-Z0-9.-]+\+)?json(?!l)}, Regexp)
300
308
  JSONL_CONTENT =
301
309
  T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp)
302
310
 
303
311
  class << self
312
+ # @api private
313
+ sig do
314
+ params(query: Straddle::Internal::AnyHash).returns(
315
+ Straddle::Internal::AnyHash
316
+ )
317
+ end
318
+ def encode_query_params(query)
319
+ end
320
+
321
+ # @api private
322
+ sig do
323
+ params(
324
+ collection: Straddle::Internal::AnyHash,
325
+ key: String,
326
+ element: T.anything
327
+ ).void
328
+ end
329
+ private def write_query_param_element!(collection, key, element)
330
+ end
331
+
304
332
  # @api private
305
333
  sig do
306
334
  params(
@@ -549,6 +549,11 @@ module Straddle
549
549
  :review,
550
550
  Straddle::Models::Bridge::LinkCreatePaykeyResponse::Data::Status::TaggedSymbol
551
551
  )
552
+ BLOCKED =
553
+ T.let(
554
+ :blocked,
555
+ Straddle::Models::Bridge::LinkCreatePaykeyResponse::Data::Status::TaggedSymbol
556
+ )
552
557
 
553
558
  sig do
554
559
  override.returns(
@@ -932,6 +937,41 @@ module Straddle
932
937
  :payout_refused,
933
938
  Straddle::Models::Bridge::LinkCreatePaykeyResponse::Data::StatusDetails::Reason::TaggedSymbol
934
939
  )
940
+ CANCEL_REQUEST =
941
+ T.let(
942
+ :cancel_request,
943
+ Straddle::Models::Bridge::LinkCreatePaykeyResponse::Data::StatusDetails::Reason::TaggedSymbol
944
+ )
945
+ FAILED_VERIFICATION =
946
+ T.let(
947
+ :failed_verification,
948
+ Straddle::Models::Bridge::LinkCreatePaykeyResponse::Data::StatusDetails::Reason::TaggedSymbol
949
+ )
950
+ REQUIRE_REVIEW =
951
+ T.let(
952
+ :require_review,
953
+ Straddle::Models::Bridge::LinkCreatePaykeyResponse::Data::StatusDetails::Reason::TaggedSymbol
954
+ )
955
+ BLOCKED_BY_SYSTEM =
956
+ T.let(
957
+ :blocked_by_system,
958
+ Straddle::Models::Bridge::LinkCreatePaykeyResponse::Data::StatusDetails::Reason::TaggedSymbol
959
+ )
960
+ WATCHTOWER_REVIEW =
961
+ T.let(
962
+ :watchtower_review,
963
+ Straddle::Models::Bridge::LinkCreatePaykeyResponse::Data::StatusDetails::Reason::TaggedSymbol
964
+ )
965
+ VALIDATING =
966
+ T.let(
967
+ :validating,
968
+ Straddle::Models::Bridge::LinkCreatePaykeyResponse::Data::StatusDetails::Reason::TaggedSymbol
969
+ )
970
+ AUTO_HOLD =
971
+ T.let(
972
+ :auto_hold,
973
+ Straddle::Models::Bridge::LinkCreatePaykeyResponse::Data::StatusDetails::Reason::TaggedSymbol
974
+ )
935
975
 
936
976
  sig do
937
977
  override.returns(
@@ -545,6 +545,11 @@ module Straddle
545
545
  :review,
546
546
  Straddle::Models::Bridge::LinkCreateTanResponse::Data::Status::TaggedSymbol
547
547
  )
548
+ BLOCKED =
549
+ T.let(
550
+ :blocked,
551
+ Straddle::Models::Bridge::LinkCreateTanResponse::Data::Status::TaggedSymbol
552
+ )
548
553
 
549
554
  sig do
550
555
  override.returns(
@@ -928,6 +933,41 @@ module Straddle
928
933
  :payout_refused,
929
934
  Straddle::Models::Bridge::LinkCreateTanResponse::Data::StatusDetails::Reason::TaggedSymbol
930
935
  )
936
+ CANCEL_REQUEST =
937
+ T.let(
938
+ :cancel_request,
939
+ Straddle::Models::Bridge::LinkCreateTanResponse::Data::StatusDetails::Reason::TaggedSymbol
940
+ )
941
+ FAILED_VERIFICATION =
942
+ T.let(
943
+ :failed_verification,
944
+ Straddle::Models::Bridge::LinkCreateTanResponse::Data::StatusDetails::Reason::TaggedSymbol
945
+ )
946
+ REQUIRE_REVIEW =
947
+ T.let(
948
+ :require_review,
949
+ Straddle::Models::Bridge::LinkCreateTanResponse::Data::StatusDetails::Reason::TaggedSymbol
950
+ )
951
+ BLOCKED_BY_SYSTEM =
952
+ T.let(
953
+ :blocked_by_system,
954
+ Straddle::Models::Bridge::LinkCreateTanResponse::Data::StatusDetails::Reason::TaggedSymbol
955
+ )
956
+ WATCHTOWER_REVIEW =
957
+ T.let(
958
+ :watchtower_review,
959
+ Straddle::Models::Bridge::LinkCreateTanResponse::Data::StatusDetails::Reason::TaggedSymbol
960
+ )
961
+ VALIDATING =
962
+ T.let(
963
+ :validating,
964
+ Straddle::Models::Bridge::LinkCreateTanResponse::Data::StatusDetails::Reason::TaggedSymbol
965
+ )
966
+ AUTO_HOLD =
967
+ T.let(
968
+ :auto_hold,
969
+ Straddle::Models::Bridge::LinkCreateTanResponse::Data::StatusDetails::Reason::TaggedSymbol
970
+ )
931
971
 
932
972
  sig do
933
973
  override.returns(
@@ -11,6 +11,9 @@ module Straddle
11
11
  T.any(Straddle::ChargeCancelParams, Straddle::Internal::AnyHash)
12
12
  end
13
13
 
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
14
17
  # Details about why the charge status was updated.
15
18
  sig { returns(T.nilable(String)) }
16
19
  attr_accessor :reason
@@ -41,6 +44,7 @@ module Straddle
41
44
 
42
45
  sig do
43
46
  params(
47
+ id: String,
44
48
  reason: T.nilable(String),
45
49
  correlation_id: String,
46
50
  idempotency_key: String,
@@ -50,6 +54,7 @@ module Straddle
50
54
  ).returns(T.attached_class)
51
55
  end
52
56
  def self.new(
57
+ id:,
53
58
  # Details about why the charge status was updated.
54
59
  reason: nil,
55
60
  correlation_id: nil,
@@ -63,6 +68,7 @@ module Straddle
63
68
  sig do
64
69
  override.returns(
65
70
  {
71
+ id: String,
66
72
  reason: T.nilable(String),
67
73
  correlation_id: String,
68
74
  idempotency_key: String,
@@ -33,7 +33,7 @@ module Straddle
33
33
  attr_accessor :currency
34
34
 
35
35
  # An arbitrary description for the charge.
36
- sig { returns(String) }
36
+ sig { returns(T.nilable(String)) }
37
37
  attr_accessor :description
38
38
 
39
39
  sig { returns(Straddle::DeviceInfoV1) }
@@ -91,7 +91,7 @@ module Straddle
91
91
  config: Straddle::ChargeCreateParams::Config::OrHash,
92
92
  consent_type: Straddle::ChargeCreateParams::ConsentType::OrSymbol,
93
93
  currency: String,
94
- description: String,
94
+ description: T.nilable(String),
95
95
  device: Straddle::DeviceInfoV1::OrHash,
96
96
  external_id: String,
97
97
  paykey: String,
@@ -144,7 +144,7 @@ module Straddle
144
144
  config: Straddle::ChargeCreateParams::Config,
145
145
  consent_type: Straddle::ChargeCreateParams::ConsentType::OrSymbol,
146
146
  currency: String,
147
- description: String,
147
+ description: T.nilable(String),
148
148
  device: Straddle::DeviceInfoV1,
149
149
  external_id: String,
150
150
  paykey: String,
@@ -176,6 +176,14 @@ module Straddle
176
176
  end
177
177
  attr_accessor :balance_check
178
178
 
179
+ # Defines whether to automatically place this charge on hold after being created.
180
+ sig { returns(T.nilable(T::Boolean)) }
181
+ attr_accessor :auto_hold
182
+
183
+ # The reason the charge is being automatically held on creation.
184
+ sig { returns(T.nilable(String)) }
185
+ attr_accessor :auto_hold_message
186
+
179
187
  # Payment will simulate processing if not Standard.
180
188
  sig do
181
189
  returns(
@@ -198,6 +206,8 @@ module Straddle
198
206
  params(
199
207
  balance_check:
200
208
  Straddle::ChargeCreateParams::Config::BalanceCheck::OrSymbol,
209
+ auto_hold: T.nilable(T::Boolean),
210
+ auto_hold_message: T.nilable(String),
201
211
  sandbox_outcome:
202
212
  Straddle::ChargeCreateParams::Config::SandboxOutcome::OrSymbol
203
213
  ).returns(T.attached_class)
@@ -205,6 +215,10 @@ module Straddle
205
215
  def self.new(
206
216
  # Defines whether to check the customer's balance before processing the charge.
207
217
  balance_check:,
218
+ # Defines whether to automatically place this charge on hold after being created.
219
+ auto_hold: nil,
220
+ # The reason the charge is being automatically held on creation.
221
+ auto_hold_message: nil,
208
222
  # Payment will simulate processing if not Standard.
209
223
  sandbox_outcome: nil
210
224
  )
@@ -215,6 +229,8 @@ module Straddle
215
229
  {
216
230
  balance_check:
217
231
  Straddle::ChargeCreateParams::Config::BalanceCheck::OrSymbol,
232
+ auto_hold: T.nilable(T::Boolean),
233
+ auto_hold_message: T.nilable(String),
218
234
  sandbox_outcome:
219
235
  Straddle::ChargeCreateParams::Config::SandboxOutcome::OrSymbol
220
236
  }
@@ -328,6 +344,16 @@ module Straddle
328
344
  :reversed_closed_bank_account,
329
345
  Straddle::ChargeCreateParams::Config::SandboxOutcome::TaggedSymbol
330
346
  )
347
+ FAILED_NOT_AUTHORIZED =
348
+ T.let(
349
+ :failed_not_authorized,
350
+ Straddle::ChargeCreateParams::Config::SandboxOutcome::TaggedSymbol
351
+ )
352
+ REVERSED_NOT_AUTHORIZED =
353
+ T.let(
354
+ :reversed_not_authorized,
355
+ Straddle::ChargeCreateParams::Config::SandboxOutcome::TaggedSymbol
356
+ )
331
357
 
332
358
  sig do
333
359
  override.returns(
@@ -11,6 +11,9 @@ module Straddle
11
11
  T.any(Straddle::ChargeGetParams, Straddle::Internal::AnyHash)
12
12
  end
13
13
 
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
14
17
  sig { returns(T.nilable(String)) }
15
18
  attr_reader :correlation_id
16
19
 
@@ -31,6 +34,7 @@ module Straddle
31
34
 
32
35
  sig do
33
36
  params(
37
+ id: String,
34
38
  correlation_id: String,
35
39
  request_id: String,
36
40
  straddle_account_id: String,
@@ -38,6 +42,7 @@ module Straddle
38
42
  ).returns(T.attached_class)
39
43
  end
40
44
  def self.new(
45
+ id:,
41
46
  correlation_id: nil,
42
47
  request_id: nil,
43
48
  straddle_account_id: nil,
@@ -48,6 +53,7 @@ module Straddle
48
53
  sig do
49
54
  override.returns(
50
55
  {
56
+ id: String,
51
57
  correlation_id: String,
52
58
  request_id: String,
53
59
  straddle_account_id: String,
@@ -11,6 +11,9 @@ module Straddle
11
11
  T.any(Straddle::ChargeHoldParams, Straddle::Internal::AnyHash)
12
12
  end
13
13
 
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
14
17
  # Details about why the charge status was updated.
15
18
  sig { returns(T.nilable(String)) }
16
19
  attr_accessor :reason
@@ -41,6 +44,7 @@ module Straddle
41
44
 
42
45
  sig do
43
46
  params(
47
+ id: String,
44
48
  reason: T.nilable(String),
45
49
  correlation_id: String,
46
50
  idempotency_key: String,
@@ -50,6 +54,7 @@ module Straddle
50
54
  ).returns(T.attached_class)
51
55
  end
52
56
  def self.new(
57
+ id:,
53
58
  # Details about why the charge status was updated.
54
59
  reason: nil,
55
60
  correlation_id: nil,
@@ -63,6 +68,7 @@ module Straddle
63
68
  sig do
64
69
  override.returns(
65
70
  {
71
+ id: String,
66
72
  reason: T.nilable(String),
67
73
  correlation_id: String,
68
74
  idempotency_key: String,
@@ -11,6 +11,9 @@ module Straddle
11
11
  T.any(Straddle::ChargeReleaseParams, Straddle::Internal::AnyHash)
12
12
  end
13
13
 
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
14
17
  # Details about why the charge status was updated.
15
18
  sig { returns(T.nilable(String)) }
16
19
  attr_accessor :reason
@@ -41,6 +44,7 @@ module Straddle
41
44
 
42
45
  sig do
43
46
  params(
47
+ id: String,
44
48
  reason: T.nilable(String),
45
49
  correlation_id: String,
46
50
  idempotency_key: String,
@@ -50,6 +54,7 @@ module Straddle
50
54
  ).returns(T.attached_class)
51
55
  end
52
56
  def self.new(
57
+ id:,
53
58
  # Details about why the charge status was updated.
54
59
  reason: nil,
55
60
  correlation_id: nil,
@@ -63,6 +68,7 @@ module Straddle
63
68
  sig do
64
69
  override.returns(
65
70
  {
71
+ id: String,
66
72
  reason: T.nilable(String),
67
73
  correlation_id: String,
68
74
  idempotency_key: String,
@@ -11,6 +11,9 @@ module Straddle
11
11
  T.any(Straddle::ChargeUnmaskParams, Straddle::Internal::AnyHash)
12
12
  end
13
13
 
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
14
17
  sig { returns(T.nilable(String)) }
15
18
  attr_reader :correlation_id
16
19
 
@@ -31,6 +34,7 @@ module Straddle
31
34
 
32
35
  sig do
33
36
  params(
37
+ id: String,
34
38
  correlation_id: String,
35
39
  request_id: String,
36
40
  straddle_account_id: String,
@@ -38,6 +42,7 @@ module Straddle
38
42
  ).returns(T.attached_class)
39
43
  end
40
44
  def self.new(
45
+ id:,
41
46
  correlation_id: nil,
42
47
  request_id: nil,
43
48
  straddle_account_id: nil,
@@ -48,6 +53,7 @@ module Straddle
48
53
  sig do
49
54
  override.returns(
50
55
  {
56
+ id: String,
51
57
  correlation_id: String,
52
58
  request_id: String,
53
59
  straddle_account_id: String,