lithic 0.1.0.pre.alpha.26 → 0.1.0.pre.alpha.28

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 (488) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/README.md +94 -54
  4. data/SECURITY.md +2 -2
  5. data/lib/lithic/client.rb +1 -1
  6. data/lib/lithic/internal/type/array_of.rb +8 -0
  7. data/lib/lithic/internal/type/base_model.rb +15 -0
  8. data/lib/lithic/internal/type/boolean.rb +8 -0
  9. data/lib/lithic/internal/type/enum.rb +12 -0
  10. data/lib/lithic/internal/type/file_input.rb +7 -0
  11. data/lib/lithic/internal/type/hash_of.rb +8 -0
  12. data/lib/lithic/internal/type/union.rb +12 -0
  13. data/lib/lithic/internal/type/unknown.rb +8 -0
  14. data/lib/lithic/internal/util.rb +50 -1
  15. data/lib/lithic/internal.rb +3 -0
  16. data/lib/lithic/models/account.rb +16 -16
  17. data/lib/lithic/models/account_holder.rb +49 -49
  18. data/lib/lithic/models/account_holder_create_params.rb +33 -31
  19. data/lib/lithic/models/account_holder_create_response.rb +2 -2
  20. data/lib/lithic/models/account_holder_list_documents_response.rb +2 -2
  21. data/lib/lithic/models/account_holder_simulate_enrollment_document_review_params.rb +4 -4
  22. data/lib/lithic/models/account_holder_simulate_enrollment_review_params.rb +4 -4
  23. data/lib/lithic/models/account_holder_simulate_enrollment_review_response.rb +6 -6
  24. data/lib/lithic/models/account_holder_update_params.rb +29 -27
  25. data/lib/lithic/models/account_holder_update_response.rb +6 -15
  26. data/lib/lithic/models/account_holder_upload_document_params.rb +2 -2
  27. data/lib/lithic/models/account_spend_limits.rb +11 -11
  28. data/lib/lithic/models/account_update_params.rb +4 -4
  29. data/lib/lithic/models/address.rb +2 -2
  30. data/lib/lithic/models/address_update.rb +2 -2
  31. data/lib/lithic/models/aggregate_balance.rb +5 -5
  32. data/lib/lithic/models/aggregate_balance_list_params.rb +2 -2
  33. data/lib/lithic/models/auth_rules/auth_rule.rb +4 -4
  34. data/lib/lithic/models/auth_rules/auth_rule_condition.rb +8 -12
  35. data/lib/lithic/models/auth_rules/conditional_block_parameters.rb +2 -2
  36. data/lib/lithic/models/auth_rules/v2/backtest_results.rb +19 -19
  37. data/lib/lithic/models/auth_rules/v2_apply_response.rb +6 -26
  38. data/lib/lithic/models/auth_rules/v2_create_params.rb +10 -20
  39. data/lib/lithic/models/auth_rules/v2_create_response.rb +6 -26
  40. data/lib/lithic/models/auth_rules/v2_draft_params.rb +8 -18
  41. data/lib/lithic/models/auth_rules/v2_draft_response.rb +6 -26
  42. data/lib/lithic/models/auth_rules/v2_list_params.rb +2 -2
  43. data/lib/lithic/models/auth_rules/v2_list_response.rb +6 -26
  44. data/lib/lithic/models/auth_rules/v2_promote_response.rb +6 -26
  45. data/lib/lithic/models/auth_rules/v2_retrieve_response.rb +6 -26
  46. data/lib/lithic/models/auth_rules/v2_update_params.rb +2 -2
  47. data/lib/lithic/models/auth_rules/v2_update_response.rb +6 -26
  48. data/lib/lithic/models/auth_rules/velocity_limit_params.rb +12 -16
  49. data/lib/lithic/models/balance.rb +5 -5
  50. data/lib/lithic/models/balance_list_params.rb +2 -2
  51. data/lib/lithic/models/book_transfer_create_params.rb +4 -4
  52. data/lib/lithic/models/book_transfer_list_params.rb +6 -6
  53. data/lib/lithic/models/book_transfer_response.rb +18 -18
  54. data/lib/lithic/models/card.rb +2 -2
  55. data/lib/lithic/models/card_convert_physical_params.rb +6 -6
  56. data/lib/lithic/models/card_create_params.rb +12 -12
  57. data/lib/lithic/models/card_list_params.rb +2 -2
  58. data/lib/lithic/models/card_program.rb +2 -2
  59. data/lib/lithic/models/card_provision_params.rb +2 -2
  60. data/lib/lithic/models/card_reissue_params.rb +6 -6
  61. data/lib/lithic/models/card_renew_params.rb +6 -6
  62. data/lib/lithic/models/card_spend_limits.rb +11 -11
  63. data/lib/lithic/models/card_update_params.rb +6 -6
  64. data/lib/lithic/models/card_web_provision_params.rb +2 -2
  65. data/lib/lithic/models/cards/financial_transaction_list_params.rb +6 -6
  66. data/lib/lithic/models/digital_card_art.rb +3 -3
  67. data/lib/lithic/models/dispute.rb +11 -11
  68. data/lib/lithic/models/dispute_create_params.rb +2 -2
  69. data/lib/lithic/models/dispute_evidence.rb +5 -5
  70. data/lib/lithic/models/dispute_list_params.rb +2 -2
  71. data/lib/lithic/models/dispute_update_params.rb +2 -2
  72. data/lib/lithic/models/document.rb +14 -14
  73. data/lib/lithic/models/event.rb +5 -5
  74. data/lib/lithic/models/event_list_attempts_params.rb +2 -2
  75. data/lib/lithic/models/event_list_params.rb +2 -2
  76. data/lib/lithic/models/event_subscription.rb +2 -2
  77. data/lib/lithic/models/events/subscription_create_params.rb +2 -2
  78. data/lib/lithic/models/events/subscription_list_attempts_params.rb +2 -2
  79. data/lib/lithic/models/events/subscription_send_simulated_example_params.rb +2 -2
  80. data/lib/lithic/models/events/subscription_update_params.rb +2 -2
  81. data/lib/lithic/models/external_bank_account_create_params.rb +8 -8
  82. data/lib/lithic/models/external_bank_account_create_response.rb +2 -2
  83. data/lib/lithic/models/external_bank_account_list_params.rb +8 -8
  84. data/lib/lithic/models/external_bank_account_list_response.rb +2 -2
  85. data/lib/lithic/models/external_bank_account_retrieve_response.rb +2 -2
  86. data/lib/lithic/models/external_bank_account_retry_micro_deposits_response.rb +2 -2
  87. data/lib/lithic/models/external_bank_account_retry_prenote_response.rb +6 -6
  88. data/lib/lithic/models/external_bank_account_update_params.rb +6 -6
  89. data/lib/lithic/models/external_bank_account_update_response.rb +2 -2
  90. data/lib/lithic/models/external_bank_accounts/micro_deposit_create_response.rb +2 -2
  91. data/lib/lithic/models/external_payment.rb +22 -22
  92. data/lib/lithic/models/external_payment_create_params.rb +6 -6
  93. data/lib/lithic/models/external_payment_list_params.rb +6 -6
  94. data/lib/lithic/models/external_payment_settle_params.rb +2 -2
  95. data/lib/lithic/models/financial_account.rb +18 -18
  96. data/lib/lithic/models/financial_account_create_params.rb +2 -2
  97. data/lib/lithic/models/financial_account_list_params.rb +2 -2
  98. data/lib/lithic/models/financial_account_update_status_params.rb +4 -4
  99. data/lib/lithic/models/financial_accounts/financial_account_credit_config.rb +6 -6
  100. data/lib/lithic/models/financial_accounts/financial_transaction_list_params.rb +6 -6
  101. data/lib/lithic/models/financial_accounts/loan_tape.rb +68 -68
  102. data/lib/lithic/models/financial_accounts/statement.rb +46 -46
  103. data/lib/lithic/models/financial_accounts/statements/statement_line_items.rb +10 -10
  104. data/lib/lithic/models/financial_accounts/statements.rb +2 -2
  105. data/lib/lithic/models/financial_transaction.rb +19 -19
  106. data/lib/lithic/models/kyb.rb +27 -27
  107. data/lib/lithic/models/kyb_business_entity.rb +5 -5
  108. data/lib/lithic/models/kyc.rb +12 -12
  109. data/lib/lithic/models/kyc_exempt.rb +10 -10
  110. data/lib/lithic/models/management_operation_create_params.rb +6 -6
  111. data/lib/lithic/models/management_operation_list_params.rb +4 -4
  112. data/lib/lithic/models/management_operation_transaction.rb +25 -25
  113. data/lib/lithic/models/message_attempt.rb +5 -5
  114. data/lib/lithic/models/non_pci_card.rb +24 -24
  115. data/lib/lithic/models/payment.rb +38 -38
  116. data/lib/lithic/models/payment_create_params.rb +9 -9
  117. data/lib/lithic/models/payment_create_response.rb +2 -2
  118. data/lib/lithic/models/payment_list_params.rb +6 -6
  119. data/lib/lithic/models/payment_retry_response.rb +2 -2
  120. data/lib/lithic/models/payment_simulate_action_params.rb +4 -4
  121. data/lib/lithic/models/payment_simulate_receipt_params.rb +2 -2
  122. data/lib/lithic/models/reports/settlement/network_total_list_params.rb +2 -2
  123. data/lib/lithic/models/required_document.rb +2 -2
  124. data/lib/lithic/models/responder_endpoint_check_status_params.rb +2 -2
  125. data/lib/lithic/models/responder_endpoint_create_params.rb +2 -2
  126. data/lib/lithic/models/responder_endpoint_delete_params.rb +2 -2
  127. data/lib/lithic/models/settlement_detail.rb +11 -11
  128. data/lib/lithic/models/settlement_report.rb +4 -4
  129. data/lib/lithic/models/settlement_summary_details.rb +4 -4
  130. data/lib/lithic/models/shipping_address.rb +2 -2
  131. data/lib/lithic/models/three_ds/authentication_simulate_params.rb +8 -7
  132. data/lib/lithic/models/three_ds/challenge_response.rb +3 -3
  133. data/lib/lithic/models/tokenization.rb +19 -19
  134. data/lib/lithic/models/tokenization_list_params.rb +2 -2
  135. data/lib/lithic/models/tokenization_resend_activation_code_params.rb +2 -2
  136. data/lib/lithic/models/tokenization_retrieve_response.rb +2 -2
  137. data/lib/lithic/models/tokenization_simulate_params.rb +4 -4
  138. data/lib/lithic/models/tokenization_simulate_response.rb +2 -2
  139. data/lib/lithic/models/tokenization_update_digital_card_art_response.rb +2 -2
  140. data/lib/lithic/models/transaction.rb +162 -160
  141. data/lib/lithic/models/transaction_list_params.rb +4 -4
  142. data/lib/lithic/models/transaction_simulate_authorization_params.rb +2 -2
  143. data/lib/lithic/models/transaction_simulate_void_params.rb +2 -2
  144. data/lib/lithic/models/transactions/enhanced_commercial_data_retrieve_response.rb +2 -2
  145. data/lib/lithic/models/transactions/events/enhanced_data.rb +29 -29
  146. data/lib/lithic/models/transfer.rb +25 -25
  147. data/lib/lithic/models.rb +30 -19
  148. data/lib/lithic/resources/account_holders.rb +24 -24
  149. data/lib/lithic/resources/accounts.rb +6 -6
  150. data/lib/lithic/resources/aggregate_balances.rb +2 -2
  151. data/lib/lithic/resources/auth_rules/v2/backtests.rb +1 -1
  152. data/lib/lithic/resources/auth_rules/v2.rb +5 -5
  153. data/lib/lithic/resources/auth_stream_enrollment.rb +1 -1
  154. data/lib/lithic/resources/balances.rb +2 -2
  155. data/lib/lithic/resources/book_transfers.rb +9 -9
  156. data/lib/lithic/resources/card_programs.rb +2 -2
  157. data/lib/lithic/resources/cards/financial_transactions.rb +5 -5
  158. data/lib/lithic/resources/cards.rb +30 -30
  159. data/lib/lithic/resources/credit_products/extended_credit.rb +1 -1
  160. data/lib/lithic/resources/digital_card_art.rb +2 -2
  161. data/lib/lithic/resources/disputes.rb +12 -12
  162. data/lib/lithic/resources/events/subscriptions.rb +9 -9
  163. data/lib/lithic/resources/events.rb +5 -5
  164. data/lib/lithic/resources/external_bank_accounts.rb +11 -11
  165. data/lib/lithic/resources/external_payments.rb +14 -14
  166. data/lib/lithic/resources/financial_accounts/credit_configuration.rb +2 -2
  167. data/lib/lithic/resources/financial_accounts/financial_transactions.rb +5 -5
  168. data/lib/lithic/resources/financial_accounts/loan_tapes.rb +2 -2
  169. data/lib/lithic/resources/financial_accounts/statements/line_items.rb +1 -1
  170. data/lib/lithic/resources/financial_accounts/statements.rb +2 -2
  171. data/lib/lithic/resources/financial_accounts.rb +9 -9
  172. data/lib/lithic/resources/management_operations.rb +9 -9
  173. data/lib/lithic/resources/payments.rb +11 -11
  174. data/lib/lithic/resources/reports/settlement/network_totals.rb +1 -1
  175. data/lib/lithic/resources/reports/settlement.rb +2 -2
  176. data/lib/lithic/resources/responder_endpoints.rb +4 -4
  177. data/lib/lithic/resources/three_ds/authentication.rb +3 -3
  178. data/lib/lithic/resources/three_ds/decisioning.rb +1 -1
  179. data/lib/lithic/resources/tokenization_decisioning.rb +1 -1
  180. data/lib/lithic/resources/tokenizations.rb +5 -5
  181. data/lib/lithic/resources/transactions/events/enhanced_commercial_data.rb +1 -1
  182. data/lib/lithic/resources/transactions.rb +6 -6
  183. data/lib/lithic/resources/transfers.rb +1 -1
  184. data/lib/lithic/version.rb +1 -1
  185. data/rbi/lithic/internal/type/array_of.rbi +6 -0
  186. data/rbi/lithic/internal/type/base_model.rbi +5 -0
  187. data/rbi/lithic/internal/type/boolean.rbi +6 -0
  188. data/rbi/lithic/internal/type/enum.rbi +5 -0
  189. data/rbi/lithic/internal/type/file_input.rbi +5 -0
  190. data/rbi/lithic/internal/type/hash_of.rbi +6 -0
  191. data/rbi/lithic/internal/type/union.rbi +5 -0
  192. data/rbi/lithic/internal/type/unknown.rbi +6 -0
  193. data/rbi/lithic/internal/util.rbi +31 -0
  194. data/rbi/lithic/internal.rbi +3 -0
  195. data/rbi/lithic/models/auth_rules/auth_rule_condition.rbi +12 -4
  196. data/rbi/lithic/models/auth_rules/v2_apply_response.rbi +4 -20
  197. data/rbi/lithic/models/auth_rules/v2_create_response.rbi +4 -20
  198. data/rbi/lithic/models/auth_rules/v2_draft_response.rbi +4 -20
  199. data/rbi/lithic/models/auth_rules/v2_list_response.rbi +4 -20
  200. data/rbi/lithic/models/auth_rules/v2_promote_response.rbi +4 -20
  201. data/rbi/lithic/models/auth_rules/v2_retrieve_response.rbi +4 -20
  202. data/rbi/lithic/models/auth_rules/v2_update_response.rbi +4 -20
  203. data/rbi/lithic/resources/account_holders.rbi +1 -6
  204. data/sig/lithic/internal/type/array_of.rbs +3 -0
  205. data/sig/lithic/internal/type/base_model.rbs +2 -0
  206. data/sig/lithic/internal/type/boolean.rbs +3 -0
  207. data/sig/lithic/internal/type/enum.rbs +2 -0
  208. data/sig/lithic/internal/type/file_input.rbs +2 -0
  209. data/sig/lithic/internal/type/hash_of.rbs +3 -0
  210. data/sig/lithic/internal/type/union.rbs +2 -0
  211. data/sig/lithic/internal/type/unknown.rbs +3 -0
  212. data/sig/lithic/internal/util.rbs +12 -0
  213. data/sig/lithic/internal.rbs +2 -0
  214. data/sig/lithic/models/account.rbs +33 -4
  215. data/sig/lithic/models/account_holder.rbs +116 -36
  216. data/sig/lithic/models/account_holder_create_params.rbs +71 -0
  217. data/sig/lithic/models/account_holder_create_response.rbs +10 -0
  218. data/sig/lithic/models/account_holder_list_documents_params.rbs +2 -0
  219. data/sig/lithic/models/account_holder_list_documents_response.rbs +2 -0
  220. data/sig/lithic/models/account_holder_list_params.rbs +15 -0
  221. data/sig/lithic/models/account_holder_retrieve_document_params.rbs +5 -0
  222. data/sig/lithic/models/account_holder_retrieve_params.rbs +2 -0
  223. data/sig/lithic/models/account_holder_simulate_enrollment_document_review_params.rbs +8 -0
  224. data/sig/lithic/models/account_holder_simulate_enrollment_review_params.rbs +13 -6
  225. data/sig/lithic/models/account_holder_simulate_enrollment_review_response.rbs +87 -0
  226. data/sig/lithic/models/account_holder_update_params.rbs +72 -0
  227. data/sig/lithic/models/account_holder_update_response.rbs +107 -0
  228. data/sig/lithic/models/account_holder_upload_document_params.rbs +6 -0
  229. data/sig/lithic/models/account_list_params.rbs +9 -0
  230. data/sig/lithic/models/account_retrieve_params.rbs +2 -0
  231. data/sig/lithic/models/account_retrieve_spend_limits_params.rbs +2 -0
  232. data/sig/lithic/models/account_spend_limits.rbs +12 -0
  233. data/sig/lithic/models/account_update_params.rbs +18 -0
  234. data/sig/lithic/models/address.rbs +9 -0
  235. data/sig/lithic/models/address_update.rbs +9 -0
  236. data/sig/lithic/models/aggregate_balance.rbs +17 -4
  237. data/sig/lithic/models/aggregate_balance_list_params.rbs +5 -0
  238. data/sig/lithic/models/api_status.rbs +2 -0
  239. data/sig/lithic/models/auth_rules/auth_rule.rbs +16 -4
  240. data/sig/lithic/models/auth_rules/auth_rule_condition.rbs +18 -12
  241. data/sig/lithic/models/auth_rules/conditional_block_parameters.rbs +4 -0
  242. data/sig/lithic/models/auth_rules/v2/backtest_create_params.rbs +6 -0
  243. data/sig/lithic/models/auth_rules/v2/backtest_create_response.rbs +2 -0
  244. data/sig/lithic/models/auth_rules/v2/backtest_results.rbs +39 -0
  245. data/sig/lithic/models/auth_rules/v2/backtest_retrieve_params.rbs +5 -0
  246. data/sig/lithic/models/auth_rules/v2_apply_params.rbs +8 -0
  247. data/sig/lithic/models/auth_rules/v2_apply_response.rbs +43 -0
  248. data/sig/lithic/models/auth_rules/v2_create_params.rbs +21 -0
  249. data/sig/lithic/models/auth_rules/v2_create_response.rbs +43 -0
  250. data/sig/lithic/models/auth_rules/v2_delete_params.rbs +2 -0
  251. data/sig/lithic/models/auth_rules/v2_draft_params.rbs +15 -0
  252. data/sig/lithic/models/auth_rules/v2_draft_response.rbs +43 -0
  253. data/sig/lithic/models/auth_rules/v2_list_params.rbs +10 -0
  254. data/sig/lithic/models/auth_rules/v2_list_response.rbs +43 -0
  255. data/sig/lithic/models/auth_rules/v2_promote_params.rbs +2 -0
  256. data/sig/lithic/models/auth_rules/v2_promote_response.rbs +43 -0
  257. data/sig/lithic/models/auth_rules/v2_report_params.rbs +2 -0
  258. data/sig/lithic/models/auth_rules/v2_report_response.rbs +2 -0
  259. data/sig/lithic/models/auth_rules/v2_retrieve_params.rbs +2 -0
  260. data/sig/lithic/models/auth_rules/v2_retrieve_response.rbs +43 -0
  261. data/sig/lithic/models/auth_rules/v2_update_params.rbs +10 -0
  262. data/sig/lithic/models/auth_rules/v2_update_response.rbs +43 -0
  263. data/sig/lithic/models/auth_rules/velocity_limit_params.rbs +23 -8
  264. data/sig/lithic/models/auth_stream_enrollment_retrieve_secret_params.rbs +2 -0
  265. data/sig/lithic/models/auth_stream_enrollment_rotate_secret_params.rbs +2 -0
  266. data/sig/lithic/models/auth_stream_secret.rbs +2 -0
  267. data/sig/lithic/models/balance.rbs +17 -4
  268. data/sig/lithic/models/balance_list_params.rbs +8 -0
  269. data/sig/lithic/models/book_transfer_create_params.rbs +12 -0
  270. data/sig/lithic/models/book_transfer_list_params.rbs +15 -0
  271. data/sig/lithic/models/book_transfer_response.rbs +46 -20
  272. data/sig/lithic/models/book_transfer_retrieve_params.rbs +2 -0
  273. data/sig/lithic/models/book_transfer_reverse_params.rbs +2 -0
  274. data/sig/lithic/models/card.rbs +2 -0
  275. data/sig/lithic/models/card_convert_physical_params.rbs +8 -0
  276. data/sig/lithic/models/card_create_params.rbs +21 -0
  277. data/sig/lithic/models/card_embed_params.rbs +6 -0
  278. data/sig/lithic/models/card_list_params.rbs +12 -0
  279. data/sig/lithic/models/card_program.rbs +10 -0
  280. data/sig/lithic/models/card_program_list_params.rbs +7 -0
  281. data/sig/lithic/models/card_program_retrieve_params.rbs +2 -0
  282. data/sig/lithic/models/card_provision_params.rbs +10 -0
  283. data/sig/lithic/models/card_provision_response.rbs +2 -0
  284. data/sig/lithic/models/card_reissue_params.rbs +8 -0
  285. data/sig/lithic/models/card_renew_params.rbs +10 -0
  286. data/sig/lithic/models/card_retrieve_params.rbs +2 -0
  287. data/sig/lithic/models/card_retrieve_spend_limits_params.rbs +2 -0
  288. data/sig/lithic/models/card_search_by_pan_params.rbs +2 -0
  289. data/sig/lithic/models/card_spend_limits.rbs +24 -0
  290. data/sig/lithic/models/card_update_params.rbs +11 -0
  291. data/sig/lithic/models/card_web_provision_params.rbs +5 -0
  292. data/sig/lithic/models/card_web_provision_response.rbs +14 -0
  293. data/sig/lithic/models/cards/aggregate_balance_list_params.rbs +6 -0
  294. data/sig/lithic/models/cards/aggregate_balance_list_response.rbs +12 -0
  295. data/sig/lithic/models/cards/balance_list_params.rbs +6 -0
  296. data/sig/lithic/models/cards/balance_list_response.rbs +13 -0
  297. data/sig/lithic/models/cards/financial_transaction_list_params.rbs +11 -0
  298. data/sig/lithic/models/cards/financial_transaction_retrieve_params.rbs +5 -0
  299. data/sig/lithic/models/carrier.rbs +2 -0
  300. data/sig/lithic/models/client_api_status_params.rbs +2 -0
  301. data/sig/lithic/models/credit_products/extended_credit.rbs +2 -0
  302. data/sig/lithic/models/credit_products/extended_credit_retrieve_params.rbs +2 -0
  303. data/sig/lithic/models/credit_products/prime_rate_create_params.rbs +6 -0
  304. data/sig/lithic/models/credit_products/prime_rate_retrieve_params.rbs +6 -0
  305. data/sig/lithic/models/credit_products/prime_rate_retrieve_response.rbs +7 -0
  306. data/sig/lithic/models/digital_card_art.rbs +14 -4
  307. data/sig/lithic/models/digital_card_art_list_params.rbs +7 -0
  308. data/sig/lithic/models/digital_card_art_retrieve_params.rbs +2 -0
  309. data/sig/lithic/models/dispute.rbs +33 -12
  310. data/sig/lithic/models/dispute_create_params.rbs +9 -0
  311. data/sig/lithic/models/dispute_delete_evidence_params.rbs +5 -0
  312. data/sig/lithic/models/dispute_delete_params.rbs +2 -0
  313. data/sig/lithic/models/dispute_evidence.rbs +14 -4
  314. data/sig/lithic/models/dispute_initiate_evidence_upload_params.rbs +5 -0
  315. data/sig/lithic/models/dispute_list_evidences_params.rbs +9 -0
  316. data/sig/lithic/models/dispute_list_params.rbs +11 -0
  317. data/sig/lithic/models/dispute_retrieve_evidence_params.rbs +5 -0
  318. data/sig/lithic/models/dispute_retrieve_params.rbs +2 -0
  319. data/sig/lithic/models/dispute_update_params.rbs +8 -0
  320. data/sig/lithic/models/document.rbs +36 -16
  321. data/sig/lithic/models/event.rbs +11 -4
  322. data/sig/lithic/models/event_list_attempts_params.rbs +10 -0
  323. data/sig/lithic/models/event_list_params.rbs +17 -6
  324. data/sig/lithic/models/event_retrieve_params.rbs +2 -0
  325. data/sig/lithic/models/event_subscription.rbs +12 -4
  326. data/sig/lithic/models/events/event_subscription_resend_params.rbs +5 -0
  327. data/sig/lithic/models/events/subscription_create_params.rbs +14 -6
  328. data/sig/lithic/models/events/subscription_delete_params.rbs +2 -0
  329. data/sig/lithic/models/events/subscription_list_attempts_params.rbs +10 -0
  330. data/sig/lithic/models/events/subscription_list_params.rbs +7 -0
  331. data/sig/lithic/models/events/subscription_recover_params.rbs +6 -0
  332. data/sig/lithic/models/events/subscription_replay_missing_params.rbs +6 -0
  333. data/sig/lithic/models/events/subscription_retrieve_params.rbs +2 -0
  334. data/sig/lithic/models/events/subscription_retrieve_secret_params.rbs +2 -0
  335. data/sig/lithic/models/events/subscription_retrieve_secret_response.rbs +2 -0
  336. data/sig/lithic/models/events/subscription_rotate_secret_params.rbs +2 -0
  337. data/sig/lithic/models/events/subscription_send_simulated_example_params.rbs +5 -0
  338. data/sig/lithic/models/events/subscription_update_params.rbs +14 -6
  339. data/sig/lithic/models/external_bank_account_address.rbs +9 -0
  340. data/sig/lithic/models/external_bank_account_create_params.rbs +22 -0
  341. data/sig/lithic/models/external_bank_account_create_response.rbs +25 -0
  342. data/sig/lithic/models/external_bank_account_list_params.rbs +31 -18
  343. data/sig/lithic/models/external_bank_account_list_response.rbs +25 -0
  344. data/sig/lithic/models/external_bank_account_retrieve_params.rbs +2 -0
  345. data/sig/lithic/models/external_bank_account_retrieve_response.rbs +25 -0
  346. data/sig/lithic/models/external_bank_account_retry_micro_deposits_params.rbs +5 -0
  347. data/sig/lithic/models/external_bank_account_retry_micro_deposits_response.rbs +25 -0
  348. data/sig/lithic/models/external_bank_account_retry_prenote_params.rbs +5 -0
  349. data/sig/lithic/models/external_bank_account_retry_prenote_response.rbs +25 -0
  350. data/sig/lithic/models/external_bank_account_update_params.rbs +13 -0
  351. data/sig/lithic/models/external_bank_account_update_response.rbs +25 -0
  352. data/sig/lithic/models/external_bank_accounts/micro_deposit_create_params.rbs +5 -0
  353. data/sig/lithic/models/external_bank_accounts/micro_deposit_create_response.rbs +25 -0
  354. data/sig/lithic/models/external_payment.rbs +55 -28
  355. data/sig/lithic/models/external_payment_cancel_params.rbs +6 -0
  356. data/sig/lithic/models/external_payment_create_params.rbs +13 -0
  357. data/sig/lithic/models/external_payment_list_params.rbs +14 -0
  358. data/sig/lithic/models/external_payment_release_params.rbs +6 -0
  359. data/sig/lithic/models/external_payment_retrieve_params.rbs +2 -0
  360. data/sig/lithic/models/external_payment_reverse_params.rbs +6 -0
  361. data/sig/lithic/models/external_payment_settle_params.rbs +7 -0
  362. data/sig/lithic/models/financial_account.rbs +45 -20
  363. data/sig/lithic/models/financial_account_create_params.rbs +9 -0
  364. data/sig/lithic/models/financial_account_list_params.rbs +7 -0
  365. data/sig/lithic/models/financial_account_retrieve_params.rbs +2 -0
  366. data/sig/lithic/models/financial_account_update_params.rbs +5 -0
  367. data/sig/lithic/models/financial_account_update_status_params.rbs +6 -0
  368. data/sig/lithic/models/financial_accounts/balance_list_params.rbs +6 -0
  369. data/sig/lithic/models/financial_accounts/balance_list_response.rbs +13 -0
  370. data/sig/lithic/models/financial_accounts/credit_configuration_retrieve_params.rbs +2 -0
  371. data/sig/lithic/models/financial_accounts/credit_configuration_update_params.rbs +8 -0
  372. data/sig/lithic/models/financial_accounts/financial_account_credit_config.rbs +19 -8
  373. data/sig/lithic/models/financial_accounts/financial_transaction_list_params.rbs +11 -0
  374. data/sig/lithic/models/financial_accounts/financial_transaction_retrieve_params.rbs +5 -0
  375. data/sig/lithic/models/financial_accounts/loan_tape.rbs +156 -16
  376. data/sig/lithic/models/financial_accounts/loan_tape_list_params.rbs +9 -0
  377. data/sig/lithic/models/financial_accounts/loan_tape_retrieve_params.rbs +5 -0
  378. data/sig/lithic/models/financial_accounts/statement.rbs +110 -20
  379. data/sig/lithic/models/financial_accounts/statement_list_params.rbs +10 -0
  380. data/sig/lithic/models/financial_accounts/statement_retrieve_params.rbs +5 -0
  381. data/sig/lithic/models/financial_accounts/statements/line_item_list_params.rbs +8 -0
  382. data/sig/lithic/models/financial_accounts/statements/statement_line_items.rbs +28 -8
  383. data/sig/lithic/models/financial_accounts/statements.rbs +5 -0
  384. data/sig/lithic/models/financial_transaction.rbs +46 -24
  385. data/sig/lithic/models/funding_event_list_params.rbs +7 -0
  386. data/sig/lithic/models/funding_event_list_response.rbs +13 -0
  387. data/sig/lithic/models/funding_event_retrieve_details_params.rbs +2 -0
  388. data/sig/lithic/models/funding_event_retrieve_details_response.rbs +6 -0
  389. data/sig/lithic/models/funding_event_retrieve_params.rbs +2 -0
  390. data/sig/lithic/models/funding_event_retrieve_response.rbs +13 -0
  391. data/sig/lithic/models/kyb.rbs +55 -4
  392. data/sig/lithic/models/kyb_business_entity.rbs +18 -0
  393. data/sig/lithic/models/kyc.rbs +22 -4
  394. data/sig/lithic/models/kyc_exempt.rbs +20 -8
  395. data/sig/lithic/models/management_operation_create_params.rbs +14 -0
  396. data/sig/lithic/models/management_operation_list_params.rbs +13 -0
  397. data/sig/lithic/models/management_operation_retrieve_params.rbs +2 -0
  398. data/sig/lithic/models/management_operation_reverse_params.rbs +6 -0
  399. data/sig/lithic/models/management_operation_transaction.rbs +63 -28
  400. data/sig/lithic/models/message_attempt.rbs +15 -4
  401. data/sig/lithic/models/non_pci_card.rbs +58 -24
  402. data/sig/lithic/models/payment.rbs +82 -42
  403. data/sig/lithic/models/payment_create_params.rbs +23 -4
  404. data/sig/lithic/models/payment_create_response.rbs +2 -0
  405. data/sig/lithic/models/payment_list_params.rbs +15 -0
  406. data/sig/lithic/models/payment_retrieve_params.rbs +2 -0
  407. data/sig/lithic/models/payment_retry_params.rbs +2 -0
  408. data/sig/lithic/models/payment_retry_response.rbs +2 -0
  409. data/sig/lithic/models/payment_simulate_action_params.rbs +7 -0
  410. data/sig/lithic/models/payment_simulate_action_response.rbs +6 -0
  411. data/sig/lithic/models/payment_simulate_receipt_params.rbs +9 -0
  412. data/sig/lithic/models/payment_simulate_receipt_response.rbs +6 -0
  413. data/sig/lithic/models/payment_simulate_release_params.rbs +5 -0
  414. data/sig/lithic/models/payment_simulate_release_response.rbs +6 -0
  415. data/sig/lithic/models/payment_simulate_return_params.rbs +6 -0
  416. data/sig/lithic/models/payment_simulate_return_response.rbs +6 -0
  417. data/sig/lithic/models/reports/settlement/network_total_list_params.rbs +15 -0
  418. data/sig/lithic/models/reports/settlement/network_total_list_response.rbs +21 -0
  419. data/sig/lithic/models/reports/settlement/network_total_retrieve_params.rbs +2 -0
  420. data/sig/lithic/models/reports/settlement/network_total_retrieve_response.rbs +21 -0
  421. data/sig/lithic/models/reports/settlement_list_details_params.rbs +7 -0
  422. data/sig/lithic/models/reports/settlement_summary_params.rbs +2 -0
  423. data/sig/lithic/models/required_document.rbs +6 -0
  424. data/sig/lithic/models/responder_endpoint_check_status_params.rbs +5 -0
  425. data/sig/lithic/models/responder_endpoint_create_params.rbs +6 -0
  426. data/sig/lithic/models/responder_endpoint_create_response.rbs +2 -0
  427. data/sig/lithic/models/responder_endpoint_delete_params.rbs +5 -0
  428. data/sig/lithic/models/responder_endpoint_status.rbs +2 -0
  429. data/sig/lithic/models/settlement_detail.rbs +34 -8
  430. data/sig/lithic/models/settlement_report.rbs +14 -0
  431. data/sig/lithic/models/settlement_summary_details.rbs +17 -6
  432. data/sig/lithic/models/shipping_address.rbs +14 -0
  433. data/sig/lithic/models/three_ds/authentication_retrieve_params.rbs +2 -0
  434. data/sig/lithic/models/three_ds/authentication_retrieve_response.rbs +102 -0
  435. data/sig/lithic/models/three_ds/authentication_simulate_otp_entry_params.rbs +6 -0
  436. data/sig/lithic/models/three_ds/authentication_simulate_params.rbs +17 -0
  437. data/sig/lithic/models/three_ds/authentication_simulate_response.rbs +2 -0
  438. data/sig/lithic/models/three_ds/challenge_response.rbs +5 -0
  439. data/sig/lithic/models/three_ds/decisioning_challenge_response_params.rbs +2 -0
  440. data/sig/lithic/models/three_ds/decisioning_retrieve_secret_params.rbs +2 -0
  441. data/sig/lithic/models/three_ds/decisioning_retrieve_secret_response.rbs +2 -0
  442. data/sig/lithic/models/three_ds/decisioning_rotate_secret_params.rbs +2 -0
  443. data/sig/lithic/models/tokenization.rbs +47 -24
  444. data/sig/lithic/models/tokenization_activate_params.rbs +2 -0
  445. data/sig/lithic/models/tokenization_deactivate_params.rbs +2 -0
  446. data/sig/lithic/models/tokenization_decisioning_retrieve_secret_params.rbs +2 -0
  447. data/sig/lithic/models/tokenization_decisioning_rotate_secret_params.rbs +2 -0
  448. data/sig/lithic/models/tokenization_decisioning_rotate_secret_response.rbs +2 -0
  449. data/sig/lithic/models/tokenization_list_params.rbs +12 -0
  450. data/sig/lithic/models/tokenization_pause_params.rbs +2 -0
  451. data/sig/lithic/models/tokenization_resend_activation_code_params.rbs +5 -0
  452. data/sig/lithic/models/tokenization_retrieve_params.rbs +2 -0
  453. data/sig/lithic/models/tokenization_retrieve_response.rbs +2 -0
  454. data/sig/lithic/models/tokenization_secret.rbs +2 -0
  455. data/sig/lithic/models/tokenization_simulate_params.rbs +12 -0
  456. data/sig/lithic/models/tokenization_simulate_response.rbs +2 -0
  457. data/sig/lithic/models/tokenization_unpause_params.rbs +2 -0
  458. data/sig/lithic/models/tokenization_update_digital_card_art_params.rbs +5 -0
  459. data/sig/lithic/models/tokenization_update_digital_card_art_response.rbs +2 -0
  460. data/sig/lithic/models/transaction.rbs +277 -90
  461. data/sig/lithic/models/transaction_expire_authorization_params.rbs +2 -0
  462. data/sig/lithic/models/transaction_list_params.rbs +13 -0
  463. data/sig/lithic/models/transaction_retrieve_params.rbs +2 -0
  464. data/sig/lithic/models/transaction_simulate_authorization_advice_params.rbs +6 -0
  465. data/sig/lithic/models/transaction_simulate_authorization_advice_response.rbs +2 -0
  466. data/sig/lithic/models/transaction_simulate_authorization_params.rbs +14 -0
  467. data/sig/lithic/models/transaction_simulate_authorization_response.rbs +2 -0
  468. data/sig/lithic/models/transaction_simulate_clearing_params.rbs +6 -0
  469. data/sig/lithic/models/transaction_simulate_clearing_response.rbs +2 -0
  470. data/sig/lithic/models/transaction_simulate_credit_authorization_params.rbs +9 -0
  471. data/sig/lithic/models/transaction_simulate_credit_authorization_response.rbs +2 -0
  472. data/sig/lithic/models/transaction_simulate_return_params.rbs +7 -0
  473. data/sig/lithic/models/transaction_simulate_return_response.rbs +2 -0
  474. data/sig/lithic/models/transaction_simulate_return_reversal_params.rbs +2 -0
  475. data/sig/lithic/models/transaction_simulate_return_reversal_response.rbs +2 -0
  476. data/sig/lithic/models/transaction_simulate_void_params.rbs +7 -0
  477. data/sig/lithic/models/transaction_simulate_void_response.rbs +2 -0
  478. data/sig/lithic/models/transactions/enhanced_commercial_data_retrieve_params.rbs +2 -0
  479. data/sig/lithic/models/transactions/enhanced_commercial_data_retrieve_response.rbs +4 -0
  480. data/sig/lithic/models/transactions/events/enhanced_commercial_data_retrieve_params.rbs +2 -0
  481. data/sig/lithic/models/transactions/events/enhanced_data.rbs +75 -24
  482. data/sig/lithic/models/transfer.rbs +57 -27
  483. data/sig/lithic/models/transfer_create_params.rbs +9 -0
  484. data/sig/lithic/resources/account_holders.rbs +1 -1
  485. data/sig/lithic/resources/events/subscriptions.rbs +2 -2
  486. data/sig/lithic/resources/events.rbs +1 -1
  487. data/sig/lithic/resources/external_bank_accounts.rbs +3 -3
  488. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f10f3f3cedbb34d6d368733a60b4bdfc92ba330fe109d479a63006c93ff911fc
4
- data.tar.gz: b5b22aa1165e17b822d55cb3b358375830cb22ffbe6d97fd9da60bdd49248e5c
3
+ metadata.gz: 426157664cabd078c520246758b0be9f3e439382455dd4fe952a8574d9e3078c
4
+ data.tar.gz: b525e1679bbee873e6611a88b5f66d7fc84ef86d61c269cba80f3e9b0e4eea87
5
5
  SHA512:
6
- metadata.gz: 0f3b7b0ed169bf42c5802fd5acb76004603da0cb03827e8d5862e1e3066ef0cbcd49f6e5a1f87cacf71a00759cda1064476ec80eb42d1c4ddc898a990b632cf8
7
- data.tar.gz: 0c44fe7f1151d82fde547b4202f82a9f8358bfa9f6f71b360af53fd7e630907eb02fbbcc3444a72a6ba547a8771b4839b60b8b3ed91725c23075437d9c2dc39e
6
+ metadata.gz: d22da8f96ade56b0e448482b4e5a759737f91c9f6291b0425a723de9674d2ea9389225afd2beb280a127aef3262f4bc1e78d307f1379d4d91a3127574b7b8d00
7
+ data.tar.gz: 458c6e85d3e27c08d31b7a27dd88fc8f7cc522f296268b1b3070c3c6b2805d7e706daa0280d09a14a6516056f290bdf6ad2c5bb4832f1f32222bbb008e789722
data/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.28 (2025-05-23)
4
+
5
+ Full Changelog: [v0.1.0-alpha.27...v0.1.0-alpha.28](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0-alpha.27...v0.1.0-alpha.28)
6
+
7
+ ### Bug Fixes
8
+
9
+ * prevent rubocop from mangling `===` to `is_a?` check ([17d829b](https://github.com/lithic-com/lithic-ruby/commit/17d829bdf146635a77f48734396b7bab4ace5ec7))
10
+
11
+
12
+ ### Chores
13
+
14
+ * **docs:** grammar improvements ([32caea3](https://github.com/lithic-com/lithic-ruby/commit/32caea327297944f1981f54b5c6180b63f938e1d))
15
+ * force utf-8 locale via `RUBYOPT` when formatting ([1b5a754](https://github.com/lithic-com/lithic-ruby/commit/1b5a754e631bf579fc6a79569ad847cc65ddff1c))
16
+ * use fully qualified names for yard annotations and rbs aliases ([2f72cee](https://github.com/lithic-com/lithic-ruby/commit/2f72cee42923b41ac739d0dd7b118152a36a8b93))
17
+
18
+ ## 0.1.0-alpha.27 (2025-05-20)
19
+
20
+ Full Changelog: [v0.1.0-alpha.26...v0.1.0-alpha.27](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0-alpha.26...v0.1.0-alpha.27)
21
+
22
+ ### Bug Fixes
23
+
24
+ * correctly instantiate sorbet type aliases for enums and unions ([456477f](https://github.com/lithic-com/lithic-ruby/commit/456477fed1f46dd9ecfd278ddda29c642e5684f7))
25
+
26
+
27
+ ### Chores
28
+
29
+ * refine Yard and Sorbet types and ensure linting is turned on for examples ([1c7093d](https://github.com/lithic-com/lithic-ruby/commit/1c7093dac0961af658685d5788c2b0dbe1871947))
30
+ * use sorbet union aliases where available ([68cbe7c](https://github.com/lithic-com/lithic-ruby/commit/68cbe7c8831d674ddb1080ca53ae1018966f1c87))
31
+ * whitespaces ([862a44f](https://github.com/lithic-com/lithic-ruby/commit/862a44f890c5b9d0034a99e2d09125f9a4551a1b))
32
+
33
+
34
+ ### Documentation
35
+
36
+ * rewrite much of README.md for readability ([786647f](https://github.com/lithic-com/lithic-ruby/commit/786647f1e376849b800dfb59fdc941925590ab17))
37
+
3
38
  ## 0.1.0-alpha.26 (2025-05-14)
4
39
 
5
40
  Full Changelog: [v0.1.0-alpha.25...v0.1.0-alpha.26](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0-alpha.25...v0.1.0-alpha.26)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Lithic Ruby API library
2
2
 
3
- The Lithic Ruby library provides convenient access to the Lithic REST API from any Ruby 3.2.0+ application.
3
+ The Lithic Ruby library provides convenient access to the Lithic REST API from any Ruby 3.2.0+ application. It ships with comprehensive types & docstrings in Yard, RBS, and RBI – [see below](https://github.com/lithic-com/lithic-ruby#Sorbet) for usage with Sorbet. The standard library's `net/http` is used as the HTTP transport, with connection pooling via the `connection_pool` gem.
4
4
 
5
5
  ## Documentation
6
6
 
@@ -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.pre.alpha.26"
18
+ gem "lithic", "~> 0.1.0.pre.alpha.28"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
@@ -36,16 +36,6 @@ card = lithic.cards.create(type: "SINGLE_USE")
36
36
  puts(card.token)
37
37
  ```
38
38
 
39
- ## Sorbet
40
-
41
- This library is written with [Sorbet type definitions](https://sorbet.org/docs/rbi). However, there is no runtime dependency on the `sorbet-runtime`.
42
-
43
- When using sorbet, it is recommended to use model classes as below. This provides stronger type checking and tooling integration.
44
-
45
- ```ruby
46
- lithic.cards.create(type: "SINGLE_USE")
47
- ```
48
-
49
39
  ### Pagination
50
40
 
51
41
  List methods in the Lithic API are paginated.
@@ -65,15 +55,30 @@ page.auto_paging_each do |card|
65
55
  end
66
56
  ```
67
57
 
68
- ### Errors
58
+ Alternatively, you can use the `#next_page?` and `#next_page` methods for more granular control working with pages.
59
+
60
+ ```ruby
61
+ if page.next_page?
62
+ new_page = page.next_page
63
+ puts(new_page.data[0].product_id)
64
+ end
65
+ ```
66
+
67
+ ### Handling errors
69
68
 
70
69
  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:
71
70
 
72
71
  ```ruby
73
72
  begin
74
73
  card = lithic.cards.create(type: "MERCHANT_LOCKED")
75
- rescue Lithic::Errors::APIError => e
76
- puts(e.status) # 400
74
+ rescue Lithic::Errors::APIConnectionError => e
75
+ puts("The server could not be reached")
76
+ puts(e.cause) # an underlying Exception, likely raised within `net/http`
77
+ rescue Lithic::Errors::RateLimitError => e
78
+ puts("A 429 status code was received; we should back off a bit.")
79
+ rescue Lithic::Errors::APIStatusError => e
80
+ puts("Another non-200-range status code was received")
81
+ puts(e.status)
77
82
  end
78
83
  ```
79
84
 
@@ -113,11 +118,7 @@ lithic.cards.list(page_size: 10, request_options: {max_retries: 5})
113
118
 
114
119
  ### Timeouts
115
120
 
116
- By default, requests will time out after 60 seconds.
117
-
118
- Timeouts are applied separately to the initial connection and the overall request time, so in some cases a request could wait 2\*timeout seconds before it fails.
119
-
120
- You can use the `timeout` option to configure or disable this:
121
+ By default, requests will time out after 60 seconds. You can use the timeout option to configure or disable this:
121
122
 
122
123
  ```ruby
123
124
  # Configure the default for all requests:
@@ -129,39 +130,53 @@ lithic = Lithic::Client.new(
129
130
  lithic.cards.list(page_size: 10, request_options: {timeout: 5})
130
131
  ```
131
132
 
132
- ## Model DSL
133
+ On timeout, `Lithic::Errors::APITimeoutError` is raised.
133
134
 
134
- This library uses a simple DSL to represent request parameters and response shapes in `lib/lithic/models`.
135
+ Note that requests that time out are retried by default.
135
136
 
136
- With the right [editor plugins](https://shopify.github.io/ruby-lsp), you can ctrl-click on elements of the DSL to navigate around and explore the library.
137
+ ## Advanced concepts
137
138
 
138
- In all places where a `BaseModel` type is specified, vanilla Ruby `Hash` can also be used. For example, the following are interchangeable as arguments:
139
+ ### BaseModel
139
140
 
140
- ```ruby
141
- # This has tooling readability, for auto-completion, static analysis, and goto definition with supported language services
142
- params = Lithic::Models::CardCreateParams.new(type: "SINGLE_USE")
141
+ All parameter and response objects inherit from `Lithic::Internal::Type::BaseModel`, which provides several conveniences, including:
143
142
 
144
- # This also works
145
- params = {
146
- type: "SINGLE_USE"
147
- }
148
- ```
143
+ 1. All fields, including unknown ones, are accessible with `obj[:prop]` syntax, and can be destructured with `obj => {prop: prop}` or pattern-matching syntax.
149
144
 
150
- ## Editor support
145
+ 2. Structural equivalence for equality; if two API calls return the same values, comparing the responses with == will return true.
151
146
 
152
- A combination of [Shopify LSP](https://shopify.github.io/ruby-lsp) and [Solargraph](https://solargraph.org/) is recommended for non-[Sorbet](https://sorbet.org) users. The former is especially good at go to definition, while the latter has much better auto-completion support.
147
+ 3. Both instances and the classes themselves can be pretty-printed.
153
148
 
154
- ## Advanced concepts
149
+ 4. Helpers such as `#to_h`, `#deep_to_h`, `#to_json`, and `#to_yaml`.
150
+
151
+ ### Making custom or undocumented requests
152
+
153
+ #### Undocumented properties
154
+
155
+ You can send undocumented parameters to any endpoint, and read undocumented response properties, like so:
155
156
 
156
- ### Making custom/undocumented requests
157
+ Note: the `extra_` parameters of the same name overrides the documented parameters.
158
+
159
+ ```ruby
160
+ page =
161
+ lithic.cards.list(
162
+ page_size: 10,
163
+ request_options: {
164
+ extra_query: {my_query_parameter: value},
165
+ extra_body: {my_body_parameter: value},
166
+ extra_headers: {"my-header": value}
167
+ }
168
+ )
169
+
170
+ puts(page[:my_undocumented_property])
171
+ ```
157
172
 
158
173
  #### Undocumented request params
159
174
 
160
- If you want to explicitly send an extra param, you can do so with the `extra_query`, `extra_body`, and `extra_headers` under the `request_options:` parameter when making a requests as seen in examples above.
175
+ If you want to explicitly send an extra param, you can do so with the `extra_query`, `extra_body`, and `extra_headers` under the `request_options:` parameter when making a request, as seen in the examples above.
161
176
 
162
177
  #### Undocumented endpoints
163
178
 
164
- To make requests to undocumented endpoints, you can make requests using `client.request`. Options on the client will be respected (such as retries) when making this request.
179
+ To make requests to undocumented endpoints while retaining the benefit of auth, retries, and so on, you can make requests using `client.request`, like so:
165
180
 
166
181
  ```ruby
167
182
  response = client.request(
@@ -169,42 +184,67 @@ response = client.request(
169
184
  path: '/undocumented/endpoint',
170
185
  query: {"dog": "woof"},
171
186
  headers: {"useful-header": "interesting-value"},
172
- body: {"he": "llo"},
187
+ body: {"hello": "world"}
173
188
  )
174
189
  ```
175
190
 
176
191
  ### Concurrency & connection pooling
177
192
 
178
- The `Lithic::Client` instances are thread-safe, and should be re-used across multiple threads. By default, each `Client` have their own HTTP connection pool, with a maximum number of connections equal to thread count.
193
+ The `Lithic::Client` instances are threadsafe, but are only are fork-safe when there are no in-flight HTTP requests.
179
194
 
180
- When the maximum number of connections has been checked out from the connection pool, the `Client` will wait for an in use connection to become available. The queue time for this mechanism is accounted for by the per-request timeout.
195
+ Each instance of `Lithic::Client` has its own HTTP connection pool with a default size of 99. As such, we recommend instantiating the client once per application in most settings.
196
+
197
+ When all available connections from the pool are checked out, requests wait for a new connection to become available, with queue time counting towards the request timeout.
181
198
 
182
199
  Unless otherwise specified, other classes in the SDK do not have locks protecting their underlying data structure.
183
200
 
184
- Currently, `Lithic::Client` instances are only fork-safe if there are no in-flight HTTP requests.
201
+ ## Sorbet
185
202
 
186
- ### Sorbet
203
+ This library provides comprehensive [RBI](https://sorbet.org/docs/rbi) definitions, and has no dependency on sorbet-runtime.
187
204
 
188
- #### Enums
205
+ You can provide typesafe request parameters like so:
189
206
 
190
- Sorbet's typed enums require sub-classing of the [`T::Enum` class](https://sorbet.org/docs/tenum) from the `sorbet-runtime` gem.
207
+ ```ruby
208
+ lithic.cards.create(type: "SINGLE_USE")
209
+ ```
191
210
 
192
- Since this library does not depend on `sorbet-runtime`, it uses a [`T.all` intersection type](https://sorbet.org/docs/intersection-types) with a ruby primitive type to construct a "tagged alias" instead.
211
+ Or, equivalently:
193
212
 
194
213
  ```ruby
195
- module Lithic::AccountFinancialAccountType
196
- # This alias aids language service driven navigation.
197
- TaggedSymbol = T.type_alias { T.all(Symbol, Lithic::AccountFinancialAccountType) }
198
- end
214
+ # Hashes work, but are not typesafe:
215
+ lithic.cards.create(type: "SINGLE_USE")
216
+
217
+ # You can also splat a full Params class:
218
+ params = Lithic::CardCreateParams.new(type: "SINGLE_USE")
219
+ lithic.cards.create(**params)
199
220
  ```
200
221
 
201
- #### Argument passing trick
222
+ ### Enums
202
223
 
203
- It is possible to pass a compatible model / parameter class to a method that expects keyword arguments by using the `**` splat operator.
224
+ Since this library does not depend on `sorbet-runtime`, it cannot provide [`T::Enum`](https://sorbet.org/docs/tenum) instances. Instead, we provide "tagged symbols" instead, which is always a primitive at runtime:
204
225
 
205
226
  ```ruby
206
- params = Lithic::Models::CardCreateParams.new(type: "SINGLE_USE")
207
- lithic.cards.create(**params)
227
+ # :ACTIVE
228
+ puts(Lithic::AccountUpdateParams::State::ACTIVE)
229
+
230
+ # Revealed type: `T.all(Lithic::AccountUpdateParams::State, Symbol)`
231
+ T.reveal_type(Lithic::AccountUpdateParams::State::ACTIVE)
232
+ ```
233
+
234
+ Enum parameters have a "relaxed" type, so you can either pass in enum constants or their literal value:
235
+
236
+ ```ruby
237
+ # Using the enum constants preserves the tagged type information:
238
+ lithic.accounts.update(
239
+ state: Lithic::AccountUpdateParams::State::ACTIVE,
240
+ # …
241
+ )
242
+
243
+ # Literal values are also permissible:
244
+ lithic.accounts.update(
245
+ state: :ACTIVE,
246
+ # …
247
+ )
208
248
  ```
209
249
 
210
250
  ## Versioning
data/SECURITY.md CHANGED
@@ -16,11 +16,11 @@ before making any information public.
16
16
  ## Reporting Non-SDK Related Security Issues
17
17
 
18
18
  If you encounter security issues that are not directly related to SDKs but pertain to the services
19
- or products provided by Lithic please follow the respective company's security reporting guidelines.
19
+ or products provided by Lithic, please follow the respective company's security reporting guidelines.
20
20
 
21
21
  ### Lithic Terms and Policies
22
22
 
23
- Please contact sdk-feedback@lithic.com for any questions or concerns regarding security of our services.
23
+ Please contact sdk-feedback@lithic.com for any questions or concerns regarding the security of our services.
24
24
 
25
25
  ---
26
26
 
data/lib/lithic/client.rb CHANGED
@@ -107,7 +107,7 @@ module Lithic
107
107
  #
108
108
  # @param request_options [Lithic::RequestOptions, Hash{Symbol=>Object}, nil]
109
109
  #
110
- # @return [Lithic::APIStatus]
110
+ # @return [Lithic::Models::APIStatus]
111
111
  #
112
112
  # @see Lithic::Models::ClientAPIStatusParams
113
113
  def api_status(params = {})
@@ -12,6 +12,7 @@ module Lithic
12
12
  # Array of items of a given type.
13
13
  class ArrayOf
14
14
  include Lithic::Internal::Type::Converter
15
+ include Lithic::Internal::Util::SorbetRuntimeSupport
15
16
 
16
17
  private_class_method :new
17
18
 
@@ -110,6 +111,13 @@ module Lithic
110
111
  end
111
112
  end
112
113
 
114
+ # @api private
115
+ #
116
+ # @return [Object]
117
+ def to_sorbet_type
118
+ T::Array[Lithic::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(item_type)]
119
+ end
120
+
113
121
  # @api private
114
122
  #
115
123
  # @return [generic<Elem>]
@@ -304,6 +304,13 @@ module Lithic
304
304
 
305
305
  acc
306
306
  end
307
+
308
+ # @api private
309
+ #
310
+ # @return [Object]
311
+ def to_sorbet_type
312
+ self
313
+ end
307
314
  end
308
315
 
309
316
  class << self
@@ -386,6 +393,14 @@ module Lithic
386
393
  # @param keys [Array<Symbol>, nil]
387
394
  #
388
395
  # @return [Hash{Symbol=>Object}]
396
+ #
397
+ # @example
398
+ # # `address` is a `Lithic::Address`
399
+ # address => {
400
+ # address1: address1,
401
+ # city: city,
402
+ # country: country
403
+ # }
389
404
  def deconstruct_keys(keys)
390
405
  (keys || self.class.known_fields.keys)
391
406
  .filter_map do |k|
@@ -10,6 +10,7 @@ module Lithic
10
10
  # Ruby has no Boolean class; this is something for models to refer to.
11
11
  class Boolean
12
12
  extend Lithic::Internal::Type::Converter
13
+ extend Lithic::Internal::Util::SorbetRuntimeSupport
13
14
 
14
15
  private_class_method :new
15
16
 
@@ -56,6 +57,13 @@ module Lithic
56
57
  # @option state [Boolean] :can_retry
57
58
  #
58
59
  # @return [Boolean, Object]
60
+
61
+ # @api private
62
+ #
63
+ # @return [Object]
64
+ def to_sorbet_type
65
+ T::Boolean
66
+ end
59
67
  end
60
68
  end
61
69
  end
@@ -108,6 +108,18 @@ module Lithic
108
108
  #
109
109
  # @return [Symbol, Object]
110
110
 
111
+ # @api private
112
+ #
113
+ # @return [Object]
114
+ def to_sorbet_type
115
+ case values
116
+ in []
117
+ T.noreturn
118
+ in [value, *_]
119
+ T.all(Lithic::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(value), self)
120
+ end
121
+ end
122
+
111
123
  # @api private
112
124
  #
113
125
  # @param depth [Integer]
@@ -89,6 +89,13 @@ module Lithic
89
89
 
90
90
  value
91
91
  end
92
+
93
+ # @api private
94
+ #
95
+ # @return [Object]
96
+ def to_sorbet_type
97
+ T.any(Pathname, StringIO, IO, String, Lithic::FilePart)
98
+ end
92
99
  end
93
100
  end
94
101
  end
@@ -12,6 +12,7 @@ module Lithic
12
12
  # Hash of items of a given type.
13
13
  class HashOf
14
14
  include Lithic::Internal::Type::Converter
15
+ include Lithic::Internal::Util::SorbetRuntimeSupport
15
16
 
16
17
  private_class_method :new
17
18
 
@@ -130,6 +131,13 @@ module Lithic
130
131
  end
131
132
  end
132
133
 
134
+ # @api private
135
+ #
136
+ # @return [Object]
137
+ def to_sorbet_type
138
+ T::Hash[Lithic::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(item_type)]
139
+ end
140
+
133
141
  # @api private
134
142
  #
135
143
  # @return [generic<Elem>]
@@ -202,6 +202,18 @@ module Lithic
202
202
  super
203
203
  end
204
204
 
205
+ # @api private
206
+ #
207
+ # @return [Object]
208
+ def to_sorbet_type
209
+ case (v = variants)
210
+ in []
211
+ T.noreturn
212
+ else
213
+ T.any(*v.map { Lithic::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(_1) })
214
+ end
215
+ end
216
+
205
217
  # rubocop:enable Style/CaseEquality
206
218
  # rubocop:enable Style/HashEachMethods
207
219
 
@@ -10,6 +10,7 @@ module Lithic
10
10
  # When we don't know what to expect for the value.
11
11
  class Unknown
12
12
  extend Lithic::Internal::Type::Converter
13
+ extend Lithic::Internal::Util::SorbetRuntimeSupport
13
14
 
14
15
  # rubocop:disable Lint/UnusedMethodArgument
15
16
 
@@ -58,6 +59,13 @@ module Lithic
58
59
  # @option state [Boolean] :can_retry
59
60
  #
60
61
  # @return [Object]
62
+
63
+ # @api private
64
+ #
65
+ # @return [Object]
66
+ def to_sorbet_type
67
+ T.anything
68
+ end
61
69
  end
62
70
 
63
71
  # rubocop:enable Lint/UnusedMethodArgument
@@ -9,6 +9,23 @@ module Lithic
9
9
  # @return [Float]
10
10
  def self.monotonic_secs = Process.clock_gettime(Process::CLOCK_MONOTONIC)
11
11
 
12
+ # @api private
13
+ #
14
+ # @param ns [Module, Class]
15
+ #
16
+ # @return [Enumerable<Module, Class>]
17
+ def self.walk_namespaces(ns)
18
+ ns.constants(false).lazy.flat_map do
19
+ case (c = ns.const_get(_1, false))
20
+ in Module | Class
21
+ walk_namespaces(c)
22
+ else
23
+ []
24
+ end
25
+ end
26
+ .chain([ns])
27
+ end
28
+
12
29
  class << self
13
30
  # @api private
14
31
  #
@@ -583,11 +600,13 @@ module Lithic
583
600
  #
584
601
  # @return [Object]
585
602
  def encode_content(headers, body)
603
+ # rubocop:disable Style/CaseEquality
604
+ # rubocop:disable Layout/LineLength
586
605
  content_type = headers["content-type"]
587
606
  case [content_type, body]
588
607
  in [Lithic::Internal::Util::JSON_CONTENT, Hash | Array | -> { primitive?(_1) }]
589
608
  [headers, JSON.generate(body)]
590
- in [Lithic::Internal::Util::JSONL_CONTENT, Enumerable] unless body.is_a?(Lithic::Internal::Type::FileInput)
609
+ in [Lithic::Internal::Util::JSONL_CONTENT, Enumerable] unless Lithic::Internal::Type::FileInput === body
591
610
  [headers, body.lazy.map { JSON.generate(_1) }]
592
611
  in [%r{^multipart/form-data}, Hash | Lithic::Internal::Type::FileInput]
593
612
  boundary, strio = encode_multipart_streaming(body)
@@ -602,6 +621,8 @@ module Lithic
602
621
  else
603
622
  [headers, body]
604
623
  end
624
+ # rubocop:enable Layout/LineLength
625
+ # rubocop:enable Style/CaseEquality
605
626
  end
606
627
 
607
628
  # @api private
@@ -826,11 +847,39 @@ module Lithic
826
847
  sorbet_runtime_constants.fetch(name).call
827
848
  end
828
849
 
850
+ # @api private
851
+ #
852
+ # @param name [Symbol]
853
+ #
854
+ # @return [Boolean]
855
+ def sorbet_constant_defined?(name) = sorbet_runtime_constants.key?(name)
856
+
829
857
  # @api private
830
858
  #
831
859
  # @param name [Symbol]
832
860
  # @param blk [Proc]
833
861
  def define_sorbet_constant!(name, &blk) = sorbet_runtime_constants.store(name, blk)
862
+
863
+ # @api private
864
+ #
865
+ # @return [Object]
866
+ def to_sorbet_type = raise NotImplementedError
867
+
868
+ class << self
869
+ # @api private
870
+ #
871
+ # @param type [Lithic::Internal::Util::SorbetRuntimeSupport, Object]
872
+ #
873
+ # @return [Object]
874
+ def to_sorbet_type(type)
875
+ case type
876
+ in Lithic::Internal::Util::SorbetRuntimeSupport
877
+ type.to_sorbet_type
878
+ else
879
+ type
880
+ end
881
+ end
882
+ end
834
883
  end
835
884
 
836
885
  extend Lithic::Internal::Util::SorbetRuntimeSupport
@@ -13,5 +13,8 @@ module Lithic
13
13
  define_sorbet_constant!(:AnyHash) do
14
14
  T.type_alias { T::Hash[Symbol, T.anything] }
15
15
  end
16
+ define_sorbet_constant!(:FileInput) do
17
+ T.type_alias { T.any(Pathname, StringIO, IO, String, Lithic::FilePart) }
18
+ end
16
19
  end
17
20
  end