lithic 0.1.0 → 0.3.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 (256) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +51 -0
  3. data/README.md +36 -1
  4. data/lib/lithic/client.rb +9 -10
  5. data/lib/lithic/errors.rb +15 -0
  6. data/lib/lithic/internal/transport/pooled_net_requester.rb +12 -10
  7. data/lib/lithic/internal/util.rb +7 -2
  8. data/lib/lithic/models/account_holder_created_webhook_event.rb +75 -0
  9. data/lib/lithic/models/account_holder_document_updated_webhook_event.rb +191 -0
  10. data/lib/lithic/models/account_holder_updated_webhook_event.rb +702 -0
  11. data/lib/lithic/models/account_holder_verification_webhook_event.rb +69 -0
  12. data/lib/lithic/models/auth_rules/conditional_tokenization_action_parameters.rb +5 -0
  13. data/lib/lithic/models/auth_rules_backtest_report_created_webhook_event.rb +16 -0
  14. data/lib/lithic/models/balance_updated_webhook_event.rb +23 -0
  15. data/lib/lithic/models/book_transfer_retry_params.rb +26 -0
  16. data/lib/lithic/models/book_transfer_transaction_created_webhook_event.rb +18 -0
  17. data/lib/lithic/models/book_transfer_transaction_updated_webhook_event.rb +18 -0
  18. data/lib/lithic/models/card_authorization_approval_request_webhook_event.rb +1032 -0
  19. data/lib/lithic/models/card_converted_webhook_event.rb +24 -0
  20. data/lib/lithic/models/card_created_webhook_event.rb +32 -0
  21. data/lib/lithic/models/card_reissued_webhook_event.rb +24 -0
  22. data/lib/lithic/models/card_renewed_webhook_event.rb +56 -0
  23. data/lib/lithic/models/card_shipped_webhook_event.rb +70 -0
  24. data/lib/lithic/models/card_transaction_enhanced_data_created_webhook_event.rb +16 -0
  25. data/lib/lithic/models/card_transaction_enhanced_data_updated_webhook_event.rb +16 -0
  26. data/lib/lithic/models/card_transaction_updated_webhook_event.rb +16 -0
  27. data/lib/lithic/models/digital_wallet_tokenization_approval_request_webhook_event.rb +253 -0
  28. data/lib/lithic/models/digital_wallet_tokenization_result_webhook_event.rb +145 -0
  29. data/lib/lithic/models/digital_wallet_tokenization_two_factor_authentication_code_sent_webhook_event.rb +100 -0
  30. data/lib/lithic/models/digital_wallet_tokenization_two_factor_authentication_code_webhook_event.rb +108 -0
  31. data/lib/lithic/models/digital_wallet_tokenization_updated_webhook_event.rb +47 -0
  32. data/lib/lithic/models/dispute_evidence_upload_failed_webhook_event.rb +18 -0
  33. data/lib/lithic/models/dispute_transaction_created_webhook_event.rb +18 -0
  34. data/lib/lithic/models/dispute_transaction_updated_webhook_event.rb +18 -0
  35. data/lib/lithic/models/dispute_updated_webhook_event.rb +18 -0
  36. data/lib/lithic/models/external_bank_account_created_webhook_event.rb +16 -0
  37. data/lib/lithic/models/external_bank_account_updated_webhook_event.rb +16 -0
  38. data/lib/lithic/models/external_payment_create_params.rb +15 -1
  39. data/lib/lithic/models/external_payment_created_webhook_event.rb +16 -0
  40. data/lib/lithic/models/external_payment_updated_webhook_event.rb +16 -0
  41. data/lib/lithic/models/financial_account.rb +33 -25
  42. data/lib/lithic/models/financial_account_created_webhook_event.rb +16 -0
  43. data/lib/lithic/models/financial_account_update_status_params.rb +9 -1
  44. data/lib/lithic/models/financial_account_updated_webhook_event.rb +16 -0
  45. data/lib/lithic/models/financial_accounts/loan_tape.rb +52 -3
  46. data/lib/lithic/models/funding_event_created_webhook_event.rb +16 -0
  47. data/lib/lithic/models/internal_transaction_created_webhook_event.rb +16 -0
  48. data/lib/lithic/models/internal_transaction_updated_webhook_event.rb +16 -0
  49. data/lib/lithic/models/loan_tape_created_webhook_event.rb +16 -0
  50. data/lib/lithic/models/loan_tape_updated_webhook_event.rb +16 -0
  51. data/lib/lithic/models/management_operation_create_params.rb +6 -1
  52. data/lib/lithic/models/management_operation_created_webhook_event.rb +16 -0
  53. data/lib/lithic/models/management_operation_updated_webhook_event.rb +16 -0
  54. data/lib/lithic/models/network_total_created_webhook_event.rb +16 -0
  55. data/lib/lithic/models/network_total_updated_webhook_event.rb +16 -0
  56. data/lib/lithic/models/parsed_webhook_event.rb +817 -0
  57. data/lib/lithic/models/payment.rb +10 -1
  58. data/lib/lithic/models/payment_transaction_created_webhook_event.rb +18 -0
  59. data/lib/lithic/models/payment_transaction_updated_webhook_event.rb +18 -0
  60. data/lib/lithic/models/settlement_report_updated_webhook_event.rb +16 -0
  61. data/lib/lithic/models/statements_created_webhook_event.rb +16 -0
  62. data/lib/lithic/models/three_ds_authentication_approval_request_webhook_event.rb +17 -0
  63. data/lib/lithic/models/three_ds_authentication_challenge_webhook_event.rb +89 -0
  64. data/lib/lithic/models/three_ds_authentication_created_webhook_event.rb +18 -0
  65. data/lib/lithic/models/three_ds_authentication_updated_webhook_event.rb +18 -0
  66. data/lib/lithic/models/tokenization_approval_request_webhook_event.rb +249 -0
  67. data/lib/lithic/models/tokenization_decisioning_request_webhook_event.rb +159 -0
  68. data/lib/lithic/models/tokenization_result_webhook_event.rb +141 -0
  69. data/lib/lithic/models/tokenization_two_factor_authentication_code_sent_webhook_event.rb +100 -0
  70. data/lib/lithic/models/tokenization_two_factor_authentication_code_webhook_event.rb +108 -0
  71. data/lib/lithic/models/tokenization_updated_webhook_event.rb +47 -0
  72. data/lib/lithic/models/transaction.rb +2 -0
  73. data/lib/lithic/models/transfer_limit_list_params.rb +22 -0
  74. data/lib/lithic/models/transfer_limits_response.rb +274 -0
  75. data/lib/lithic/models/webhook_parsed_params.rb +14 -0
  76. data/lib/lithic/models.rb +130 -4
  77. data/lib/lithic/resources/book_transfers.rb +27 -0
  78. data/lib/lithic/resources/cards.rb +1 -5
  79. data/lib/lithic/resources/external_payments.rb +13 -1
  80. data/lib/lithic/resources/financial_accounts.rb +3 -1
  81. data/lib/lithic/resources/management_operations.rb +4 -1
  82. data/lib/lithic/resources/transfer_limits.rb +37 -0
  83. data/lib/lithic/resources/webhooks.rb +88 -0
  84. data/lib/lithic/version.rb +1 -1
  85. data/lib/lithic.rb +79 -23
  86. data/rbi/lithic/client.rbi +6 -3
  87. data/rbi/lithic/models/account_holder_created_webhook_event.rbi +149 -0
  88. data/rbi/lithic/models/account_holder_document_updated_webhook_event.rbi +479 -0
  89. data/rbi/lithic/models/account_holder_updated_webhook_event.rbi +1274 -0
  90. data/rbi/lithic/models/account_holder_verification_webhook_event.rbi +143 -0
  91. data/rbi/lithic/models/auth_rules/conditional_tokenization_action_parameters.rbi +11 -0
  92. data/rbi/lithic/models/auth_rules_backtest_report_created_webhook_event.rbi +30 -0
  93. data/rbi/lithic/models/balance_updated_webhook_event.rbi +43 -0
  94. data/rbi/lithic/models/book_transfer_retry_params.rbi +42 -0
  95. data/rbi/lithic/models/book_transfer_transaction_created_webhook_event.rbi +31 -0
  96. data/rbi/lithic/models/book_transfer_transaction_updated_webhook_event.rbi +31 -0
  97. data/rbi/lithic/models/card_authorization_approval_request_webhook_event.rbi +2367 -0
  98. data/rbi/lithic/models/card_converted_webhook_event.rbi +35 -0
  99. data/rbi/lithic/models/card_created_webhook_event.rbi +53 -0
  100. data/rbi/lithic/models/card_reissued_webhook_event.rbi +38 -0
  101. data/rbi/lithic/models/card_renewed_webhook_event.rbi +92 -0
  102. data/rbi/lithic/models/card_shipped_webhook_event.rbi +150 -0
  103. data/rbi/lithic/models/card_transaction_enhanced_data_created_webhook_event.rbi +30 -0
  104. data/rbi/lithic/models/card_transaction_enhanced_data_updated_webhook_event.rbi +30 -0
  105. data/rbi/lithic/models/card_transaction_updated_webhook_event.rbi +30 -0
  106. data/rbi/lithic/models/digital_wallet_token_metadata.rbi +2 -2
  107. data/rbi/lithic/models/digital_wallet_tokenization_approval_request_webhook_event.rbi +548 -0
  108. data/rbi/lithic/models/digital_wallet_tokenization_result_webhook_event.rbi +295 -0
  109. data/rbi/lithic/models/digital_wallet_tokenization_two_factor_authentication_code_sent_webhook_event.rbi +186 -0
  110. data/rbi/lithic/models/digital_wallet_tokenization_two_factor_authentication_code_webhook_event.rbi +194 -0
  111. data/rbi/lithic/models/digital_wallet_tokenization_updated_webhook_event.rbi +73 -0
  112. data/rbi/lithic/models/dispute_evidence_upload_failed_webhook_event.rbi +31 -0
  113. data/rbi/lithic/models/dispute_transaction_created_webhook_event.rbi +31 -0
  114. data/rbi/lithic/models/dispute_transaction_updated_webhook_event.rbi +31 -0
  115. data/rbi/lithic/models/dispute_updated_webhook_event.rbi +28 -0
  116. data/rbi/lithic/models/external_bank_account_created_webhook_event.rbi +30 -0
  117. data/rbi/lithic/models/external_bank_account_updated_webhook_event.rbi +30 -0
  118. data/rbi/lithic/models/external_payment_create_params.rbi +4 -0
  119. data/rbi/lithic/models/external_payment_created_webhook_event.rbi +30 -0
  120. data/rbi/lithic/models/external_payment_updated_webhook_event.rbi +30 -0
  121. data/rbi/lithic/models/financial_account.rbi +62 -54
  122. data/rbi/lithic/models/financial_account_created_webhook_event.rbi +30 -0
  123. data/rbi/lithic/models/financial_account_update_status_params.rbi +11 -0
  124. data/rbi/lithic/models/financial_account_updated_webhook_event.rbi +30 -0
  125. data/rbi/lithic/models/financial_accounts/loan_tape.rbi +93 -4
  126. data/rbi/lithic/models/funding_event_created_webhook_event.rbi +30 -0
  127. data/rbi/lithic/models/internal_transaction.rbi +15 -10
  128. data/rbi/lithic/models/internal_transaction_created_webhook_event.rbi +30 -0
  129. data/rbi/lithic/models/internal_transaction_updated_webhook_event.rbi +30 -0
  130. data/rbi/lithic/models/loan_tape_created_webhook_event.rbi +27 -0
  131. data/rbi/lithic/models/loan_tape_updated_webhook_event.rbi +27 -0
  132. data/rbi/lithic/models/management_operation_create_params.rbi +4 -0
  133. data/rbi/lithic/models/management_operation_created_webhook_event.rbi +30 -0
  134. data/rbi/lithic/models/management_operation_updated_webhook_event.rbi +30 -0
  135. data/rbi/lithic/models/network_total_created_webhook_event.rbi +30 -0
  136. data/rbi/lithic/models/network_total_updated_webhook_event.rbi +30 -0
  137. data/rbi/lithic/models/parsed_webhook_event.rbi +1310 -0
  138. data/rbi/lithic/models/payment.rbi +13 -3
  139. data/rbi/lithic/models/payment_transaction_created_webhook_event.rbi +31 -0
  140. data/rbi/lithic/models/payment_transaction_updated_webhook_event.rbi +31 -0
  141. data/rbi/lithic/models/settlement_report_updated_webhook_event.rbi +30 -0
  142. data/rbi/lithic/models/statements_created_webhook_event.rbi +30 -0
  143. data/rbi/lithic/models/three_ds_authentication_approval_request_webhook_event.rbi +27 -0
  144. data/rbi/lithic/models/three_ds_authentication_challenge_webhook_event.rbi +175 -0
  145. data/rbi/lithic/models/three_ds_authentication_created_webhook_event.rbi +31 -0
  146. data/rbi/lithic/models/three_ds_authentication_updated_webhook_event.rbi +31 -0
  147. data/rbi/lithic/models/tokenization_approval_request_webhook_event.rbi +548 -0
  148. data/rbi/lithic/models/tokenization_decisioning_request_webhook_event.rbi +333 -0
  149. data/rbi/lithic/models/tokenization_result_webhook_event.rbi +295 -0
  150. data/rbi/lithic/models/tokenization_two_factor_authentication_code_sent_webhook_event.rbi +186 -0
  151. data/rbi/lithic/models/tokenization_two_factor_authentication_code_webhook_event.rbi +194 -0
  152. data/rbi/lithic/models/tokenization_updated_webhook_event.rbi +73 -0
  153. data/rbi/lithic/models/transaction.rbi +10 -0
  154. data/rbi/lithic/models/transfer_limit_list_params.rbi +43 -0
  155. data/rbi/lithic/models/transfer_limits_response.rbi +604 -0
  156. data/rbi/lithic/models/webhook_parsed_params.rbi +27 -0
  157. data/rbi/lithic/models.rbi +165 -4
  158. data/rbi/lithic/resources/book_transfers.rbi +18 -0
  159. data/rbi/lithic/resources/cards.rbi +1 -4
  160. data/rbi/lithic/resources/external_payments.rbi +2 -0
  161. data/rbi/lithic/resources/financial_accounts.rbi +3 -0
  162. data/rbi/lithic/resources/management_operations.rbi +2 -0
  163. data/rbi/lithic/resources/transfer_limits.rbi +28 -0
  164. data/rbi/lithic/resources/webhooks.rbi +36 -0
  165. data/sig/lithic/client.rbs +4 -2
  166. data/sig/lithic/models/account_holder_created_webhook_event.rbs +77 -0
  167. data/sig/lithic/models/account_holder_document_updated_webhook_event.rbs +219 -0
  168. data/sig/lithic/models/account_holder_updated_webhook_event.rbs +587 -0
  169. data/sig/lithic/models/account_holder_verification_webhook_event.rbs +69 -0
  170. data/sig/lithic/models/auth_rules/conditional_tokenization_action_parameters.rbs +2 -0
  171. data/sig/lithic/models/auth_rules_backtest_report_created_webhook_event.rbs +20 -0
  172. data/sig/lithic/models/balance_updated_webhook_event.rbs +25 -0
  173. data/sig/lithic/models/book_transfer_retry_params.rbs +23 -0
  174. data/sig/lithic/models/book_transfer_transaction_created_webhook_event.rbs +20 -0
  175. data/sig/lithic/models/book_transfer_transaction_updated_webhook_event.rbs +20 -0
  176. data/sig/lithic/models/card_authorization_approval_request_webhook_event.rbs +886 -0
  177. data/sig/lithic/models/card_converted_webhook_event.rbs +19 -0
  178. data/sig/lithic/models/card_created_webhook_event.rbs +30 -0
  179. data/sig/lithic/models/card_reissued_webhook_event.rbs +21 -0
  180. data/sig/lithic/models/card_renewed_webhook_event.rbs +55 -0
  181. data/sig/lithic/models/card_shipped_webhook_event.rbs +71 -0
  182. data/sig/lithic/models/card_transaction_enhanced_data_created_webhook_event.rbs +20 -0
  183. data/sig/lithic/models/card_transaction_enhanced_data_updated_webhook_event.rbs +20 -0
  184. data/sig/lithic/models/card_transaction_updated_webhook_event.rbs +18 -0
  185. data/sig/lithic/models/digital_wallet_tokenization_approval_request_webhook_event.rbs +223 -0
  186. data/sig/lithic/models/digital_wallet_tokenization_result_webhook_event.rbs +133 -0
  187. data/sig/lithic/models/digital_wallet_tokenization_two_factor_authentication_code_sent_webhook_event.rbs +78 -0
  188. data/sig/lithic/models/digital_wallet_tokenization_two_factor_authentication_code_webhook_event.rbs +83 -0
  189. data/sig/lithic/models/digital_wallet_tokenization_updated_webhook_event.rbs +40 -0
  190. data/sig/lithic/models/dispute_evidence_upload_failed_webhook_event.rbs +18 -0
  191. data/sig/lithic/models/dispute_transaction_created_webhook_event.rbs +18 -0
  192. data/sig/lithic/models/dispute_transaction_updated_webhook_event.rbs +18 -0
  193. data/sig/lithic/models/dispute_updated_webhook_event.rbs +15 -0
  194. data/sig/lithic/models/external_bank_account_created_webhook_event.rbs +18 -0
  195. data/sig/lithic/models/external_bank_account_updated_webhook_event.rbs +18 -0
  196. data/sig/lithic/models/external_payment_created_webhook_event.rbs +18 -0
  197. data/sig/lithic/models/external_payment_updated_webhook_event.rbs +18 -0
  198. data/sig/lithic/models/financial_account.rbs +32 -27
  199. data/sig/lithic/models/financial_account_created_webhook_event.rbs +18 -0
  200. data/sig/lithic/models/financial_account_update_status_params.rbs +8 -1
  201. data/sig/lithic/models/financial_account_updated_webhook_event.rbs +18 -0
  202. data/sig/lithic/models/financial_accounts/loan_tape.rbs +46 -4
  203. data/sig/lithic/models/funding_event_created_webhook_event.rbs +16 -0
  204. data/sig/lithic/models/internal_transaction_created_webhook_event.rbs +18 -0
  205. data/sig/lithic/models/internal_transaction_updated_webhook_event.rbs +18 -0
  206. data/sig/lithic/models/loan_tape_created_webhook_event.rbs +15 -0
  207. data/sig/lithic/models/loan_tape_updated_webhook_event.rbs +15 -0
  208. data/sig/lithic/models/management_operation_created_webhook_event.rbs +18 -0
  209. data/sig/lithic/models/management_operation_updated_webhook_event.rbs +18 -0
  210. data/sig/lithic/models/network_total_created_webhook_event.rbs +16 -0
  211. data/sig/lithic/models/network_total_updated_webhook_event.rbs +16 -0
  212. data/sig/lithic/models/parsed_webhook_event.rbs +641 -0
  213. data/sig/lithic/models/payment.rbs +10 -3
  214. data/sig/lithic/models/payment_transaction_created_webhook_event.rbs +18 -0
  215. data/sig/lithic/models/payment_transaction_updated_webhook_event.rbs +18 -0
  216. data/sig/lithic/models/settlement_report_updated_webhook_event.rbs +18 -0
  217. data/sig/lithic/models/statements_created_webhook_event.rbs +16 -0
  218. data/sig/lithic/models/three_ds_authentication_approval_request_webhook_event.rbs +22 -0
  219. data/sig/lithic/models/three_ds_authentication_challenge_webhook_event.rbs +72 -0
  220. data/sig/lithic/models/three_ds_authentication_created_webhook_event.rbs +18 -0
  221. data/sig/lithic/models/three_ds_authentication_updated_webhook_event.rbs +18 -0
  222. data/sig/lithic/models/tokenization_approval_request_webhook_event.rbs +223 -0
  223. data/sig/lithic/models/tokenization_decisioning_request_webhook_event.rbs +134 -0
  224. data/sig/lithic/models/tokenization_result_webhook_event.rbs +133 -0
  225. data/sig/lithic/models/tokenization_two_factor_authentication_code_sent_webhook_event.rbs +78 -0
  226. data/sig/lithic/models/tokenization_two_factor_authentication_code_webhook_event.rbs +83 -0
  227. data/sig/lithic/models/tokenization_updated_webhook_event.rbs +40 -0
  228. data/sig/lithic/models/transaction.rbs +4 -0
  229. data/sig/lithic/models/transfer_limit_list_params.rbs +22 -0
  230. data/sig/lithic/models/transfer_limits_response.rbs +232 -0
  231. data/sig/lithic/models/webhook_parsed_params.rbs +15 -0
  232. data/sig/lithic/models.rbs +120 -4
  233. data/sig/lithic/resources/book_transfers.rbs +6 -0
  234. data/sig/lithic/resources/cards.rbs +0 -2
  235. data/sig/lithic/resources/financial_accounts.rbs +1 -0
  236. data/sig/lithic/resources/transfer_limits.rbs +12 -0
  237. data/sig/lithic/resources/webhooks.rbs +21 -0
  238. metadata +188 -20
  239. data/lib/lithic/models/aggregate_balance.rb +0 -113
  240. data/lib/lithic/models/aggregate_balance_list_params.rb +0 -35
  241. data/lib/lithic/models/cards/aggregate_balance_list_params.rb +0 -32
  242. data/lib/lithic/models/cards/aggregate_balance_list_response.rb +0 -92
  243. data/lib/lithic/resources/aggregate_balances.rb +0 -38
  244. data/lib/lithic/resources/cards/aggregate_balances.rb +0 -41
  245. data/rbi/lithic/models/aggregate_balance.rbi +0 -164
  246. data/rbi/lithic/models/aggregate_balance_list_params.rbi +0 -104
  247. data/rbi/lithic/models/cards/aggregate_balance_list_params.rbi +0 -62
  248. data/rbi/lithic/models/cards/aggregate_balance_list_response.rbi +0 -115
  249. data/rbi/lithic/resources/aggregate_balances.rbi +0 -28
  250. data/rbi/lithic/resources/cards/aggregate_balances.rbi +0 -35
  251. data/sig/lithic/models/aggregate_balance.rbs +0 -78
  252. data/sig/lithic/models/aggregate_balance_list_params.rbs +0 -43
  253. data/sig/lithic/models/cards/aggregate_balance_list_params.rbs +0 -34
  254. data/sig/lithic/models/cards/aggregate_balance_list_response.rbs +0 -62
  255. data/sig/lithic/resources/aggregate_balances.rbs +0 -12
  256. data/sig/lithic/resources/cards/aggregate_balances.rbs +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84dffb32640f09dd777742e8279eb660addc6b5783cf2787b133ec5247e50507
4
- data.tar.gz: 75d175963aceb1d75c46f7d2022cba419f4a7df0bb2d01e98dabb21f4f004b98
3
+ metadata.gz: 607c23f73075c6665363abeb7aae1925309dc8e5bc76cd6f492889036f4f77cc
4
+ data.tar.gz: f0cf9f33257ee6a8eb3c846c4ddb666bd03fb48ef94ad3fb3e19578455cf4425
5
5
  SHA512:
6
- metadata.gz: 982807e64981a671609612a7bb9381655301310165373e3d1bdb13387b89dfe6f1dec73099f436fe32d224a7b6417ee949a9b9cafe14869a3125c8ce957c3415
7
- data.tar.gz: 9e2231d392a1eb813a3e6a797c1d7625720d84833720deddca711f76ea9316eec61e55c20248d1d6d3b06a746d86a6036a4f59840d8bbecbbe1b3ea222f8b85d
6
+ metadata.gz: ff94b4056b75ccf4e4edbe51d89ecf27efa049b4796a60896256546b85a21e9a82675acd5087e44812067137a83af10d702493d3c10cc73f151ff078ae85ff40
7
+ data.tar.gz: e83448bd2e8a575b45a2480ff492fe986abbb7e6175834333a305201c5e4ad8c5963f3a5186979b697131f60ab3b3069ba05a744285656b5503e79732dd7c51d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,56 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0 (2026-01-08)
4
+
5
+ Full Changelog: [v0.2.0...v0.3.0](https://github.com/lithic-com/lithic-ruby/compare/v0.2.0...v0.3.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** Add card state attribute to tokenization rules ([24f042b](https://github.com/lithic-com/lithic-ruby/commit/24f042b70a1b3b6f30639fe6d04dbc7d566ea187))
10
+ * **api:** Add event_type to ASA request and 3DS decisioning request ([24f042b](https://github.com/lithic-com/lithic-ruby/commit/24f042b70a1b3b6f30639fe6d04dbc7d566ea187))
11
+ * **api:** add external_id to payment_event ([0bad1d9](https://github.com/lithic-com/lithic-ruby/commit/0bad1d9ef7b439a1be19b68af67abb6e66e5c53f))
12
+ * **api:** add get /v1/transfer_limits endpoint ([0bad1d9](https://github.com/lithic-com/lithic-ruby/commit/0bad1d9ef7b439a1be19b68af67abb6e66e5c53f))
13
+ * **api:** add post /v1/book_transfers/{book_transfer_token}/retry endpoint ([0bad1d9](https://github.com/lithic-com/lithic-ruby/commit/0bad1d9ef7b439a1be19b68af67abb6e66e5c53f))
14
+ * **api:** Add user defined status to ledger accounts ([24f042b](https://github.com/lithic-com/lithic-ruby/commit/24f042b70a1b3b6f30639fe6d04dbc7d566ea187))
15
+ * **api:** add WIRE_DRAWDOWN_REQUEST transfer type ([832895f](https://github.com/lithic-com/lithic-ruby/commit/832895fdf5d4e72f9fc1ce62e9acfb6bcbdfdc14))
16
+ * **api:** Expose Payment Allocation Details ([24f042b](https://github.com/lithic-com/lithic-ruby/commit/24f042b70a1b3b6f30639fe6d04dbc7d566ea187))
17
+ * **api:** remove unnecessary X-Lithic-Pagination header ([832895f](https://github.com/lithic-com/lithic-ruby/commit/832895fdf5d4e72f9fc1ce62e9acfb6bcbdfdc14))
18
+ * **api:** remove v1/aggregate_balances and related models ([c66d75e](https://github.com/lithic-com/lithic-ruby/commit/c66d75ed7b10521d5f73efeafb9dbcd6ff7a7f0c))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * calling `break` out of streams should be instantaneous ([86db080](https://github.com/lithic-com/lithic-ruby/commit/86db080240382ba1cd73af9a01c89379cfb8e330))
24
+ * issue where json.parse errors when receiving HTTP 204 with nobody ([9c9d63b](https://github.com/lithic-com/lithic-ruby/commit/9c9d63b07badd9fdd107314ac0bd5c8c23ddd0c3))
25
+
26
+
27
+ ### Chores
28
+
29
+ * formatting ([e736094](https://github.com/lithic-com/lithic-ruby/commit/e736094a8bcf11007a6ea2666cfc6a646aca6972))
30
+ * **internal:** codegen related update ([6bacc68](https://github.com/lithic-com/lithic-ruby/commit/6bacc684b578951ece05155697ec0b68c2d8d4e0))
31
+ * Simplify custom code ([67dc77a](https://github.com/lithic-com/lithic-ruby/commit/67dc77a78348d9d910cca58ffba483992b738f30))
32
+ * Simplify custom code - same for rbs file ([3438ceb](https://github.com/lithic-com/lithic-ruby/commit/3438cebfd4899c87d06a2bc42d4a76af709ea21f))
33
+ * update code formatting ([24f042b](https://github.com/lithic-com/lithic-ruby/commit/24f042b70a1b3b6f30639fe6d04dbc7d566ea187))
34
+
35
+
36
+ ### Documentation
37
+
38
+ * **api:** clarify description of token / retry_token when it serves as idempotency key ([832895f](https://github.com/lithic-com/lithic-ruby/commit/832895fdf5d4e72f9fc1ce62e9acfb6bcbdfdc14))
39
+ * Update language for Google Web Push Provisioning docs ([24f042b](https://github.com/lithic-com/lithic-ruby/commit/24f042b70a1b3b6f30639fe6d04dbc7d566ea187))
40
+
41
+ ## 0.2.0 (2025-12-10)
42
+
43
+ Full Changelog: [v0.1.0...v0.2.0](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0...v0.2.0)
44
+
45
+ ### Features
46
+
47
+ * **api:** add webhook schemas to SDKs - add parse and parse_unsafe ([c40835b](https://github.com/lithic-com/lithic-ruby/commit/c40835b8afae6973e80baccab4017a99d15b4ac4))
48
+
49
+
50
+ ### Chores
51
+
52
+ * replace custom webhook signature verification with standardwebhooks ([c40835b](https://github.com/lithic-com/lithic-ruby/commit/c40835b8afae6973e80baccab4017a99d15b4ac4))
53
+
3
54
  ## 0.1.0 (2025-12-09)
4
55
 
5
56
  Full Changelog: [v0.1.0-alpha.56...v0.1.0](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0-alpha.56...v0.1.0)
data/README.md CHANGED
@@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
15
15
  <!-- x-release-please-start-version -->
16
16
 
17
17
  ```ruby
18
- gem "lithic", "~> 0.1.0"
18
+ gem "lithic", "~> 0.3.0"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
@@ -64,6 +64,41 @@ if page.next_page?
64
64
  end
65
65
  ```
66
66
 
67
+ ### Webhooks
68
+
69
+ Lithic uses webhooks to notify your application when events happen. The library provides signature verification via the optional `standardwebhooks` gem.
70
+
71
+ #### Parsing and verifying webhooks
72
+
73
+ ```ruby
74
+ # Verifies signature and returns typed event
75
+ event = lithic.webhooks.parse(
76
+ request.body.read,
77
+ headers: request.headers,
78
+ secret: ENV["LITHIC_WEBHOOK_SECRET"] # optional, reads from env by default
79
+ )
80
+
81
+ case event
82
+ when Lithic::Models::CardCreatedWebhookEvent
83
+ puts("Card created: #{event.data.token}")
84
+ end
85
+ ```
86
+
87
+ #### Parsing without verification
88
+
89
+ ```ruby
90
+ # Parse only - skips signature verification (not recommended for production)
91
+ event = lithic.webhooks.parse_unsafe(request.body.read)
92
+ ```
93
+
94
+ #### Installing standardwebhooks (optional)
95
+
96
+ To use signature verification, install from GitHub:
97
+
98
+ ```ruby
99
+ gem "standardwebhooks", "~> 1.0", github: "standard-webhooks/standard-webhooks", glob: "libraries/ruby/*.gemspec"
100
+ ```
101
+
67
102
  ### Handling errors
68
103
 
69
104
  When the library is unable to connect to the API, or if the API returns a non-success status code (i.e., 4xx or 5xx response), a subclass of `Lithic::Errors::APIError` will be thrown:
data/lib/lithic/client.rb CHANGED
@@ -50,9 +50,6 @@ module Lithic
50
50
  # @return [Lithic::Resources::Balances]
51
51
  attr_reader :balances
52
52
 
53
- # @return [Lithic::Resources::AggregateBalances]
54
- attr_reader :aggregate_balances
55
-
56
53
  # @return [Lithic::Resources::Disputes]
57
54
  attr_reader :disputes
58
55
 
@@ -119,6 +116,12 @@ module Lithic
119
116
  # @return [Lithic::Resources::AccountActivity]
120
117
  attr_reader :account_activity
121
118
 
119
+ # @return [Lithic::Resources::TransferLimits]
120
+ attr_reader :transfer_limits
121
+
122
+ # @return [Lithic::Resources::Webhooks]
123
+ attr_reader :webhooks
124
+
122
125
  # Status of api
123
126
  #
124
127
  # @overload api_status(request_options: {})
@@ -178,10 +181,6 @@ module Lithic
178
181
  raise ArgumentError.new("api_key is required, and can be set via environ: \"LITHIC_API_KEY\"")
179
182
  end
180
183
 
181
- headers = {
182
- "x-lithic-pagination" => "cursor"
183
- }
184
-
185
184
  @api_key = api_key.to_s
186
185
 
187
186
  super(
@@ -189,8 +188,7 @@ module Lithic
189
188
  timeout: timeout,
190
189
  max_retries: max_retries,
191
190
  initial_retry_delay: initial_retry_delay,
192
- max_retry_delay: max_retry_delay,
193
- headers: headers
191
+ max_retry_delay: max_retry_delay
194
192
  )
195
193
 
196
194
  @accounts = Lithic::Resources::Accounts.new(client: self)
@@ -202,7 +200,6 @@ module Lithic
202
200
  @cards = Lithic::Resources::Cards.new(client: self)
203
201
  @card_bulk_orders = Lithic::Resources::CardBulkOrders.new(client: self)
204
202
  @balances = Lithic::Resources::Balances.new(client: self)
205
- @aggregate_balances = Lithic::Resources::AggregateBalances.new(client: self)
206
203
  @disputes = Lithic::Resources::Disputes.new(client: self)
207
204
  @disputes_v2 = Lithic::Resources::DisputesV2.new(client: self)
208
205
  @events = Lithic::Resources::Events.new(client: self)
@@ -225,6 +222,8 @@ module Lithic
225
222
  @fraud = Lithic::Resources::Fraud.new(client: self)
226
223
  @network_programs = Lithic::Resources::NetworkPrograms.new(client: self)
227
224
  @account_activity = Lithic::Resources::AccountActivity.new(client: self)
225
+ @transfer_limits = Lithic::Resources::TransferLimits.new(client: self)
226
+ @webhooks = Lithic::Resources::Webhooks.new(client: self)
228
227
  end
229
228
  end
230
229
  end
data/lib/lithic/errors.rb CHANGED
@@ -224,5 +224,20 @@ module Lithic
224
224
  class InternalServerError < Lithic::Errors::APIStatusError
225
225
  HTTP_STATUS = (500..)
226
226
  end
227
+
228
+ class MissingDependencyError < Lithic::Errors::Error
229
+ # @api private
230
+ #
231
+ # @param gem_name [String]
232
+ # @param feature [String]
233
+ def initialize(gem_name:, feature:)
234
+ message = [
235
+ "The '#{gem_name}' gem is required to use #{feature}.",
236
+ "Install it with: gem install #{gem_name}",
237
+ "Or add it to your Gemfile: gem '#{gem_name}'"
238
+ ].join("\n")
239
+ super(message)
240
+ end
241
+ end
227
242
  end
228
243
  end
@@ -153,17 +153,19 @@ module Lithic
153
153
  end
154
154
 
155
155
  self.class.calibrate_socket_timeout(conn, deadline)
156
- conn.request(req) do |rsp|
157
- y << [req, rsp]
158
- break if finished
159
-
160
- rsp.read_body do |bytes|
161
- y << bytes.force_encoding(Encoding::BINARY)
162
- break if finished
163
-
164
- 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
165
168
  end
166
- eof = true
167
169
  end
168
170
  end
169
171
  ensure
@@ -657,7 +657,8 @@ module Lithic
657
657
  def decode_content(headers, stream:, suppress_error: false)
658
658
  case (content_type = headers["content-type"])
659
659
  in Lithic::Internal::Util::JSON_CONTENT
660
- json = stream.to_a.join
660
+ return nil if (json = stream.to_a.join).empty?
661
+
661
662
  begin
662
663
  JSON.parse(json, symbolize_names: true)
663
664
  rescue JSON::ParserError => e
@@ -667,7 +668,11 @@ module Lithic
667
668
  in Lithic::Internal::Util::JSONL_CONTENT
668
669
  lines = decode_lines(stream)
669
670
  chain_fused(lines) do |y|
670
- lines.each { y << JSON.parse(_1, symbolize_names: true) }
671
+ lines.each do
672
+ next if _1.empty?
673
+
674
+ y << JSON.parse(_1, symbolize_names: true)
675
+ end
671
676
  end
672
677
  in %r{^text/event-stream}
673
678
  lines = decode_lines(stream)
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lithic
4
+ module Models
5
+ class AccountHolderCreatedWebhookEvent < Lithic::Internal::Type::BaseModel
6
+ # @!attribute event_type
7
+ # The type of event that occurred.
8
+ #
9
+ # @return [Symbol, :"account_holder.created"]
10
+ required :event_type, const: :"account_holder.created"
11
+
12
+ # @!attribute token
13
+ # The token of the account_holder that was created.
14
+ #
15
+ # @return [String, nil]
16
+ optional :token, String
17
+
18
+ # @!attribute account_token
19
+ # The token of the account that was created.
20
+ #
21
+ # @return [String, nil]
22
+ optional :account_token, String
23
+
24
+ # @!attribute created
25
+ # When the account_holder was created
26
+ #
27
+ # @return [Time, nil]
28
+ optional :created, Time
29
+
30
+ # @!attribute required_documents
31
+ #
32
+ # @return [Array<Lithic::Models::RequiredDocument>, nil]
33
+ optional :required_documents, -> { Lithic::Internal::Type::ArrayOf[Lithic::RequiredDocument] }
34
+
35
+ # @!attribute status
36
+ # The status of the account_holder that was created.
37
+ #
38
+ # @return [Symbol, Lithic::Models::AccountHolderCreatedWebhookEvent::Status, nil]
39
+ optional :status, enum: -> { Lithic::AccountHolderCreatedWebhookEvent::Status }
40
+
41
+ # @!attribute status_reason
42
+ #
43
+ # @return [Array<String>, nil]
44
+ optional :status_reason, Lithic::Internal::Type::ArrayOf[String]
45
+
46
+ # @!method initialize(token: nil, account_token: nil, created: nil, required_documents: nil, status: nil, status_reason: nil, event_type: :"account_holder.created")
47
+ # @param token [String] The token of the account_holder that was created.
48
+ #
49
+ # @param account_token [String] The token of the account that was created.
50
+ #
51
+ # @param created [Time] When the account_holder was created
52
+ #
53
+ # @param required_documents [Array<Lithic::Models::RequiredDocument>]
54
+ #
55
+ # @param status [Symbol, Lithic::Models::AccountHolderCreatedWebhookEvent::Status] The status of the account_holder that was created.
56
+ #
57
+ # @param status_reason [Array<String>]
58
+ #
59
+ # @param event_type [Symbol, :"account_holder.created"] The type of event that occurred.
60
+
61
+ # The status of the account_holder that was created.
62
+ #
63
+ # @see Lithic::Models::AccountHolderCreatedWebhookEvent#status
64
+ module Status
65
+ extend Lithic::Internal::Type::Enum
66
+
67
+ ACCEPTED = :ACCEPTED
68
+ PENDING_REVIEW = :PENDING_REVIEW
69
+
70
+ # @!method self.values
71
+ # @return [Array<Symbol>]
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,191 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lithic
4
+ module Models
5
+ class AccountHolderDocumentUpdatedWebhookEvent < Lithic::Internal::Type::BaseModel
6
+ # @!attribute event_type
7
+ # The type of event that occurred.
8
+ #
9
+ # @return [Symbol, :"account_holder_document.updated"]
10
+ required :event_type, const: :"account_holder_document.updated"
11
+
12
+ # @!attribute token
13
+ # The token of the account holder document
14
+ #
15
+ # @return [String, nil]
16
+ optional :token, String
17
+
18
+ # @!attribute account_holder_token
19
+ # The token of the account_holder that the document belongs to
20
+ #
21
+ # @return [String, nil]
22
+ optional :account_holder_token, String
23
+
24
+ # @!attribute created
25
+ # When the account_holder was created
26
+ #
27
+ # @return [Time, nil]
28
+ optional :created, Time
29
+
30
+ # @!attribute document_type
31
+ # Type of documentation to be submitted for verification of an account holder
32
+ #
33
+ # @return [Symbol, Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent::DocumentType, nil]
34
+ optional :document_type, enum: -> { Lithic::AccountHolderDocumentUpdatedWebhookEvent::DocumentType }
35
+
36
+ # @!attribute entity_token
37
+ # The token of the entity that the document belongs to
38
+ #
39
+ # @return [String, nil]
40
+ optional :entity_token, String
41
+
42
+ # @!attribute required_document_uploads
43
+ #
44
+ # @return [Array<Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload>, nil]
45
+ optional :required_document_uploads,
46
+ -> { Lithic::Internal::Type::ArrayOf[Lithic::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload] }
47
+
48
+ # @!method initialize(token: nil, account_holder_token: nil, created: nil, document_type: nil, entity_token: nil, required_document_uploads: nil, event_type: :"account_holder_document.updated")
49
+ # @param token [String] The token of the account holder document
50
+ #
51
+ # @param account_holder_token [String] The token of the account_holder that the document belongs to
52
+ #
53
+ # @param created [Time] When the account_holder was created
54
+ #
55
+ # @param document_type [Symbol, Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent::DocumentType] Type of documentation to be submitted for verification of an account holder
56
+ #
57
+ # @param entity_token [String] The token of the entity that the document belongs to
58
+ #
59
+ # @param required_document_uploads [Array<Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload>]
60
+ #
61
+ # @param event_type [Symbol, :"account_holder_document.updated"] The type of event that occurred.
62
+
63
+ # Type of documentation to be submitted for verification of an account holder
64
+ #
65
+ # @see Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent#document_type
66
+ module DocumentType
67
+ extend Lithic::Internal::Type::Enum
68
+
69
+ DRIVERS_LICENSE = :DRIVERS_LICENSE
70
+ PASSPORT = :PASSPORT
71
+ PASSPORT_CARD = :PASSPORT_CARD
72
+ EIN_LETTER = :EIN_LETTER
73
+ TAX_RETURN = :TAX_RETURN
74
+ OPERATING_AGREEMENT = :OPERATING_AGREEMENT
75
+ CERTIFICATE_OF_FORMATION = :CERTIFICATE_OF_FORMATION
76
+ CERTIFICATE_OF_GOOD_STANDING = :CERTIFICATE_OF_GOOD_STANDING
77
+ ARTICLES_OF_INCORPORATION = :ARTICLES_OF_INCORPORATION
78
+ ARTICLES_OF_ORGANIZATION = :ARTICLES_OF_ORGANIZATION
79
+ BYLAWS = :BYLAWS
80
+ GOVERNMENT_BUSINESS_LICENSE = :GOVERNMENT_BUSINESS_LICENSE
81
+ PARTNERSHIP_AGREEMENT = :PARTNERSHIP_AGREEMENT
82
+ SS4_FORM = :SS4_FORM
83
+ BANK_STATEMENT = :BANK_STATEMENT
84
+ UTILITY_BILL_STATEMENT = :UTILITY_BILL_STATEMENT
85
+ SSN_CARD = :SSN_CARD
86
+ ITIN_LETTER = :ITIN_LETTER
87
+ FINCEN_BOI_REPORT = :FINCEN_BOI_REPORT
88
+
89
+ # @!method self.values
90
+ # @return [Array<Symbol>]
91
+ end
92
+
93
+ class RequiredDocumentUpload < Lithic::Internal::Type::BaseModel
94
+ # @!attribute token
95
+ # The token of the document upload
96
+ #
97
+ # @return [String, nil]
98
+ optional :token, String
99
+
100
+ # @!attribute accepted_entity_status_reasons
101
+ #
102
+ # @return [Array<String>, nil]
103
+ optional :accepted_entity_status_reasons, Lithic::Internal::Type::ArrayOf[String]
104
+
105
+ # @!attribute created
106
+ # When the document upload was created
107
+ #
108
+ # @return [Time, nil]
109
+ optional :created, Time
110
+
111
+ # @!attribute image_type
112
+ # The type of image that was uploaded
113
+ #
114
+ # @return [Symbol, Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload::ImageType, nil]
115
+ optional :image_type,
116
+ enum: -> { Lithic::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload::ImageType }
117
+
118
+ # @!attribute rejected_entity_status_reasons
119
+ #
120
+ # @return [Array<String>, nil]
121
+ optional :rejected_entity_status_reasons, Lithic::Internal::Type::ArrayOf[String]
122
+
123
+ # @!attribute status
124
+ # The status of the document upload
125
+ #
126
+ # @return [Symbol, Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload::Status, nil]
127
+ optional :status,
128
+ enum: -> { Lithic::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload::Status }
129
+
130
+ # @!attribute status_reasons
131
+ #
132
+ # @return [Array<String>, nil]
133
+ optional :status_reasons, Lithic::Internal::Type::ArrayOf[String]
134
+
135
+ # @!attribute updated
136
+ # When the document upload was last updated
137
+ #
138
+ # @return [Time, nil]
139
+ optional :updated, Time
140
+
141
+ # @!method initialize(token: nil, accepted_entity_status_reasons: nil, created: nil, image_type: nil, rejected_entity_status_reasons: nil, status: nil, status_reasons: nil, updated: nil)
142
+ # A document upload that belongs to the overall account holder document
143
+ #
144
+ # @param token [String] The token of the document upload
145
+ #
146
+ # @param accepted_entity_status_reasons [Array<String>]
147
+ #
148
+ # @param created [Time] When the document upload was created
149
+ #
150
+ # @param image_type [Symbol, Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload::ImageType] The type of image that was uploaded
151
+ #
152
+ # @param rejected_entity_status_reasons [Array<String>]
153
+ #
154
+ # @param status [Symbol, Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload::Status] The status of the document upload
155
+ #
156
+ # @param status_reasons [Array<String>]
157
+ #
158
+ # @param updated [Time] When the document upload was last updated
159
+
160
+ # The type of image that was uploaded
161
+ #
162
+ # @see Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload#image_type
163
+ module ImageType
164
+ extend Lithic::Internal::Type::Enum
165
+
166
+ FRONT = :FRONT
167
+ BACK = :BACK
168
+
169
+ # @!method self.values
170
+ # @return [Array<Symbol>]
171
+ end
172
+
173
+ # The status of the document upload
174
+ #
175
+ # @see Lithic::Models::AccountHolderDocumentUpdatedWebhookEvent::RequiredDocumentUpload#status
176
+ module Status
177
+ extend Lithic::Internal::Type::Enum
178
+
179
+ ACCEPTED = :ACCEPTED
180
+ REJECTED = :REJECTED
181
+ PENDING_UPLOAD = :PENDING_UPLOAD
182
+ UPLOADED = :UPLOADED
183
+ PARTIAL_APPROVAL = :PARTIAL_APPROVAL
184
+
185
+ # @!method self.values
186
+ # @return [Array<Symbol>]
187
+ end
188
+ end
189
+ end
190
+ end
191
+ end