straddle 0.2.0 → 0.4.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 (284) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +97 -0
  3. data/README.md +10 -1
  4. data/lib/straddle/client.rb +34 -0
  5. data/lib/straddle/internal/transport/base_client.rb +7 -1
  6. data/lib/straddle/internal/transport/pooled_net_requester.rb +39 -27
  7. data/lib/straddle/internal/util.rb +44 -8
  8. data/lib/straddle/models/bridge/link_bank_account_params.rb +31 -2
  9. data/lib/straddle/models/bridge/link_create_paykey_params.rb +31 -2
  10. data/lib/straddle/models/bridge/link_create_paykey_response.rb +39 -2
  11. data/lib/straddle/models/bridge/link_create_tan_params.rb +30 -2
  12. data/lib/straddle/models/bridge/link_create_tan_response.rb +39 -2
  13. data/lib/straddle/models/bridge/link_plaid_params.rb +30 -2
  14. data/lib/straddle/models/bridge_initialize_params.rb +30 -2
  15. data/lib/straddle/models/charge_cancel_params.rb +8 -1
  16. data/lib/straddle/models/charge_create_params.rb +20 -4
  17. data/lib/straddle/models/charge_get_params.rb +7 -1
  18. data/lib/straddle/models/charge_hold_params.rb +8 -1
  19. data/lib/straddle/models/charge_release_params.rb +8 -1
  20. data/lib/straddle/models/charge_unmask_params.rb +7 -1
  21. data/lib/straddle/models/charge_unmask_response.rb +59 -5
  22. data/lib/straddle/models/charge_update_params.rb +11 -4
  23. data/lib/straddle/models/charge_v1.rb +59 -5
  24. data/lib/straddle/models/customer_delete_params.rb +7 -1
  25. data/lib/straddle/models/customer_get_params.rb +7 -1
  26. data/lib/straddle/models/customer_unmasked_params.rb +7 -1
  27. data/lib/straddle/models/customer_update_params.rb +8 -1
  28. data/lib/straddle/models/customers/review_decision_params.rb +8 -1
  29. data/lib/straddle/models/customers/review_get_params.rb +7 -1
  30. data/lib/straddle/models/customers/review_refresh_review_params.rb +46 -0
  31. data/lib/straddle/models/embed/account_get_params.rb +11 -1
  32. data/lib/straddle/models/embed/account_onboard_params.rb +7 -1
  33. data/lib/straddle/models/embed/account_paged_v1.rb +4 -0
  34. data/lib/straddle/models/embed/account_simulate_params.rb +7 -1
  35. data/lib/straddle/models/embed/account_update_params.rb +8 -1
  36. data/lib/straddle/models/embed/account_v1.rb +4 -0
  37. data/lib/straddle/models/embed/accounts/capability_request_create_params.rb +8 -1
  38. data/lib/straddle/models/embed/accounts/capability_request_list_params.rb +8 -1
  39. data/lib/straddle/models/embed/accounts/capability_request_paged_v1.rb +9 -1
  40. data/lib/straddle/models/embed/address_v1.rb +14 -38
  41. data/lib/straddle/models/embed/linked_bank_account_cancel_params.rb +7 -1
  42. data/lib/straddle/models/embed/linked_bank_account_get_params.rb +7 -1
  43. data/lib/straddle/models/embed/linked_bank_account_list_params.rb +51 -1
  44. data/lib/straddle/models/embed/linked_bank_account_unmask_params.rb +7 -1
  45. data/lib/straddle/models/embed/linked_bank_account_update_params.rb +8 -1
  46. data/lib/straddle/models/embed/organization_get_params.rb +7 -1
  47. data/lib/straddle/models/embed/representative_get_params.rb +7 -1
  48. data/lib/straddle/models/embed/representative_unmask_params.rb +7 -1
  49. data/lib/straddle/models/embed/representative_update_params.rb +8 -1
  50. data/lib/straddle/models/funding_event_get_params.rb +7 -1
  51. data/lib/straddle/models/funding_event_list_params.rb +113 -1
  52. data/lib/straddle/models/funding_event_summary_item_v1.rb +152 -1
  53. data/lib/straddle/models/funding_event_summary_paged_v1.rb +152 -1
  54. data/lib/straddle/models/paykey_cancel_params.rb +7 -1
  55. data/lib/straddle/models/paykey_get_params.rb +7 -1
  56. data/lib/straddle/models/paykey_list_params.rb +24 -1
  57. data/lib/straddle/models/paykey_reveal_params.rb +7 -1
  58. data/lib/straddle/models/paykey_reveal_response.rb +39 -2
  59. data/lib/straddle/models/paykey_summary_paged_v1.rb +48 -2
  60. data/lib/straddle/models/paykey_unmasked_params.rb +7 -1
  61. data/lib/straddle/models/paykey_unmasked_v1.rb +38 -2
  62. data/lib/straddle/models/{customer_refresh_review_params.rb → paykey_update_balance_params.rb} +9 -3
  63. data/lib/straddle/models/paykey_v1.rb +48 -2
  64. data/lib/straddle/models/paykeys/review_decision_params.rb +62 -0
  65. data/lib/straddle/models/paykeys/review_get_params.rb +40 -0
  66. data/lib/straddle/models/paykeys/review_get_response.rb +657 -0
  67. data/lib/straddle/models/paykeys/review_refresh_review_params.rb +46 -0
  68. data/lib/straddle/models/payment_list_params.rb +17 -1
  69. data/lib/straddle/models/payment_summary_paged_v1.rb +21 -4
  70. data/lib/straddle/models/payout_cancel_params.rb +8 -1
  71. data/lib/straddle/models/payout_create_params.rb +20 -4
  72. data/lib/straddle/models/payout_get_params.rb +7 -1
  73. data/lib/straddle/models/payout_hold_params.rb +8 -1
  74. data/lib/straddle/models/payout_release_params.rb +8 -1
  75. data/lib/straddle/models/payout_unmask_params.rb +7 -1
  76. data/lib/straddle/models/payout_unmask_response.rb +59 -5
  77. data/lib/straddle/models/payout_update_params.rb +11 -4
  78. data/lib/straddle/models/payout_v1.rb +59 -5
  79. data/lib/straddle/models/status_details_v1.rb +7 -0
  80. data/lib/straddle/models.rb +3 -3
  81. data/lib/straddle/resources/bridge/link.rb +24 -10
  82. data/lib/straddle/resources/bridge.rb +16 -2
  83. data/lib/straddle/resources/charges.rb +13 -8
  84. data/lib/straddle/resources/customers/review.rb +44 -1
  85. data/lib/straddle/resources/customers.rb +23 -47
  86. data/lib/straddle/resources/embed/accounts/capability_requests.rb +9 -4
  87. data/lib/straddle/resources/embed/accounts.rb +25 -14
  88. data/lib/straddle/resources/embed/linked_bank_accounts.rb +25 -7
  89. data/lib/straddle/resources/embed/organizations.rb +7 -2
  90. data/lib/straddle/resources/embed/representatives.rb +15 -8
  91. data/lib/straddle/resources/embed.rb +19 -0
  92. data/lib/straddle/resources/funding_events.rb +25 -3
  93. data/lib/straddle/resources/paykeys/review.rb +133 -0
  94. data/lib/straddle/resources/paykeys.rb +72 -50
  95. data/lib/straddle/resources/payments.rb +12 -6
  96. data/lib/straddle/resources/payouts.rb +11 -7
  97. data/lib/straddle/version.rb +1 -1
  98. data/lib/straddle.rb +9 -2
  99. data/manifest.yaml +2 -0
  100. data/rbi/straddle/client.rbi +34 -0
  101. data/rbi/straddle/internal/transport/base_client.rbi +5 -0
  102. data/rbi/straddle/internal/transport/pooled_net_requester.rbi +6 -2
  103. data/rbi/straddle/internal/type/base_model.rbi +8 -4
  104. data/rbi/straddle/internal/util.rbi +21 -1
  105. data/rbi/straddle/models/bridge/link_bank_account_params.rbi +76 -1
  106. data/rbi/straddle/models/bridge/link_create_paykey_params.rbi +76 -1
  107. data/rbi/straddle/models/bridge/link_create_paykey_response.rbi +116 -1
  108. data/rbi/straddle/models/bridge/link_create_tan_params.rbi +76 -1
  109. data/rbi/straddle/models/bridge/link_create_tan_response.rbi +116 -1
  110. data/rbi/straddle/models/bridge/link_plaid_params.rbi +76 -1
  111. data/rbi/straddle/models/bridge_initialize_params.rbi +76 -1
  112. data/rbi/straddle/models/charge_cancel_params.rbi +6 -0
  113. data/rbi/straddle/models/charge_create_params.rbi +19 -3
  114. data/rbi/straddle/models/charge_get_params.rbi +6 -0
  115. data/rbi/straddle/models/charge_hold_params.rbi +6 -0
  116. data/rbi/straddle/models/charge_release_params.rbi +6 -0
  117. data/rbi/straddle/models/charge_unmask_params.rbi +6 -0
  118. data/rbi/straddle/models/charge_unmask_response.rbi +143 -6
  119. data/rbi/straddle/models/charge_update_params.rbi +9 -3
  120. data/rbi/straddle/models/charge_v1.rbi +135 -6
  121. data/rbi/straddle/models/customer_delete_params.rbi +6 -0
  122. data/rbi/straddle/models/customer_get_params.rbi +6 -0
  123. data/rbi/straddle/models/customer_unmasked_params.rbi +6 -0
  124. data/rbi/straddle/models/customer_update_params.rbi +6 -0
  125. data/rbi/straddle/models/customers/review_decision_params.rbi +6 -0
  126. data/rbi/straddle/models/customers/review_get_params.rbi +6 -0
  127. data/rbi/straddle/models/customers/review_refresh_review_params.rbi +82 -0
  128. data/rbi/straddle/models/embed/account_get_params.rbi +13 -1
  129. data/rbi/straddle/models/embed/account_onboard_params.rbi +6 -0
  130. data/rbi/straddle/models/embed/account_paged_v1.rbi +20 -0
  131. data/rbi/straddle/models/embed/account_simulate_params.rbi +6 -0
  132. data/rbi/straddle/models/embed/account_update_params.rbi +6 -0
  133. data/rbi/straddle/models/embed/account_v1.rbi +20 -0
  134. data/rbi/straddle/models/embed/accounts/capability_request_create_params.rbi +6 -0
  135. data/rbi/straddle/models/embed/accounts/capability_request_list_params.rbi +6 -0
  136. data/rbi/straddle/models/embed/accounts/capability_request_paged_v1.rbi +8 -0
  137. data/rbi/straddle/models/embed/address_v1.rbi +18 -42
  138. data/rbi/straddle/models/embed/linked_bank_account_cancel_params.rbi +6 -0
  139. data/rbi/straddle/models/embed/linked_bank_account_get_params.rbi +11 -1
  140. data/rbi/straddle/models/embed/linked_bank_account_list_params.rbi +149 -0
  141. data/rbi/straddle/models/embed/linked_bank_account_unmask_params.rbi +11 -1
  142. data/rbi/straddle/models/embed/linked_bank_account_update_params.rbi +6 -0
  143. data/rbi/straddle/models/embed/organization_get_params.rbi +11 -1
  144. data/rbi/straddle/models/embed/representative_get_params.rbi +11 -1
  145. data/rbi/straddle/models/embed/representative_unmask_params.rbi +11 -1
  146. data/rbi/straddle/models/embed/representative_update_params.rbi +6 -0
  147. data/rbi/straddle/models/funding_event_get_params.rbi +6 -0
  148. data/rbi/straddle/models/funding_event_list_params.rbi +341 -0
  149. data/rbi/straddle/models/funding_event_summary_item_v1.rbi +416 -0
  150. data/rbi/straddle/models/funding_event_summary_paged_v1.rbi +417 -0
  151. data/rbi/straddle/models/paykey_cancel_params.rbi +6 -0
  152. data/rbi/straddle/models/paykey_get_params.rbi +6 -0
  153. data/rbi/straddle/models/paykey_list_params.rbi +30 -0
  154. data/rbi/straddle/models/paykey_reveal_params.rbi +6 -0
  155. data/rbi/straddle/models/paykey_reveal_response.rbi +116 -1
  156. data/rbi/straddle/models/paykey_summary_paged_v1.rbi +131 -4
  157. data/rbi/straddle/models/paykey_unmasked_params.rbi +6 -0
  158. data/rbi/straddle/models/paykey_unmasked_v1.rbi +116 -1
  159. data/rbi/straddle/models/{customer_refresh_review_params.rbi → paykey_update_balance_params.rbi} +8 -2
  160. data/rbi/straddle/models/paykey_v1.rbi +128 -4
  161. data/rbi/straddle/models/paykeys/review_decision_params.rbi +121 -0
  162. data/rbi/straddle/models/paykeys/review_get_params.rbi +73 -0
  163. data/rbi/straddle/models/paykeys/review_get_response.rbi +1561 -0
  164. data/rbi/straddle/models/paykeys/review_refresh_review_params.rbi +82 -0
  165. data/rbi/straddle/models/payment_list_params.rbi +51 -0
  166. data/rbi/straddle/models/payment_summary_paged_v1.rbi +24 -3
  167. data/rbi/straddle/models/payout_cancel_params.rbi +6 -0
  168. data/rbi/straddle/models/payout_create_params.rbi +19 -3
  169. data/rbi/straddle/models/payout_get_params.rbi +6 -0
  170. data/rbi/straddle/models/payout_hold_params.rbi +6 -0
  171. data/rbi/straddle/models/payout_release_params.rbi +6 -0
  172. data/rbi/straddle/models/payout_unmask_params.rbi +6 -0
  173. data/rbi/straddle/models/payout_unmask_response.rbi +140 -3
  174. data/rbi/straddle/models/payout_update_params.rbi +9 -3
  175. data/rbi/straddle/models/payout_v1.rbi +132 -3
  176. data/rbi/straddle/models/status_details_v1.rbi +29 -0
  177. data/rbi/straddle/models.rbi +3 -3
  178. data/rbi/straddle/resources/bridge/link.rbi +28 -6
  179. data/rbi/straddle/resources/bridge.rbi +17 -1
  180. data/rbi/straddle/resources/charges.rbi +13 -8
  181. data/rbi/straddle/resources/customers/review.rbi +34 -1
  182. data/rbi/straddle/resources/customers.rbi +20 -35
  183. data/rbi/straddle/resources/embed/accounts/capability_requests.rbi +6 -2
  184. data/rbi/straddle/resources/embed/accounts.rbi +19 -10
  185. data/rbi/straddle/resources/embed/linked_bank_accounts.rbi +18 -4
  186. data/rbi/straddle/resources/embed/organizations.rbi +4 -0
  187. data/rbi/straddle/resources/embed/representatives.rbi +12 -6
  188. data/rbi/straddle/resources/embed.rbi +19 -0
  189. data/rbi/straddle/resources/funding_events.rbi +30 -0
  190. data/rbi/straddle/resources/paykeys/review.rbi +99 -0
  191. data/rbi/straddle/resources/paykeys.rbi +45 -29
  192. data/rbi/straddle/resources/payments.rbi +8 -3
  193. data/rbi/straddle/resources/payouts.rbi +11 -7
  194. data/sig/straddle/internal/transport/base_client.rbs +2 -0
  195. data/sig/straddle/internal/transport/pooled_net_requester.rbs +4 -1
  196. data/sig/straddle/internal/util.rbs +10 -0
  197. data/sig/straddle/models/bridge/link_bank_account_params.rbs +28 -1
  198. data/sig/straddle/models/bridge/link_create_paykey_params.rbs +28 -1
  199. data/sig/straddle/models/bridge/link_create_paykey_response.rbs +45 -2
  200. data/sig/straddle/models/bridge/link_create_tan_params.rbs +28 -1
  201. data/sig/straddle/models/bridge/link_create_tan_response.rbs +45 -2
  202. data/sig/straddle/models/bridge/link_plaid_params.rbs +28 -1
  203. data/sig/straddle/models/bridge_initialize_params.rbs +28 -1
  204. data/sig/straddle/models/charge_cancel_params.rbs +5 -0
  205. data/sig/straddle/models/charge_create_params.rbs +14 -4
  206. data/sig/straddle/models/charge_get_params.rbs +5 -0
  207. data/sig/straddle/models/charge_hold_params.rbs +5 -0
  208. data/sig/straddle/models/charge_release_params.rbs +5 -0
  209. data/sig/straddle/models/charge_unmask_params.rbs +5 -0
  210. data/sig/straddle/models/charge_unmask_response.rbs +57 -7
  211. data/sig/straddle/models/charge_update_params.rbs +9 -4
  212. data/sig/straddle/models/charge_v1.rbs +57 -7
  213. data/sig/straddle/models/customer_delete_params.rbs +5 -0
  214. data/sig/straddle/models/customer_get_params.rbs +5 -0
  215. data/sig/straddle/models/customer_unmasked_params.rbs +5 -0
  216. data/sig/straddle/models/customer_update_params.rbs +5 -0
  217. data/sig/straddle/models/customers/review_decision_params.rbs +5 -0
  218. data/sig/straddle/models/customers/review_get_params.rbs +5 -0
  219. data/sig/straddle/models/customers/review_refresh_review_params.rbs +56 -0
  220. data/sig/straddle/models/embed/account_get_params.rbs +5 -1
  221. data/sig/straddle/models/embed/account_onboard_params.rbs +5 -0
  222. data/sig/straddle/models/embed/account_paged_v1.rbs +18 -2
  223. data/sig/straddle/models/embed/account_simulate_params.rbs +5 -0
  224. data/sig/straddle/models/embed/account_update_params.rbs +5 -0
  225. data/sig/straddle/models/embed/account_v1.rbs +18 -2
  226. data/sig/straddle/models/embed/accounts/capability_request_create_params.rbs +5 -0
  227. data/sig/straddle/models/embed/accounts/capability_request_list_params.rbs +5 -0
  228. data/sig/straddle/models/embed/accounts/capability_request_paged_v1.rbs +5 -0
  229. data/sig/straddle/models/embed/address_v1.rbs +12 -27
  230. data/sig/straddle/models/embed/linked_bank_account_cancel_params.rbs +10 -1
  231. data/sig/straddle/models/embed/linked_bank_account_get_params.rbs +9 -1
  232. data/sig/straddle/models/embed/linked_bank_account_list_params.rbs +46 -0
  233. data/sig/straddle/models/embed/linked_bank_account_unmask_params.rbs +9 -1
  234. data/sig/straddle/models/embed/linked_bank_account_update_params.rbs +5 -0
  235. data/sig/straddle/models/embed/organization_get_params.rbs +5 -1
  236. data/sig/straddle/models/embed/representative_get_params.rbs +9 -1
  237. data/sig/straddle/models/embed/representative_unmask_params.rbs +9 -1
  238. data/sig/straddle/models/embed/representative_update_params.rbs +5 -0
  239. data/sig/straddle/models/funding_event_get_params.rbs +5 -0
  240. data/sig/straddle/models/funding_event_list_params.rbs +130 -0
  241. data/sig/straddle/models/funding_event_summary_item_v1.rbs +179 -0
  242. data/sig/straddle/models/funding_event_summary_paged_v1.rbs +179 -0
  243. data/sig/straddle/models/paykey_cancel_params.rbs +5 -0
  244. data/sig/straddle/models/paykey_get_params.rbs +5 -0
  245. data/sig/straddle/models/paykey_list_params.rbs +17 -1
  246. data/sig/straddle/models/paykey_reveal_params.rbs +5 -0
  247. data/sig/straddle/models/paykey_reveal_response.rbs +45 -2
  248. data/sig/straddle/models/paykey_summary_paged_v1.rbs +53 -5
  249. data/sig/straddle/models/paykey_unmasked_params.rbs +5 -0
  250. data/sig/straddle/models/paykey_unmasked_v1.rbs +45 -2
  251. data/sig/straddle/models/{customer_refresh_review_params.rbs → paykey_update_balance_params.rbs} +7 -2
  252. data/sig/straddle/models/paykey_v1.rbs +53 -5
  253. data/sig/straddle/models/paykeys/review_decision_params.rbs +72 -0
  254. data/sig/straddle/models/paykeys/review_get_params.rbs +49 -0
  255. data/sig/straddle/models/paykeys/review_get_response.rbs +645 -0
  256. data/sig/straddle/models/paykeys/review_refresh_review_params.rbs +56 -0
  257. data/sig/straddle/models/payment_list_params.rbs +23 -0
  258. data/sig/straddle/models/payment_summary_paged_v1.rbs +16 -4
  259. data/sig/straddle/models/payout_cancel_params.rbs +5 -0
  260. data/sig/straddle/models/payout_create_params.rbs +14 -4
  261. data/sig/straddle/models/payout_get_params.rbs +5 -0
  262. data/sig/straddle/models/payout_hold_params.rbs +5 -0
  263. data/sig/straddle/models/payout_release_params.rbs +5 -0
  264. data/sig/straddle/models/payout_unmask_params.rbs +5 -0
  265. data/sig/straddle/models/payout_unmask_response.rbs +54 -4
  266. data/sig/straddle/models/payout_update_params.rbs +9 -4
  267. data/sig/straddle/models/payout_v1.rbs +54 -4
  268. data/sig/straddle/models/status_details_v1.rbs +14 -0
  269. data/sig/straddle/models.rbs +3 -3
  270. data/sig/straddle/resources/bridge/link.rbs +4 -0
  271. data/sig/straddle/resources/bridge.rbs +1 -0
  272. data/sig/straddle/resources/charges.rbs +2 -2
  273. data/sig/straddle/resources/customers/review.rbs +9 -0
  274. data/sig/straddle/resources/customers.rbs +0 -9
  275. data/sig/straddle/resources/embed/linked_bank_accounts.rbs +2 -0
  276. data/sig/straddle/resources/funding_events.rbs +5 -0
  277. data/sig/straddle/resources/paykeys/review.rbs +36 -0
  278. data/sig/straddle/resources/paykeys.rbs +9 -6
  279. data/sig/straddle/resources/payments.rbs +1 -0
  280. data/sig/straddle/resources/payouts.rbs +2 -2
  281. metadata +37 -8
  282. data/lib/straddle/models/paykey_review_params.rb +0 -54
  283. data/rbi/straddle/models/paykey_review_params.rbi +0 -98
  284. data/sig/straddle/models/paykey_review_params.rbs +0 -65
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bd6a208e41cae35818c5b73da6eea68f300efe8558ca6e148ce0b6564a89a9ea
4
- data.tar.gz: 8c4db4234dfd2f4991d261c31dfd6cc98baefafb3b42b137858abc054477f128
3
+ metadata.gz: 6434af7d317097aa21f1993bcbfffc0df3661c98722719304c4a375a02bfeffc
4
+ data.tar.gz: b5a7f9eec6c595ab6b5406d9140f0c3b803ea93d7ed34c7ffe84a450e4fc0ce8
5
5
  SHA512:
6
- metadata.gz: 1439876ed4778c79dd1088bed876cf236f441c616f4b67e229e1e2854b0535b02a0db5f1fa0ab6190b0ae8e1f268ae8a7d330ef6c3e5c84ae4bc6fdf4707185a
7
- data.tar.gz: 29c6b8fc541b1a42da83ebbfb372bb6a2fd6aabb6b2803277f11c40fd4c2933afed19e11ecfc87b37590ccd444e031ec58780f95c4d2ed5a1bdfd44b9ef3a55c
6
+ metadata.gz: 4c109c641b80e7e87fc6f7002e06a61ca536eb674798c73afdc99ed21cc83d0015000078e88c93e39620f004ff289a4b06725301d1f0ed481a422c9d4a344e10
7
+ data.tar.gz: ce0ef51d8928bd78ce2a2dbafdf99cef9f22d2bd1be75095ece27a58fb125554ae3e41255215fa77cbfb9de64b1b43b75e9fc3e44e9554290f6d50230aac1389
data/CHANGELOG.md CHANGED
@@ -1,5 +1,102 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0 (2026-03-25)
4
+
5
+ Full Changelog: [v0.3.0...v0.4.0](https://github.com/straddleio/straddle-ruby/compare/v0.3.0...v0.4.0)
6
+
7
+ ### Features
8
+
9
+ * **docs:** Preliminary update to SDK Spec ([a994089](https://github.com/straddleio/straddle-ruby/commit/a99408935f4845971d9651ad7fee5d717236cc4b))
10
+ * **docs:** Preliminary update to SDK Spec ([e0c673c](https://github.com/straddleio/straddle-ruby/commit/e0c673c0b019a12538459577ea1ace160157be9f))
11
+ * **docs:** Preliminary update to SDK Spec ([ab49d6a](https://github.com/straddleio/straddle-ruby/commit/ab49d6aa46cb99d6730e1f5948bbcfb5415ce78c))
12
+ * **docs:** Preliminary update to SDK Spec ([2bb0ce7](https://github.com/straddleio/straddle-ruby/commit/2bb0ce7d9596b697ddf32df5ef277ca55d4b95cb))
13
+ * **docs:** Preliminary update to SDK Spec ([759a24a](https://github.com/straddleio/straddle-ruby/commit/759a24a18fc47e03f99ea25c72e6b5e648803de6))
14
+ * **docs:** Preliminary update to SDK Spec ([2f15e87](https://github.com/straddleio/straddle-ruby/commit/2f15e87de5dbb4dab8160231011b4caf010baeb6))
15
+ * **docs:** Preliminary update to SDK Spec ([65fe483](https://github.com/straddleio/straddle-ruby/commit/65fe483c98ad3d3c4a901f10c9bfc1b5ef96d257))
16
+ * **docs:** Preliminary update to SDK Spec ([35942d0](https://github.com/straddleio/straddle-ruby/commit/35942d0627af65b581371c283021844fd8a0bf81))
17
+ * **docs:** Preliminary update to SDK Spec ([b287450](https://github.com/straddleio/straddle-ruby/commit/b287450f5ab5ee21243ba0b0c1458beb72f92832))
18
+ * **docs:** Preliminary update to SDK Spec ([caa3e6e](https://github.com/straddleio/straddle-ruby/commit/caa3e6eaedca057efac14a95278655388a870ffb))
19
+ * **docs:** Preliminary update to SDK Spec ([da1a4e5](https://github.com/straddleio/straddle-ruby/commit/da1a4e5c2d0ad6b62c2971b2eaa20146965e178d))
20
+ * **docs:** Preliminary update to SDK Spec ([12c8533](https://github.com/straddleio/straddle-ruby/commit/12c853310303cb4b4342b5c278cb7941f480f103))
21
+ * **docs:** Preliminary update to SDK Spec ([2bb2562](https://github.com/straddleio/straddle-ruby/commit/2bb2562e097739663f25b260d1007041b9109f0f))
22
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([abb8de9](https://github.com/straddleio/straddle-ruby/commit/abb8de9e06161d6ce2ae94b798b4387df8d1a24c))
23
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([6e446e6](https://github.com/straddleio/straddle-ruby/commit/6e446e60dc383c9d3c6184811af093d28b6e1cd8))
24
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([d908ee6](https://github.com/straddleio/straddle-ruby/commit/d908ee634a5ae9ac456e569a3295da27cc4c990e))
25
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([898c39b](https://github.com/straddleio/straddle-ruby/commit/898c39bec0902f40eb06355d6804b497b6cffe2b))
26
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([cc470c8](https://github.com/straddleio/straddle-ruby/commit/cc470c8ad0504432f4b808b37127aa79efff9833))
27
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([99ed5a2](https://github.com/straddleio/straddle-ruby/commit/99ed5a21f9e79a9390bf092c2d51138ea0d84b2d))
28
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([d2ead91](https://github.com/straddleio/straddle-ruby/commit/d2ead91f78dec78cac9d524abf5428c1fa22a720))
29
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([46a0ab3](https://github.com/straddleio/straddle-ruby/commit/46a0ab30f644faa810fa509bd8f104847b88c978))
30
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([ef7fd5f](https://github.com/straddleio/straddle-ruby/commit/ef7fd5f87a68ce095c9b367c8a7f2edca5fe23be))
31
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([454257f](https://github.com/straddleio/straddle-ruby/commit/454257f19eb94916cea2e2f62d4855a540e6f36f))
32
+ * **docs:** Release Updates to SDK based on Open API Spec (Final) ([327f383](https://github.com/straddleio/straddle-ruby/commit/327f38385cacf75acf5cffc2c3fd9e49d6d6b858))
33
+
34
+
35
+ ### Bug Fixes
36
+
37
+ * calling `break` out of streams should be instantaneous ([65a7035](https://github.com/straddleio/straddle-ruby/commit/65a70353f1184a41f6d49e25eef0bdbc7072159a))
38
+ * **client:** always add content-length to post body, even when empty ([30dd077](https://github.com/straddleio/straddle-ruby/commit/30dd077007ef4d18699681aaeb38c3ce96e6f71a))
39
+ * **client:** loosen json header parsing ([89a2422](https://github.com/straddleio/straddle-ruby/commit/89a24221918e69c4d1d416c8112e8e5d60462197))
40
+ * **docs:** fix mcp installation instructions for remote servers ([4e9f0b8](https://github.com/straddleio/straddle-ruby/commit/4e9f0b845fdd847d19237ec4fca8f271eafa110e))
41
+ * issue where json.parse errors when receiving HTTP 204 with nobody ([50718b8](https://github.com/straddleio/straddle-ruby/commit/50718b8169bbda3a2ebc1c0b5bc5424ad8080391))
42
+ * properly mock time in ruby ci tests ([c17150a](https://github.com/straddleio/straddle-ruby/commit/c17150a4ea48337ef433acb3d789c4b71192272f))
43
+
44
+
45
+ ### Chores
46
+
47
+ * **ci:** add build step ([b284348](https://github.com/straddleio/straddle-ruby/commit/b284348c52ff380e366b3605688904e4b54a48ee))
48
+ * **ci:** skip lint on metadata-only changes ([2d5b557](https://github.com/straddleio/straddle-ruby/commit/2d5b557ca8ee74326d4acfe1d1a4aa0669d486d2))
49
+ * **ci:** skip uploading artifacts on stainless-internal branches ([58dafed](https://github.com/straddleio/straddle-ruby/commit/58dafed680488b92024a9eff72374720d421fd6f))
50
+ * **docs:** remove www prefix ([27edb53](https://github.com/straddleio/straddle-ruby/commit/27edb5337b03002d5eb1738b5d92ed1c01463c1d))
51
+ * explicitly require "base64" gem ([f100e97](https://github.com/straddleio/straddle-ruby/commit/f100e97c7e621d0b1ab88ad0c89ee76a0fe45396))
52
+ * fix typo in descriptions ([a2523b7](https://github.com/straddleio/straddle-ruby/commit/a2523b75912086c1843324095984a19b650ff704))
53
+ * **internal:** codegen related update ([8e7cf9a](https://github.com/straddleio/straddle-ruby/commit/8e7cf9acaf4489577db186a2d22e77a955b4906e))
54
+ * **internal:** codegen related update ([8e5e7ea](https://github.com/straddleio/straddle-ruby/commit/8e5e7ea45e9ff012fb2205e6fe9a1e6a0d7dd1e8))
55
+ * **internal:** codegen related update ([1a5e921](https://github.com/straddleio/straddle-ruby/commit/1a5e92121000780f6decf5e835a5546d013d4143))
56
+ * **internal:** tweak CI branches ([3ae860c](https://github.com/straddleio/straddle-ruby/commit/3ae860c3fd991bdb8f23e9810dfd3e602429182b))
57
+ * **internal:** update `actions/checkout` version ([cc750a5](https://github.com/straddleio/straddle-ruby/commit/cc750a510782578f720e3df4fe7f0ad8f1ac7cc5))
58
+ * **internal:** update gitignore ([a710798](https://github.com/straddleio/straddle-ruby/commit/a710798ef83f1345cfdaf96796907539d91c6700))
59
+ * move `cgi` into dependencies for ruby 4 ([bb397c4](https://github.com/straddleio/straddle-ruby/commit/bb397c497907aa40e381dab916a0e2643329476a))
60
+ * **test:** do not count install time for mock server timeout ([e00275d](https://github.com/straddleio/straddle-ruby/commit/e00275d5c3bc65beecc0b3e8d84937f850823d32))
61
+ * **tests:** bump steady to v0.19.4 ([d71d7c1](https://github.com/straddleio/straddle-ruby/commit/d71d7c1efd4d9aff7794dfe094c4a78362302e35))
62
+ * **tests:** bump steady to v0.19.5 ([c6cdca9](https://github.com/straddleio/straddle-ruby/commit/c6cdca9d1ea9be5d8957236da28d805b9f9703c1))
63
+ * **tests:** bump steady to v0.19.6 ([c6117b1](https://github.com/straddleio/straddle-ruby/commit/c6117b1ccca3bf562a2342f69ed9d1ad5f1f3c70))
64
+ * **tests:** bump steady to v0.19.7 ([a15b004](https://github.com/straddleio/straddle-ruby/commit/a15b00439585eaac4d5973dcc58e9651ef1b7e80))
65
+ * update mock server docs ([62f9869](https://github.com/straddleio/straddle-ruby/commit/62f98690bfdb9297542060f54d13159d3b37059f))
66
+
67
+
68
+ ### Documentation
69
+
70
+ * prominently feature MCP server setup in root SDK readmes ([91ed678](https://github.com/straddleio/straddle-ruby/commit/91ed678dc60cdd67aee12901542a3e956410fcd0))
71
+
72
+
73
+ ### Refactors
74
+
75
+ * **tests:** switch from prism to steady ([3a1546c](https://github.com/straddleio/straddle-ruby/commit/3a1546c87187ebda73423d2397295e37ba1fac40))
76
+
77
+ ## 0.3.0 (2025-11-16)
78
+
79
+ Full Changelog: [v0.2.0...v0.3.0](https://github.com/straddleio/straddle-ruby/compare/v0.2.0...v0.3.0)
80
+
81
+ ### Features
82
+
83
+ * **api:** manual updates ([c048e53](https://github.com/straddleio/straddle-ruby/commit/c048e539bb7e3851302e4ddbd166a58fb593a52b))
84
+ * **docs:** Preliminary update to SDK Spec ([8d573e9](https://github.com/straddleio/straddle-ruby/commit/8d573e9c1d39e407dae8a1ec8cc716c0e86a8b46))
85
+ * handle thread interrupts in the core HTTP client ([0e8ff22](https://github.com/straddleio/straddle-ruby/commit/0e8ff229d3f4e5bb905f807338896f8999cc1f44))
86
+
87
+
88
+ ### Bug Fixes
89
+
90
+ * absolutely qualified uris should always override the default ([9ec59a0](https://github.com/straddleio/straddle-ruby/commit/9ec59a081f213bbef52a0deb0e05229f047ec4b3))
91
+ * better thread safety via early initializing SSL store during HTTP client creation ([44dd717](https://github.com/straddleio/straddle-ruby/commit/44dd7179fdf7a912e6c0df4016cd7976ceaaa3f9))
92
+ * should not reuse buffers for `IO.copy_stream` interop ([ab1134b](https://github.com/straddleio/straddle-ruby/commit/ab1134bebd96319b18959ef961f303b7fa92cf18))
93
+
94
+
95
+ ### Chores
96
+
97
+ * bump dependency version and update sorbet types ([19ed027](https://github.com/straddleio/straddle-ruby/commit/19ed0274aeb5f8303d0170817a1520591c6e484b))
98
+ * ignore linter error for tests having large collections ([bc64eef](https://github.com/straddleio/straddle-ruby/commit/bc64eefa88be0777031542098b605f2677a8c29f))
99
+
3
100
  ## 0.2.0 (2025-10-08)
4
101
 
5
102
  Full Changelog: [v0.1.1...v0.2.0](https://github.com/straddleio/straddle-ruby/compare/v0.1.1...v0.2.0)
data/README.md CHANGED
@@ -4,6 +4,15 @@ The Straddle Ruby library provides convenient access to the Straddle REST API fr
4
4
 
5
5
  It is generated with [Stainless](https://www.stainless.com/).
6
6
 
7
+ ## MCP Server
8
+
9
+ Use the Straddle MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.
10
+
11
+ [![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=%40straddlecom%2Fstraddle-mcp&config=eyJuYW1lIjoiQHN0cmFkZGxlY29tL3N0cmFkZGxlLW1jcCIsInRyYW5zcG9ydCI6Imh0dHAiLCJ1cmwiOiJodHRwczovL3N0cmFkZGxlLnN0bG1jcC5jb20iLCJoZWFkZXJzIjp7Ingtc3RyYWRkbGUtYXBpLWtleSI6Ik15IEFQSSBLZXkifX0)
12
+ [![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22%40straddlecom%2Fstraddle-mcp%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fstraddle.stlmcp.com%22%2C%22headers%22%3A%7B%22x-straddle-api-key%22%3A%22My%20API%20Key%22%7D%7D)
13
+
14
+ > Note: You may need to set environment variables in your MCP client.
15
+
7
16
  ## Documentation
8
17
 
9
18
  Documentation for releases of this gem can be found [on RubyDoc](https://gemdocs.org/gems/straddle).
@@ -17,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
17
26
  <!-- x-release-please-start-version -->
18
27
 
19
28
  ```ruby
20
- gem "straddle", "~> 0.2.0"
29
+ gem "straddle", "~> 0.4.0"
21
30
  ```
22
31
 
23
32
  <!-- x-release-please-end -->
@@ -28,24 +28,58 @@ module Straddle
28
28
  # @return [Straddle::Resources::Embed]
29
29
  attr_reader :embed
30
30
 
31
+ # Bridge provides a comprehensive suite of tools for connecting customer bank
32
+ # accounts. Use it to generate secure widget sessions for instant account
33
+ # verification, accept tokens from major providers like Plaid and Finicity, or
34
+ # verify accounts directly via our API. Bridge handles all sensitive banking
35
+ # credentials and ensures secure, compliant connections with support for 90% of US
36
+ # bank accounts.
31
37
  # @return [Straddle::Resources::Bridge]
32
38
  attr_reader :bridge
33
39
 
40
+ # Customers represent the end users who send or receive payments through your
41
+ # integration. Each customer undergoes automatic identity verification and fraud
42
+ # screening upon creation. Use customers to track payment history, manage bank
43
+ # account connections, and maintain a secure record of all transactions associated
44
+ # with a user. Customers can be either individuals or businesses with appropriate
45
+ # compliance checks for each type.
34
46
  # @return [Straddle::Resources::Customers]
35
47
  attr_reader :customers
36
48
 
49
+ # Paykeys are secure tokens that link verified customer identities to their bank
50
+ # accounts. Each Paykey includes built-in balance checking, fraud detection
51
+ # through LSTM machine learning models, and can be reused for subscriptions and
52
+ # recurring payments without storing sensitive data. Paykeys eliminate fraud by
53
+ # ensuring the person initiating payment owns the funding account.
37
54
  # @return [Straddle::Resources::Paykeys]
38
55
  attr_reader :paykeys
39
56
 
57
+ # Charges represent attempts to debit money from a customer's bank account using a
58
+ # Paykey. Each charge includes automatic balance verification, real-time fraud
59
+ # screening, and multi-rail optimization and detailed status tracking throughout
60
+ # the payment lifecycle. Use charges to accept bank payments with confidence
61
+ # knowing every transaction is protected.
40
62
  # @return [Straddle::Resources::Charges]
41
63
  attr_reader :charges
42
64
 
65
+ # Funding events represent all money movement between Straddle and an Account's
66
+ # external bank accounts. They are automatically generated when charges settle or
67
+ # payouts are initiated. Each event provides detailed tracking of settlement
68
+ # status, fee breakdowns, and reconciliation data across both incoming and
69
+ # outgoing transfers. Use funding events to monitor your platform's entire money
70
+ # movement lifecycle.
43
71
  # @return [Straddle::Resources::FundingEvents]
44
72
  attr_reader :funding_events
45
73
 
74
+ # Payments provide endpoints to filter both Charges and Payouts with multiple
75
+ # different parameters.
46
76
  # @return [Straddle::Resources::Payments]
47
77
  attr_reader :payments
48
78
 
79
+ # Payouts represent transfers from Straddle to customer bank accounts. Create
80
+ # payouts to handle disbursements, process refunds, or manage marketplace
81
+ # settlements. Use payouts to send money quickly and securely with the most
82
+ # cost-effective rail automatically selected.
49
83
  # @return [Straddle::Resources::Payouts]
50
84
  attr_reader :payouts
51
85
 
@@ -201,7 +201,8 @@ module Straddle
201
201
  self.class::PLATFORM_HEADERS,
202
202
  {
203
203
  "accept" => "application/json",
204
- "content-type" => "application/json"
204
+ "content-type" => "application/json",
205
+ "user-agent" => user_agent
205
206
  },
206
207
  headers
207
208
  )
@@ -219,6 +220,11 @@ module Straddle
219
220
  # @return [Hash{String=>String}]
220
221
  private def auth_headers = {}
221
222
 
223
+ # @api private
224
+ #
225
+ # @return [String]
226
+ private def user_agent = "#{self.class.name}/Ruby #{Straddle::VERSION}"
227
+
222
228
  # @api private
223
229
  #
224
230
  # @return [String]
@@ -16,10 +16,11 @@ module Straddle
16
16
  class << self
17
17
  # @api private
18
18
  #
19
+ # @param cert_store [OpenSSL::X509::Store]
19
20
  # @param url [URI::Generic]
20
21
  #
21
22
  # @return [Net::HTTP]
22
- def connect(url)
23
+ def connect(cert_store:, url:)
23
24
  port =
24
25
  case [url.port, url.scheme]
25
26
  in [Integer, _]
@@ -33,6 +34,8 @@ module Straddle
33
34
  Net::HTTP.new(url.host, port).tap do
34
35
  _1.use_ssl = %w[https wss].include?(url.scheme)
35
36
  _1.max_retries = 0
37
+
38
+ (_1.cert_store = cert_store) if _1.use_ssl?
36
39
  end
37
40
  end
38
41
 
@@ -72,7 +75,7 @@ module Straddle
72
75
 
73
76
  case body
74
77
  in nil
75
- nil
78
+ req["content-length"] ||= 0 unless req["transfer-encoding"]
76
79
  in String
77
80
  req["content-length"] ||= body.bytesize.to_s unless req["transfer-encoding"]
78
81
  req.body_stream = Straddle::Internal::Util::ReadIOAdapter.new(body, &blk)
@@ -102,7 +105,7 @@ module Straddle
102
105
  pool =
103
106
  @mutex.synchronize do
104
107
  @pools[origin] ||= ConnectionPool.new(size: @size) do
105
- self.class.connect(url)
108
+ self.class.connect(cert_store: @cert_store, url: url)
106
109
  end
107
110
  end
108
111
 
@@ -128,40 +131,50 @@ module Straddle
128
131
  url, deadline = request.fetch_values(:url, :deadline)
129
132
 
130
133
  req = nil
131
- eof = false
132
134
  finished = false
133
- closing = nil
134
135
 
135
136
  # rubocop:disable Metrics/BlockLength
136
137
  enum = Enumerator.new do |y|
137
138
  next if finished
138
139
 
139
140
  with_pool(url, deadline: deadline) do |conn|
140
- req, closing = self.class.build_request(request) do
141
- self.class.calibrate_socket_timeout(conn, deadline)
142
- end
143
-
144
- self.class.calibrate_socket_timeout(conn, deadline)
145
- unless conn.started?
146
- conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
147
- conn.start
148
- end
141
+ eof = false
142
+ closing = nil
143
+ ::Thread.handle_interrupt(Object => :never) do
144
+ ::Thread.handle_interrupt(Object => :immediate) do
145
+ req, closing = self.class.build_request(request) do
146
+ self.class.calibrate_socket_timeout(conn, deadline)
147
+ end
149
148
 
150
- self.class.calibrate_socket_timeout(conn, deadline)
151
- conn.request(req) do |rsp|
152
- y << [req, rsp]
153
- break if finished
154
-
155
- rsp.read_body do |bytes|
156
- y << bytes.force_encoding(Encoding::BINARY)
157
- break if finished
149
+ self.class.calibrate_socket_timeout(conn, deadline)
150
+ unless conn.started?
151
+ conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
152
+ conn.start
153
+ end
158
154
 
159
155
  self.class.calibrate_socket_timeout(conn, deadline)
156
+ ::Kernel.catch(:jump) do
157
+ conn.request(req) do |rsp|
158
+ y << [req, rsp]
159
+ ::Kernel.throw(:jump) if finished
160
+
161
+ rsp.read_body do |bytes|
162
+ y << bytes.force_encoding(Encoding::BINARY)
163
+ ::Kernel.throw(:jump) if finished
164
+
165
+ self.class.calibrate_socket_timeout(conn, deadline)
166
+ end
167
+ eof = true
168
+ end
169
+ end
170
+ end
171
+ ensure
172
+ begin
173
+ conn.finish if !eof && conn&.started?
174
+ ensure
175
+ closing&.call
160
176
  end
161
- eof = true
162
177
  end
163
- ensure
164
- conn.finish if !eof && conn&.started?
165
178
  end
166
179
  rescue Timeout::Error
167
180
  raise Straddle::Errors::APITimeoutError.new(url: url, request: req)
@@ -174,8 +187,6 @@ module Straddle
174
187
  body = Straddle::Internal::Util.fused_enum(enum, external: true) do
175
188
  finished = true
176
189
  loop { enum.next }
177
- ensure
178
- closing&.call
179
190
  end
180
191
  [Integer(response.code), response, body]
181
192
  end
@@ -186,6 +197,7 @@ module Straddle
186
197
  def initialize(size: self.class::DEFAULT_MAX_CONNECTIONS)
187
198
  @mutex = Mutex.new
188
199
  @size = size
200
+ @cert_store = OpenSSL::X509::Store.new.tap(&:set_default_paths)
189
201
  @pools = {}
190
202
  end
191
203
 
@@ -346,8 +346,9 @@ module Straddle
346
346
  base_path, base_query = lhs.fetch_values(:path, :query)
347
347
  slashed = base_path.end_with?("/") ? base_path : "#{base_path}/"
348
348
 
349
- parsed_path, parsed_query = parse_uri(rhs.fetch(:path)).fetch_values(:path, :query)
350
- override = URI::Generic.build(**rhs.slice(:scheme, :host, :port), path: parsed_path)
349
+ merged = {**parse_uri(rhs.fetch(:path)), **rhs.except(:path, :query)}
350
+ parsed_path, parsed_query = merged.fetch_values(:path, :query)
351
+ override = URI::Generic.build(**merged.slice(:scheme, :host, :port), path: parsed_path)
351
352
 
352
353
  joined = URI.join(URI::Generic.build(lhs.except(:path, :query)), slashed, override)
353
354
  query = deep_merge(
@@ -473,10 +474,9 @@ module Straddle
473
474
  # @return [Enumerable<String>]
474
475
  def writable_enum(&blk)
475
476
  Enumerator.new do |y|
476
- buf = String.new
477
477
  y.define_singleton_method(:write) do
478
- self << buf.replace(_1)
479
- buf.bytesize
478
+ self << _1.dup
479
+ _1.bytesize
480
480
  end
481
481
 
482
482
  blk.call(y)
@@ -485,11 +485,42 @@ module Straddle
485
485
  end
486
486
 
487
487
  # @type [Regexp]
488
- JSON_CONTENT = %r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}
488
+ JSON_CONTENT = %r{^application/(?:[a-zA-Z0-9.-]+\+)?json(?!l)}
489
489
  # @type [Regexp]
490
490
  JSONL_CONTENT = %r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}
491
491
 
492
492
  class << self
493
+ # @api private
494
+ #
495
+ # @param query [Hash{Symbol=>Object}]
496
+ #
497
+ # @return [Hash{Symbol=>Object}]
498
+ def encode_query_params(query)
499
+ out = {}
500
+ query.each { write_query_param_element!(out, _1, _2) }
501
+ out
502
+ end
503
+
504
+ # @api private
505
+ #
506
+ # @param collection [Hash{Symbol=>Object}]
507
+ # @param key [String]
508
+ # @param element [Object]
509
+ #
510
+ # @return [nil]
511
+ private def write_query_param_element!(collection, key, element)
512
+ case element
513
+ in Hash
514
+ element.each do |name, value|
515
+ write_query_param_element!(collection, "#{key}[#{name}]", value)
516
+ end
517
+ in Array
518
+ collection[key] = element.map(&:to_s).join(",")
519
+ else
520
+ collection[key] = element.to_s
521
+ end
522
+ end
523
+
493
524
  # @api private
494
525
  #
495
526
  # @param y [Enumerator::Yielder]
@@ -657,7 +688,8 @@ module Straddle
657
688
  def decode_content(headers, stream:, suppress_error: false)
658
689
  case (content_type = headers["content-type"])
659
690
  in Straddle::Internal::Util::JSON_CONTENT
660
- json = stream.to_a.join
691
+ return nil if (json = stream.to_a.join).empty?
692
+
661
693
  begin
662
694
  JSON.parse(json, symbolize_names: true)
663
695
  rescue JSON::ParserError => e
@@ -667,7 +699,11 @@ module Straddle
667
699
  in Straddle::Internal::Util::JSONL_CONTENT
668
700
  lines = decode_lines(stream)
669
701
  chain_fused(lines) do |y|
670
- lines.each { y << JSON.parse(_1, symbolize_names: true) }
702
+ lines.each do
703
+ next if _1.empty?
704
+
705
+ y << JSON.parse(_1, symbolize_names: true)
706
+ end
671
707
  end
672
708
  in %r{^text/event-stream}
673
709
  lines = decode_lines(stream)
@@ -36,6 +36,13 @@ module Straddle
36
36
  # @return [Straddle::Models::Bridge::LinkBankAccountParams::Config, nil]
37
37
  optional :config, -> { Straddle::Bridge::LinkBankAccountParams::Config }
38
38
 
39
+ # @!attribute external_id
40
+ # Unique identifier for the paykey in your database, used for cross-referencing
41
+ # between Straddle and your systems.
42
+ #
43
+ # @return [String, nil]
44
+ optional :external_id, String, nil?: true
45
+
39
46
  # @!attribute metadata
40
47
  # Up to 20 additional user-defined key-value pairs. Useful for storing additional
41
48
  # information about the paykey in a structured format.
@@ -63,7 +70,7 @@ module Straddle
63
70
  # @return [String, nil]
64
71
  optional :straddle_account_id, String
65
72
 
66
- # @!method initialize(account_number:, account_type:, customer_id:, routing_number:, config: nil, metadata: nil, correlation_id: nil, idempotency_key: nil, request_id: nil, straddle_account_id: nil, request_options: {})
73
+ # @!method initialize(account_number:, account_type:, customer_id:, routing_number:, config: nil, external_id: nil, metadata: nil, correlation_id: nil, idempotency_key: nil, request_id: nil, straddle_account_id: nil, request_options: {})
67
74
  # Some parameter documentations has been truncated, see
68
75
  # {Straddle::Models::Bridge::LinkBankAccountParams} for more details.
69
76
  #
@@ -77,6 +84,8 @@ module Straddle
77
84
  #
78
85
  # @param config [Straddle::Models::Bridge::LinkBankAccountParams::Config]
79
86
  #
87
+ # @param external_id [String, nil] Unique identifier for the paykey in your database, used for cross-referencing be
88
+ #
80
89
  # @param metadata [Hash{Symbol=>String}, nil] Up to 20 additional user-defined key-value pairs. Useful for storing additional
81
90
  #
82
91
  # @param correlation_id [String]
@@ -100,14 +109,33 @@ module Straddle
100
109
  end
101
110
 
102
111
  class Config < Straddle::Internal::Type::BaseModel
112
+ # @!attribute processing_method
113
+ #
114
+ # @return [Symbol, Straddle::Models::Bridge::LinkBankAccountParams::Config::ProcessingMethod, nil]
115
+ optional :processing_method,
116
+ enum: -> { Straddle::Bridge::LinkBankAccountParams::Config::ProcessingMethod }
117
+
103
118
  # @!attribute sandbox_outcome
104
119
  #
105
120
  # @return [Symbol, Straddle::Models::Bridge::LinkBankAccountParams::Config::SandboxOutcome, nil]
106
121
  optional :sandbox_outcome, enum: -> { Straddle::Bridge::LinkBankAccountParams::Config::SandboxOutcome }
107
122
 
108
- # @!method initialize(sandbox_outcome: nil)
123
+ # @!method initialize(processing_method: nil, sandbox_outcome: nil)
124
+ # @param processing_method [Symbol, Straddle::Models::Bridge::LinkBankAccountParams::Config::ProcessingMethod]
109
125
  # @param sandbox_outcome [Symbol, Straddle::Models::Bridge::LinkBankAccountParams::Config::SandboxOutcome]
110
126
 
127
+ # @see Straddle::Models::Bridge::LinkBankAccountParams::Config#processing_method
128
+ module ProcessingMethod
129
+ extend Straddle::Internal::Type::Enum
130
+
131
+ INLINE = :inline
132
+ BACKGROUND = :background
133
+ SKIP = :skip
134
+
135
+ # @!method self.values
136
+ # @return [Array<Symbol>]
137
+ end
138
+
111
139
  # @see Straddle::Models::Bridge::LinkBankAccountParams::Config#sandbox_outcome
112
140
  module SandboxOutcome
113
141
  extend Straddle::Internal::Type::Enum
@@ -115,6 +143,7 @@ module Straddle
115
143
  STANDARD = :standard
116
144
  ACTIVE = :active
117
145
  REJECTED = :rejected
146
+ REVIEW = :review
118
147
 
119
148
  # @!method self.values
120
149
  # @return [Array<Symbol>]
@@ -26,6 +26,13 @@ module Straddle
26
26
  # @return [Straddle::Models::Bridge::LinkCreatePaykeyParams::Config, nil]
27
27
  optional :config, -> { Straddle::Bridge::LinkCreatePaykeyParams::Config }
28
28
 
29
+ # @!attribute external_id
30
+ # Unique identifier for the paykey in your database, used for cross-referencing
31
+ # between Straddle and your systems.
32
+ #
33
+ # @return [String, nil]
34
+ optional :external_id, String, nil?: true
35
+
29
36
  # @!attribute metadata
30
37
  # Up to 20 additional user-defined key-value pairs. Useful for storing additional
31
38
  # information about the paykey in a structured format.
@@ -53,7 +60,7 @@ module Straddle
53
60
  # @return [String, nil]
54
61
  optional :straddle_account_id, String
55
62
 
56
- # @!method initialize(customer_id:, quiltt_token:, config: nil, metadata: nil, correlation_id: nil, idempotency_key: nil, request_id: nil, straddle_account_id: nil, request_options: {})
63
+ # @!method initialize(customer_id:, quiltt_token:, config: nil, external_id: nil, metadata: nil, correlation_id: nil, idempotency_key: nil, request_id: nil, straddle_account_id: nil, request_options: {})
57
64
  # Some parameter documentations has been truncated, see
58
65
  # {Straddle::Models::Bridge::LinkCreatePaykeyParams} for more details.
59
66
  #
@@ -63,6 +70,8 @@ module Straddle
63
70
  #
64
71
  # @param config [Straddle::Models::Bridge::LinkCreatePaykeyParams::Config]
65
72
  #
73
+ # @param external_id [String, nil] Unique identifier for the paykey in your database, used for cross-referencing be
74
+ #
66
75
  # @param metadata [Hash{Symbol=>String}, nil] Up to 20 additional user-defined key-value pairs. Useful for storing additional
67
76
  #
68
77
  # @param correlation_id [String]
@@ -76,14 +85,33 @@ module Straddle
76
85
  # @param request_options [Straddle::RequestOptions, Hash{Symbol=>Object}]
77
86
 
78
87
  class Config < Straddle::Internal::Type::BaseModel
88
+ # @!attribute processing_method
89
+ #
90
+ # @return [Symbol, Straddle::Models::Bridge::LinkCreatePaykeyParams::Config::ProcessingMethod, nil]
91
+ optional :processing_method,
92
+ enum: -> { Straddle::Bridge::LinkCreatePaykeyParams::Config::ProcessingMethod }
93
+
79
94
  # @!attribute sandbox_outcome
80
95
  #
81
96
  # @return [Symbol, Straddle::Models::Bridge::LinkCreatePaykeyParams::Config::SandboxOutcome, nil]
82
97
  optional :sandbox_outcome, enum: -> { Straddle::Bridge::LinkCreatePaykeyParams::Config::SandboxOutcome }
83
98
 
84
- # @!method initialize(sandbox_outcome: nil)
99
+ # @!method initialize(processing_method: nil, sandbox_outcome: nil)
100
+ # @param processing_method [Symbol, Straddle::Models::Bridge::LinkCreatePaykeyParams::Config::ProcessingMethod]
85
101
  # @param sandbox_outcome [Symbol, Straddle::Models::Bridge::LinkCreatePaykeyParams::Config::SandboxOutcome]
86
102
 
103
+ # @see Straddle::Models::Bridge::LinkCreatePaykeyParams::Config#processing_method
104
+ module ProcessingMethod
105
+ extend Straddle::Internal::Type::Enum
106
+
107
+ INLINE = :inline
108
+ BACKGROUND = :background
109
+ SKIP = :skip
110
+
111
+ # @!method self.values
112
+ # @return [Array<Symbol>]
113
+ end
114
+
87
115
  # @see Straddle::Models::Bridge::LinkCreatePaykeyParams::Config#sandbox_outcome
88
116
  module SandboxOutcome
89
117
  extend Straddle::Internal::Type::Enum
@@ -91,6 +119,7 @@ module Straddle
91
119
  STANDARD = :standard
92
120
  ACTIVE = :active
93
121
  REJECTED = :rejected
122
+ REVIEW = :review
94
123
 
95
124
  # @!method self.values
96
125
  # @return [Array<Symbol>]