lithic 0.1.0.pre.alpha.14 → 0.1.0.pre.alpha.16

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 (466) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/README.md +61 -52
  4. data/lib/lithic/client.rb +4 -4
  5. data/lib/lithic/internal/transport/pooled_net_requester.rb +1 -5
  6. data/lib/lithic/internal/type/array_of.rb +9 -0
  7. data/lib/lithic/internal/type/base_model.rb +62 -28
  8. data/lib/lithic/internal/type/base_page.rb +8 -0
  9. data/lib/lithic/internal/type/boolean.rb +4 -0
  10. data/lib/lithic/internal/type/enum.rb +9 -5
  11. data/lib/lithic/internal/type/hash_of.rb +9 -0
  12. data/lib/lithic/internal/type/io_like.rb +4 -0
  13. data/lib/lithic/internal/type/request_parameters.rb +1 -2
  14. data/lib/lithic/internal/type/union.rb +10 -1
  15. data/lib/lithic/internal/type/unknown.rb +4 -0
  16. data/lib/lithic/internal.rb +0 -1
  17. data/lib/lithic/models/account.rb +42 -91
  18. data/lib/lithic/models/account_financial_account_type.rb +2 -5
  19. data/lib/lithic/models/account_holder.rb +127 -312
  20. data/lib/lithic/models/account_holder_create_params.rb +99 -219
  21. data/lib/lithic/models/account_holder_create_response.rb +15 -48
  22. data/lib/lithic/models/account_holder_list_documents_params.rb +3 -8
  23. data/lib/lithic/models/account_holder_list_documents_response.rb +3 -11
  24. data/lib/lithic/models/account_holder_list_params.rb +25 -90
  25. data/lib/lithic/models/account_holder_retrieve_document_params.rb +4 -9
  26. data/lib/lithic/models/account_holder_retrieve_params.rb +3 -8
  27. data/lib/lithic/models/account_holder_simulate_enrollment_document_review_params.rb +13 -41
  28. data/lib/lithic/models/account_holder_simulate_enrollment_review_params.rb +13 -36
  29. data/lib/lithic/models/account_holder_simulate_enrollment_review_response.rb +151 -388
  30. data/lib/lithic/models/account_holder_update_params.rb +132 -424
  31. data/lib/lithic/models/account_holder_update_response.rb +180 -474
  32. data/lib/lithic/models/account_holder_upload_document_params.rb +7 -15
  33. data/lib/lithic/models/account_list_params.rb +13 -38
  34. data/lib/lithic/models/account_retrieve_params.rb +3 -8
  35. data/lib/lithic/models/account_retrieve_spend_limits_params.rb +3 -8
  36. data/lib/lithic/models/account_spend_limits.rb +27 -87
  37. data/lib/lithic/models/account_update_params.rb +35 -99
  38. data/lib/lithic/models/address.rb +8 -16
  39. data/lib/lithic/models/address_update.rb +13 -41
  40. data/lib/lithic/models/aggregate_balance.rb +15 -36
  41. data/lib/lithic/models/aggregate_balance_list_params.rb +7 -19
  42. data/lib/lithic/models/api_status.rb +3 -11
  43. data/lib/lithic/models/auth_rules/auth_rule.rb +19 -67
  44. data/lib/lithic/models/auth_rules/auth_rule_condition.rb +11 -31
  45. data/lib/lithic/models/auth_rules/conditional_attribute.rb +2 -5
  46. data/lib/lithic/models/auth_rules/conditional_block_parameters.rb +2 -6
  47. data/lib/lithic/models/auth_rules/v2/backtest_create_params.rb +7 -20
  48. data/lib/lithic/models/auth_rules/v2/backtest_create_response.rb +3 -11
  49. data/lib/lithic/models/auth_rules/v2/backtest_results.rb +46 -142
  50. data/lib/lithic/models/auth_rules/v2/backtest_retrieve_params.rb +4 -9
  51. data/lib/lithic/models/auth_rules/v2_apply_params.rb +8 -17
  52. data/lib/lithic/models/auth_rules/v2_apply_response.rb +26 -64
  53. data/lib/lithic/models/auth_rules/v2_create_params.rb +17 -50
  54. data/lib/lithic/models/auth_rules/v2_create_response.rb +26 -64
  55. data/lib/lithic/models/auth_rules/v2_delete_params.rb +3 -8
  56. data/lib/lithic/models/auth_rules/v2_draft_params.rb +6 -12
  57. data/lib/lithic/models/auth_rules/v2_draft_response.rb +26 -64
  58. data/lib/lithic/models/auth_rules/v2_list_params.rb +13 -48
  59. data/lib/lithic/models/auth_rules/v2_list_response.rb +26 -64
  60. data/lib/lithic/models/auth_rules/v2_promote_params.rb +3 -8
  61. data/lib/lithic/models/auth_rules/v2_promote_response.rb +26 -64
  62. data/lib/lithic/models/auth_rules/v2_report_params.rb +3 -8
  63. data/lib/lithic/models/auth_rules/v2_report_response.rb +3 -11
  64. data/lib/lithic/models/auth_rules/v2_retrieve_params.rb +3 -8
  65. data/lib/lithic/models/auth_rules/v2_retrieve_response.rb +26 -64
  66. data/lib/lithic/models/auth_rules/v2_update_params.rb +16 -55
  67. data/lib/lithic/models/auth_rules/v2_update_response.rb +26 -64
  68. data/lib/lithic/models/auth_rules/velocity_limit_params.rb +15 -27
  69. data/lib/lithic/models/auth_rules/velocity_limit_params_period_window.rb +2 -5
  70. data/lib/lithic/models/auth_stream_enrollment_retrieve_secret_params.rb +3 -8
  71. data/lib/lithic/models/auth_stream_enrollment_rotate_secret_params.rb +3 -8
  72. data/lib/lithic/models/auth_stream_secret.rb +3 -11
  73. data/lib/lithic/models/balance.rb +15 -36
  74. data/lib/lithic/models/balance_list_params.rb +13 -46
  75. data/lib/lithic/models/book_transfer_create_params.rb +17 -49
  76. data/lib/lithic/models/book_transfer_list_params.rb +31 -105
  77. data/lib/lithic/models/book_transfer_response.rb +32 -71
  78. data/lib/lithic/models/book_transfer_retrieve_params.rb +3 -8
  79. data/lib/lithic/models/book_transfer_reverse_params.rb +5 -14
  80. data/lib/lithic/models/card_convert_physical_params.rb +12 -32
  81. data/lib/lithic/models/card_convert_physical_response.rb +393 -0
  82. data/lib/lithic/models/card_create_params.rb +42 -142
  83. data/lib/lithic/models/card_create_response.rb +392 -0
  84. data/lib/lithic/models/card_embed_params.rb +5 -10
  85. data/lib/lithic/models/card_list_params.rb +19 -67
  86. data/lib/lithic/models/card_list_response.rb +376 -0
  87. data/lib/lithic/models/card_program.rb +10 -33
  88. data/lib/lithic/models/card_program_list_params.rb +9 -26
  89. data/lib/lithic/models/card_program_retrieve_params.rb +3 -8
  90. data/lib/lithic/models/card_provision_params.rb +17 -60
  91. data/lib/lithic/models/card_provision_response.rb +3 -11
  92. data/lib/lithic/models/card_reissue_params.rb +13 -37
  93. data/lib/lithic/models/card_reissue_response.rb +392 -0
  94. data/lib/lithic/models/card_renew_params.rb +16 -55
  95. data/lib/lithic/models/card_renew_response.rb +392 -0
  96. data/lib/lithic/models/card_retrieve_params.rb +3 -8
  97. data/lib/lithic/models/card_retrieve_response.rb +392 -0
  98. data/lib/lithic/models/card_retrieve_spend_limits_params.rb +3 -8
  99. data/lib/lithic/models/card_search_by_pan_params.rb +4 -9
  100. data/lib/lithic/models/card_search_by_pan_response.rb +392 -0
  101. data/lib/lithic/models/card_spend_limits.rb +27 -87
  102. data/lib/lithic/models/card_update_params.rb +21 -72
  103. data/lib/lithic/models/card_update_response.rb +392 -0
  104. data/lib/lithic/models/cards/aggregate_balance_list_params.rb +7 -20
  105. data/lib/lithic/models/cards/aggregate_balance_list_response.rb +12 -29
  106. data/lib/lithic/models/cards/balance_list_params.rb +7 -20
  107. data/lib/lithic/models/cards/balance_list_response.rb +15 -36
  108. data/lib/lithic/models/cards/financial_transaction_list_params.rb +23 -77
  109. data/lib/lithic/models/cards/financial_transaction_retrieve_params.rb +4 -9
  110. data/lib/lithic/models/carrier.rb +3 -11
  111. data/lib/lithic/models/client_api_status_params.rb +3 -8
  112. data/lib/lithic/models/credit_products/extended_credit.rb +2 -6
  113. data/lib/lithic/models/credit_products/extended_credit_retrieve_params.rb +3 -8
  114. data/lib/lithic/models/credit_products/prime_rate_create_params.rb +5 -10
  115. data/lib/lithic/models/credit_products/prime_rate_retrieve_params.rb +7 -20
  116. data/lib/lithic/models/credit_products/prime_rate_retrieve_response.rb +6 -14
  117. data/lib/lithic/models/digital_card_art.rb +11 -33
  118. data/lib/lithic/models/digital_card_art_list_params.rb +9 -26
  119. data/lib/lithic/models/digital_card_art_retrieve_params.rb +3 -8
  120. data/lib/lithic/models/dispute.rb +27 -70
  121. data/lib/lithic/models/dispute_create_params.rb +12 -38
  122. data/lib/lithic/models/dispute_delete_evidence_params.rb +4 -9
  123. data/lib/lithic/models/dispute_delete_params.rb +3 -8
  124. data/lib/lithic/models/dispute_evidence.rb +15 -34
  125. data/lib/lithic/models/dispute_initiate_evidence_upload_params.rb +5 -14
  126. data/lib/lithic/models/dispute_list_evidences_params.rb +13 -38
  127. data/lib/lithic/models/dispute_list_params.rb +19 -67
  128. data/lib/lithic/models/dispute_retrieve_evidence_params.rb +4 -9
  129. data/lib/lithic/models/dispute_retrieve_params.rb +3 -8
  130. data/lib/lithic/models/dispute_update_params.rb +13 -37
  131. data/lib/lithic/models/document.rb +29 -62
  132. data/lib/lithic/models/event.rb +9 -16
  133. data/lib/lithic/models/event_list_attempts_params.rb +17 -60
  134. data/lib/lithic/models/event_list_params.rb +19 -67
  135. data/lib/lithic/models/event_retrieve_params.rb +3 -8
  136. data/lib/lithic/models/event_subscription.rb +10 -17
  137. data/lib/lithic/models/events/event_subscription_resend_params.rb +4 -9
  138. data/lib/lithic/models/events/subscription_create_params.rb +12 -32
  139. data/lib/lithic/models/events/subscription_delete_params.rb +3 -8
  140. data/lib/lithic/models/events/subscription_list_attempts_params.rb +17 -60
  141. data/lib/lithic/models/events/subscription_list_params.rb +9 -26
  142. data/lib/lithic/models/events/subscription_recover_params.rb +7 -20
  143. data/lib/lithic/models/events/subscription_replay_missing_params.rb +7 -20
  144. data/lib/lithic/models/events/subscription_retrieve_params.rb +3 -8
  145. data/lib/lithic/models/events/subscription_retrieve_secret_params.rb +3 -8
  146. data/lib/lithic/models/events/subscription_retrieve_secret_response.rb +3 -11
  147. data/lib/lithic/models/events/subscription_rotate_secret_params.rb +3 -8
  148. data/lib/lithic/models/events/subscription_send_simulated_example_params.rb +7 -19
  149. data/lib/lithic/models/events/subscription_update_params.rb +12 -32
  150. data/lib/lithic/models/external_bank_account_address.rb +8 -16
  151. data/lib/lithic/models/external_bank_account_create_params.rb +33 -99
  152. data/lib/lithic/models/external_bank_account_create_response.rb +42 -123
  153. data/lib/lithic/models/external_bank_account_list_params.rb +27 -91
  154. data/lib/lithic/models/external_bank_account_list_response.rb +42 -123
  155. data/lib/lithic/models/external_bank_account_retrieve_params.rb +3 -8
  156. data/lib/lithic/models/external_bank_account_retrieve_response.rb +42 -123
  157. data/lib/lithic/models/external_bank_account_retry_micro_deposits_params.rb +5 -14
  158. data/lib/lithic/models/external_bank_account_retry_micro_deposits_response.rb +42 -123
  159. data/lib/lithic/models/external_bank_account_retry_prenote_params.rb +5 -14
  160. data/lib/lithic/models/external_bank_account_retry_prenote_response.rb +38 -113
  161. data/lib/lithic/models/external_bank_account_update_params.rb +23 -81
  162. data/lib/lithic/models/external_bank_account_update_response.rb +42 -123
  163. data/lib/lithic/models/external_bank_accounts/micro_deposit_create_params.rb +4 -9
  164. data/lib/lithic/models/external_bank_accounts/micro_deposit_create_response.rb +42 -123
  165. data/lib/lithic/models/external_payment.rb +38 -88
  166. data/lib/lithic/models/external_payment_cancel_params.rb +6 -15
  167. data/lib/lithic/models/external_payment_create_params.rb +22 -66
  168. data/lib/lithic/models/external_payment_list_params.rb +29 -98
  169. data/lib/lithic/models/external_payment_release_params.rb +6 -15
  170. data/lib/lithic/models/external_payment_retrieve_params.rb +3 -8
  171. data/lib/lithic/models/external_payment_reverse_params.rb +6 -15
  172. data/lib/lithic/models/external_payment_settle_params.rb +10 -26
  173. data/lib/lithic/models/financial_account.rb +33 -81
  174. data/lib/lithic/models/financial_account_create_params.rb +13 -43
  175. data/lib/lithic/models/financial_account_list_params.rb +11 -31
  176. data/lib/lithic/models/financial_account_retrieve_params.rb +3 -8
  177. data/lib/lithic/models/financial_account_update_params.rb +5 -14
  178. data/lib/lithic/models/financial_account_update_status_params.rb +9 -20
  179. data/lib/lithic/models/financial_accounts/balance_list_params.rb +7 -20
  180. data/lib/lithic/models/financial_accounts/balance_list_response.rb +15 -36
  181. data/lib/lithic/models/financial_accounts/credit_configuration_retrieve_params.rb +3 -8
  182. data/lib/lithic/models/financial_accounts/credit_configuration_update_params.rb +11 -41
  183. data/lib/lithic/models/financial_accounts/financial_account_credit_config.rb +13 -35
  184. data/lib/lithic/models/financial_accounts/financial_transaction_list_params.rb +23 -77
  185. data/lib/lithic/models/financial_accounts/financial_transaction_retrieve_params.rb +4 -9
  186. data/lib/lithic/models/financial_accounts/loan_tape.rb +132 -269
  187. data/lib/lithic/models/financial_accounts/loan_tape_list_params.rb +13 -38
  188. data/lib/lithic/models/financial_accounts/loan_tape_retrieve_params.rb +4 -9
  189. data/lib/lithic/models/financial_accounts/statement.rb +87 -198
  190. data/lib/lithic/models/financial_accounts/statement_list_params.rb +15 -55
  191. data/lib/lithic/models/financial_accounts/statement_retrieve_params.rb +4 -9
  192. data/lib/lithic/models/financial_accounts/statements/line_item_list_params.rb +10 -27
  193. data/lib/lithic/models/financial_accounts/statements/statement_line_items.rb +24 -60
  194. data/lib/lithic/models/financial_accounts/statements.rb +3 -7
  195. data/lib/lithic/models/financial_transaction.rb +34 -91
  196. data/lib/lithic/models/instance_financial_account_type.rb +4 -5
  197. data/lib/lithic/models/kyb.rb +73 -167
  198. data/lib/lithic/models/kyb_business_entity.rb +20 -50
  199. data/lib/lithic/models/kyc.rb +21 -40
  200. data/lib/lithic/models/kyc_exempt.rb +16 -47
  201. data/lib/lithic/models/management_operation_create_params.rb +34 -74
  202. data/lib/lithic/models/management_operation_list_params.rb +26 -86
  203. data/lib/lithic/models/management_operation_retrieve_params.rb +3 -8
  204. data/lib/lithic/models/management_operation_reverse_params.rb +6 -15
  205. data/lib/lithic/models/management_operation_transaction.rb +56 -110
  206. data/lib/lithic/models/message_attempt.rb +13 -32
  207. data/lib/lithic/models/owner_type.rb +2 -5
  208. data/lib/lithic/models/payment.rb +56 -129
  209. data/lib/lithic/models/payment_create_params.rb +23 -67
  210. data/lib/lithic/models/payment_create_response.rb +3 -11
  211. data/lib/lithic/models/payment_list_params.rb +31 -105
  212. data/lib/lithic/models/payment_retrieve_params.rb +3 -8
  213. data/lib/lithic/models/payment_retry_params.rb +3 -8
  214. data/lib/lithic/models/payment_retry_response.rb +3 -11
  215. data/lib/lithic/models/payment_simulate_action_params.rb +12 -31
  216. data/lib/lithic/models/payment_simulate_action_response.rb +6 -13
  217. data/lib/lithic/models/payment_simulate_receipt_params.rb +12 -24
  218. data/lib/lithic/models/payment_simulate_receipt_response.rb +6 -13
  219. data/lib/lithic/models/payment_simulate_release_params.rb +4 -9
  220. data/lib/lithic/models/payment_simulate_release_response.rb +6 -13
  221. data/lib/lithic/models/payment_simulate_return_params.rb +6 -15
  222. data/lib/lithic/models/payment_simulate_return_response.rb +6 -13
  223. data/lib/lithic/models/reports/settlement/network_total_list_params.rb +27 -95
  224. data/lib/lithic/models/reports/settlement/network_total_list_response.rb +21 -55
  225. data/lib/lithic/models/reports/settlement/network_total_retrieve_params.rb +3 -8
  226. data/lib/lithic/models/reports/settlement/network_total_retrieve_response.rb +21 -55
  227. data/lib/lithic/models/reports/settlement_list_details_params.rb +9 -26
  228. data/lib/lithic/models/reports/settlement_summary_params.rb +3 -8
  229. data/lib/lithic/models/required_document.rb +4 -8
  230. data/lib/lithic/models/responder_endpoint_check_status_params.rb +6 -14
  231. data/lib/lithic/models/responder_endpoint_create_params.rb +9 -25
  232. data/lib/lithic/models/responder_endpoint_create_response.rb +3 -11
  233. data/lib/lithic/models/responder_endpoint_delete_params.rb +6 -14
  234. data/lib/lithic/models/responder_endpoint_status.rb +4 -12
  235. data/lib/lithic/models/settlement_detail.rb +32 -79
  236. data/lib/lithic/models/settlement_report.rb +24 -31
  237. data/lib/lithic/models/settlement_summary_details.rb +19 -70
  238. data/lib/lithic/models/shipping_address.rb +16 -51
  239. data/lib/lithic/models/spend_limit_duration.rb +2 -5
  240. data/lib/lithic/models/three_ds/authentication_retrieve_params.rb +3 -8
  241. data/lib/lithic/models/three_ds/authentication_retrieve_response.rb +148 -312
  242. data/lib/lithic/models/three_ds/authentication_simulate_otp_entry_params.rb +5 -10
  243. data/lib/lithic/models/three_ds/authentication_simulate_params.rb +18 -38
  244. data/lib/lithic/models/three_ds/authentication_simulate_response.rb +3 -11
  245. data/lib/lithic/models/three_ds/challenge_response.rb +3 -7
  246. data/lib/lithic/models/three_ds/challenge_result.rb +2 -5
  247. data/lib/lithic/models/three_ds/decisioning_challenge_response_params.rb +3 -8
  248. data/lib/lithic/models/three_ds/decisioning_retrieve_secret_params.rb +3 -8
  249. data/lib/lithic/models/three_ds/decisioning_retrieve_secret_response.rb +3 -11
  250. data/lib/lithic/models/three_ds/decisioning_rotate_secret_params.rb +3 -8
  251. data/lib/lithic/models/tokenization.rb +35 -99
  252. data/lib/lithic/models/tokenization_activate_params.rb +3 -8
  253. data/lib/lithic/models/tokenization_deactivate_params.rb +3 -8
  254. data/lib/lithic/models/tokenization_decisioning_retrieve_secret_params.rb +3 -8
  255. data/lib/lithic/models/tokenization_decisioning_rotate_secret_params.rb +3 -8
  256. data/lib/lithic/models/tokenization_decisioning_rotate_secret_response.rb +3 -11
  257. data/lib/lithic/models/tokenization_list_params.rb +21 -74
  258. data/lib/lithic/models/tokenization_pause_params.rb +3 -8
  259. data/lib/lithic/models/tokenization_resend_activation_code_params.rb +7 -19
  260. data/lib/lithic/models/tokenization_retrieve_params.rb +3 -8
  261. data/lib/lithic/models/tokenization_retrieve_response.rb +3 -11
  262. data/lib/lithic/models/tokenization_secret.rb +3 -11
  263. data/lib/lithic/models/tokenization_simulate_params.rb +19 -59
  264. data/lib/lithic/models/tokenization_simulate_response.rb +3 -11
  265. data/lib/lithic/models/tokenization_unpause_params.rb +3 -8
  266. data/lib/lithic/models/tokenization_update_digital_card_art_params.rb +5 -14
  267. data/lib/lithic/models/tokenization_update_digital_card_art_response.rb +3 -11
  268. data/lib/lithic/models/transaction.rb +295 -413
  269. data/lib/lithic/models/transaction_expire_authorization_params.rb +3 -8
  270. data/lib/lithic/models/transaction_list_params.rb +25 -86
  271. data/lib/lithic/models/transaction_retrieve_params.rb +3 -8
  272. data/lib/lithic/models/transaction_simulate_authorization_advice_params.rb +5 -10
  273. data/lib/lithic/models/transaction_simulate_authorization_advice_response.rb +5 -17
  274. data/lib/lithic/models/transaction_simulate_authorization_params.rb +22 -73
  275. data/lib/lithic/models/transaction_simulate_authorization_response.rb +5 -17
  276. data/lib/lithic/models/transaction_simulate_clearing_params.rb +6 -15
  277. data/lib/lithic/models/transaction_simulate_clearing_response.rb +3 -11
  278. data/lib/lithic/models/transaction_simulate_credit_authorization_params.rb +10 -23
  279. data/lib/lithic/models/transaction_simulate_credit_authorization_response.rb +5 -17
  280. data/lib/lithic/models/transaction_simulate_return_params.rb +6 -11
  281. data/lib/lithic/models/transaction_simulate_return_response.rb +5 -17
  282. data/lib/lithic/models/transaction_simulate_return_reversal_params.rb +4 -9
  283. data/lib/lithic/models/transaction_simulate_return_reversal_response.rb +3 -11
  284. data/lib/lithic/models/transaction_simulate_void_params.rb +10 -26
  285. data/lib/lithic/models/transaction_simulate_void_response.rb +3 -11
  286. data/lib/lithic/models/transactions/enhanced_commercial_data_retrieve_params.rb +3 -8
  287. data/lib/lithic/models/transactions/enhanced_commercial_data_retrieve_response.rb +2 -6
  288. data/lib/lithic/models/transactions/events/enhanced_commercial_data_retrieve_params.rb +3 -8
  289. data/lib/lithic/models/transactions/events/enhanced_data.rb +68 -192
  290. data/lib/lithic/models/transfer.rb +49 -160
  291. data/lib/lithic/models/transfer_create_params.rb +10 -23
  292. data/lib/lithic/models/verification_method.rb +2 -5
  293. data/lib/lithic/request_options.rb +3 -4
  294. data/lib/lithic/resources/account_holders.rb +10 -8
  295. data/lib/lithic/resources/cards.rb +16 -16
  296. data/lib/lithic/version.rb +1 -1
  297. data/lib/lithic.rb +8 -10
  298. data/rbi/lib/lithic/client.rbi +4 -4
  299. data/rbi/lib/lithic/internal/type/array_of.rbi +3 -0
  300. data/rbi/lib/lithic/internal/type/base_model.rbi +15 -0
  301. data/rbi/lib/lithic/internal/type/base_page.rbi +2 -0
  302. data/rbi/lib/lithic/internal/type/enum.rbi +3 -6
  303. data/rbi/lib/lithic/internal/type/hash_of.rbi +3 -0
  304. data/rbi/lib/lithic/internal/type/union.rbi +3 -0
  305. data/rbi/lib/lithic/internal.rbi +0 -1
  306. data/rbi/lib/lithic/models/account.rbi +2 -3
  307. data/rbi/lib/lithic/models/account_financial_account_type.rbi +1 -2
  308. data/rbi/lib/lithic/models/account_holder.rbi +10 -13
  309. data/rbi/lib/lithic/models/account_holder_create_params.rbi +6 -7
  310. data/rbi/lib/lithic/models/account_holder_create_response.rbi +2 -4
  311. data/rbi/lib/lithic/models/account_holder_simulate_enrollment_document_review_params.rbi +2 -16
  312. data/rbi/lib/lithic/models/account_holder_simulate_enrollment_review_params.rbi +2 -10
  313. data/rbi/lib/lithic/models/account_holder_simulate_enrollment_review_response.rbi +10 -45
  314. data/rbi/lib/lithic/models/account_holder_update_params.rbi +4 -3
  315. data/rbi/lib/lithic/models/account_holder_update_response.rbi +10 -51
  316. data/rbi/lib/lithic/models/account_holder_upload_document_params.rbi +1 -2
  317. data/rbi/lib/lithic/models/account_update_params.rbi +1 -2
  318. data/rbi/lib/lithic/models/aggregate_balance.rbi +1 -2
  319. data/rbi/lib/lithic/models/aggregate_balance_list_params.rbi +1 -2
  320. data/rbi/lib/lithic/models/auth_rules/auth_rule.rbi +1 -2
  321. data/rbi/lib/lithic/models/auth_rules/auth_rule_condition.rbi +1 -2
  322. data/rbi/lib/lithic/models/auth_rules/conditional_attribute.rbi +1 -2
  323. data/rbi/lib/lithic/models/auth_rules/v2_apply_response.rbi +2 -4
  324. data/rbi/lib/lithic/models/auth_rules/v2_create_params.rbi +1 -2
  325. data/rbi/lib/lithic/models/auth_rules/v2_create_response.rbi +2 -4
  326. data/rbi/lib/lithic/models/auth_rules/v2_draft_response.rbi +2 -4
  327. data/rbi/lib/lithic/models/auth_rules/v2_list_response.rbi +2 -4
  328. data/rbi/lib/lithic/models/auth_rules/v2_promote_response.rbi +2 -4
  329. data/rbi/lib/lithic/models/auth_rules/v2_retrieve_response.rbi +2 -4
  330. data/rbi/lib/lithic/models/auth_rules/v2_update_params.rbi +1 -2
  331. data/rbi/lib/lithic/models/auth_rules/v2_update_response.rbi +2 -4
  332. data/rbi/lib/lithic/models/auth_rules/velocity_limit_params.rbi +2 -3
  333. data/rbi/lib/lithic/models/auth_rules/velocity_limit_params_period_window.rbi +1 -2
  334. data/rbi/lib/lithic/models/balance.rbi +1 -2
  335. data/rbi/lib/lithic/models/balance_list_params.rbi +1 -2
  336. data/rbi/lib/lithic/models/book_transfer_create_params.rbi +2 -4
  337. data/rbi/lib/lithic/models/book_transfer_list_params.rbi +3 -6
  338. data/rbi/lib/lithic/models/book_transfer_response.rbi +5 -10
  339. data/rbi/lib/lithic/models/card_convert_physical_params.rbi +1 -2
  340. data/rbi/lib/lithic/models/card_convert_physical_response.rbi +467 -0
  341. data/rbi/lib/lithic/models/card_create_params.rbi +3 -4
  342. data/rbi/lib/lithic/models/card_create_response.rbi +458 -0
  343. data/rbi/lib/lithic/models/card_list_params.rbi +1 -1
  344. data/rbi/lib/lithic/models/card_list_response.rbi +435 -0
  345. data/rbi/lib/lithic/models/card_provision_params.rbi +1 -2
  346. data/rbi/lib/lithic/models/card_reissue_params.rbi +1 -2
  347. data/rbi/lib/lithic/models/card_reissue_response.rbi +458 -0
  348. data/rbi/lib/lithic/models/card_renew_params.rbi +1 -2
  349. data/rbi/lib/lithic/models/card_renew_response.rbi +457 -0
  350. data/rbi/lib/lithic/models/card_retrieve_response.rbi +459 -0
  351. data/rbi/lib/lithic/models/card_search_by_pan_response.rbi +461 -0
  352. data/rbi/lib/lithic/models/card_update_params.rbi +2 -3
  353. data/rbi/lib/lithic/models/card_update_response.rbi +458 -0
  354. data/rbi/lib/lithic/models/cards/balance_list_response.rbi +1 -2
  355. data/rbi/lib/lithic/models/cards/financial_transaction_list_params.rbi +3 -6
  356. data/rbi/lib/lithic/models/digital_card_art.rbi +1 -2
  357. data/rbi/lib/lithic/models/dispute.rbi +3 -11
  358. data/rbi/lib/lithic/models/dispute_create_params.rbi +1 -2
  359. data/rbi/lib/lithic/models/dispute_evidence.rbi +1 -2
  360. data/rbi/lib/lithic/models/dispute_list_params.rbi +1 -2
  361. data/rbi/lib/lithic/models/dispute_update_params.rbi +1 -2
  362. data/rbi/lib/lithic/models/document.rbi +4 -7
  363. data/rbi/lib/lithic/models/event.rbi +1 -1
  364. data/rbi/lib/lithic/models/event_list_attempts_params.rbi +1 -2
  365. data/rbi/lib/lithic/models/event_list_params.rbi +1 -2
  366. data/rbi/lib/lithic/models/event_subscription.rbi +1 -2
  367. data/rbi/lib/lithic/models/events/subscription_create_params.rbi +1 -2
  368. data/rbi/lib/lithic/models/events/subscription_list_attempts_params.rbi +1 -2
  369. data/rbi/lib/lithic/models/events/subscription_send_simulated_example_params.rbi +1 -8
  370. data/rbi/lib/lithic/models/events/subscription_update_params.rbi +1 -2
  371. data/rbi/lib/lithic/models/external_bank_account_create_params.rbi +2 -4
  372. data/rbi/lib/lithic/models/external_bank_account_create_response.rbi +5 -10
  373. data/rbi/lib/lithic/models/external_bank_account_list_params.rbi +3 -6
  374. data/rbi/lib/lithic/models/external_bank_account_list_response.rbi +5 -10
  375. data/rbi/lib/lithic/models/external_bank_account_retrieve_response.rbi +5 -22
  376. data/rbi/lib/lithic/models/external_bank_account_retry_micro_deposits_response.rbi +5 -28
  377. data/rbi/lib/lithic/models/external_bank_account_retry_prenote_response.rbi +3 -12
  378. data/rbi/lib/lithic/models/external_bank_account_update_params.rbi +1 -2
  379. data/rbi/lib/lithic/models/external_bank_account_update_response.rbi +5 -10
  380. data/rbi/lib/lithic/models/external_bank_accounts/micro_deposit_create_response.rbi +5 -40
  381. data/rbi/lib/lithic/models/external_payment.rbi +7 -12
  382. data/rbi/lib/lithic/models/external_payment_create_params.rbi +3 -6
  383. data/rbi/lib/lithic/models/external_payment_list_params.rbi +3 -6
  384. data/rbi/lib/lithic/models/external_payment_settle_params.rbi +1 -2
  385. data/rbi/lib/lithic/models/financial_account.rbi +7 -20
  386. data/rbi/lib/lithic/models/financial_account_create_params.rbi +1 -2
  387. data/rbi/lib/lithic/models/financial_account_list_params.rbi +1 -2
  388. data/rbi/lib/lithic/models/financial_account_update_status_params.rbi +2 -4
  389. data/rbi/lib/lithic/models/financial_accounts/balance_list_response.rbi +1 -2
  390. data/rbi/lib/lithic/models/financial_accounts/financial_account_credit_config.rbi +2 -16
  391. data/rbi/lib/lithic/models/financial_accounts/financial_transaction_list_params.rbi +3 -24
  392. data/rbi/lib/lithic/models/financial_accounts/loan_tape.rbi +4 -32
  393. data/rbi/lib/lithic/models/financial_accounts/statement.rbi +5 -34
  394. data/rbi/lib/lithic/models/financial_accounts/statements/statement_line_items.rbi +12 -16
  395. data/rbi/lib/lithic/models/financial_transaction.rbi +7 -10
  396. data/rbi/lib/lithic/models/instance_financial_account_type.rbi +4 -2
  397. data/rbi/lib/lithic/models/kyb.rbi +5 -4
  398. data/rbi/lib/lithic/models/kyc.rbi +1 -1
  399. data/rbi/lib/lithic/models/kyc_exempt.rbi +2 -3
  400. data/rbi/lib/lithic/models/management_operation_create_params.rbi +22 -16
  401. data/rbi/lib/lithic/models/management_operation_list_params.rbi +4 -4
  402. data/rbi/lib/lithic/models/management_operation_transaction.rbi +26 -24
  403. data/rbi/lib/lithic/models/message_attempt.rbi +1 -1
  404. data/rbi/lib/lithic/models/owner_type.rbi +1 -1
  405. data/rbi/lib/lithic/models/payment.rbi +10 -12
  406. data/rbi/lib/lithic/models/payment_create_params.rbi +3 -6
  407. data/rbi/lib/lithic/models/payment_list_params.rbi +3 -6
  408. data/rbi/lib/lithic/models/payment_simulate_action_params.rbi +2 -4
  409. data/rbi/lib/lithic/models/payment_simulate_action_response.rbi +1 -2
  410. data/rbi/lib/lithic/models/payment_simulate_receipt_params.rbi +2 -3
  411. data/rbi/lib/lithic/models/payment_simulate_receipt_response.rbi +1 -2
  412. data/rbi/lib/lithic/models/payment_simulate_release_response.rbi +1 -2
  413. data/rbi/lib/lithic/models/payment_simulate_return_response.rbi +1 -2
  414. data/rbi/lib/lithic/models/reports/settlement/network_total_list_params.rbi +1 -2
  415. data/rbi/lib/lithic/models/reports/settlement/network_total_list_response.rbi +1 -8
  416. data/rbi/lib/lithic/models/reports/settlement/network_total_retrieve_response.rbi +1 -8
  417. data/rbi/lib/lithic/models/responder_endpoint_check_status_params.rbi +1 -2
  418. data/rbi/lib/lithic/models/responder_endpoint_create_params.rbi +1 -2
  419. data/rbi/lib/lithic/models/responder_endpoint_delete_params.rbi +1 -2
  420. data/rbi/lib/lithic/models/settlement_detail.rbi +2 -3
  421. data/rbi/lib/lithic/models/settlement_summary_details.rbi +1 -2
  422. data/rbi/lib/lithic/models/spend_limit_duration.rbi +1 -1
  423. data/rbi/lib/lithic/models/three_ds/authentication_retrieve_response.rbi +17 -124
  424. data/rbi/lib/lithic/models/three_ds/authentication_simulate_params.rbi +1 -8
  425. data/rbi/lib/lithic/models/three_ds/challenge_result.rbi +1 -1
  426. data/rbi/lib/lithic/models/tokenization.rbi +5 -9
  427. data/rbi/lib/lithic/models/tokenization_list_params.rbi +1 -2
  428. data/rbi/lib/lithic/models/tokenization_resend_activation_code_params.rbi +1 -8
  429. data/rbi/lib/lithic/models/tokenization_simulate_params.rbi +2 -4
  430. data/rbi/lib/lithic/models/transaction.rbi +184 -68
  431. data/rbi/lib/lithic/models/transaction_list_params.rbi +2 -4
  432. data/rbi/lib/lithic/models/transaction_simulate_authorization_params.rbi +1 -2
  433. data/rbi/lib/lithic/models/transaction_simulate_void_params.rbi +1 -2
  434. data/rbi/lib/lithic/models/transactions/events/enhanced_data.rbi +4 -26
  435. data/rbi/lib/lithic/models/transfer.rbi +7 -5
  436. data/rbi/lib/lithic/models/verification_method.rbi +1 -1
  437. data/rbi/lib/lithic/resources/account_holders.rbi +18 -14
  438. data/rbi/lib/lithic/resources/cards.rbi +8 -8
  439. data/rbi/lib/lithic/resources/payments.rbi +1 -1
  440. data/sig/lithic/internal/type/array_of.rbs +2 -0
  441. data/sig/lithic/internal/type/base_model.rbs +10 -0
  442. data/sig/lithic/internal/type/enum.rbs +2 -2
  443. data/sig/lithic/internal/type/hash_of.rbs +2 -0
  444. data/sig/lithic/internal/type/union.rbs +2 -0
  445. data/sig/lithic/models/card_convert_physical_response.rbs +257 -0
  446. data/sig/lithic/models/card_create_response.rbs +257 -0
  447. data/sig/lithic/models/card_list_response.rbs +245 -0
  448. data/sig/lithic/models/card_reissue_response.rbs +257 -0
  449. data/sig/lithic/models/{card.rbs → card_renew_response.rbs} +45 -30
  450. data/sig/lithic/models/card_retrieve_response.rbs +257 -0
  451. data/sig/lithic/models/card_search_by_pan_response.rbs +257 -0
  452. data/sig/lithic/models/card_update_response.rbs +257 -0
  453. data/sig/lithic/models/dispute.rbs +0 -4
  454. data/sig/lithic/models/financial_account.rbs +4 -0
  455. data/sig/lithic/models/financial_accounts/statements/statement_line_items.rbs +4 -0
  456. data/sig/lithic/models/financial_transaction.rbs +2 -0
  457. data/sig/lithic/models/instance_financial_account_type.rbs +4 -0
  458. data/sig/lithic/models/management_operation_create_params.rbs +23 -13
  459. data/sig/lithic/models/management_operation_list_params.rbs +2 -0
  460. data/sig/lithic/models/management_operation_transaction.rbs +23 -13
  461. data/sig/lithic/models/transaction.rbs +87 -4
  462. data/sig/lithic/models/transfer.rbs +2 -0
  463. data/sig/lithic/resources/cards.rbs +8 -8
  464. metadata +26 -5
  465. data/lib/lithic/models/card.rb +0 -524
  466. data/rbi/lib/lithic/models/card.rbi +0 -487
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac2b9d69b258cc9761a52dc0632986c5f62d5c2150fa3b23c06fde0b64346017
4
- data.tar.gz: '0848b77cb99c28a9c5752260c8532cea2087b3053bb048ffd77677c5e2901de9'
3
+ metadata.gz: 7bf1f6b2ae2b269fcbe2e915e81c0729bb7d166f035b27dde8e72d6713733841
4
+ data.tar.gz: 0c0adcbd79d3f29d0092cd87f2c77e4136219d952544c634c5340014b9ea75bb
5
5
  SHA512:
6
- metadata.gz: 14ccbbef08bf3d2e4e2496fdeaefd03d82210b6bbed70d2d66e663a6fe2d3d88e879b004a9b6f7892ccc0a34dc7417d438a71af2e76588c37da8fac9a63454ca
7
- data.tar.gz: f5aea3f807164d03c219be133208aff6216fcfda8cdf289537ae311752d22469f2302cf0a14d9251f20bb9c758ab76ad5266a7acd3a6102ba32a37302bbe8942
6
+ metadata.gz: 9454d14be6e4f884e28b5767cdc99bb8eb90a95890e8f69cc9c328c371edaf7acae6a496fe2ae213adf40e85dc702f5e48f63f1258b2a6153e3e03fef5aa0ed1
7
+ data.tar.gz: e115e05933d7b77fe91f4705937c27edf9d03fcff923abbbb78a638d5be00a474c8937a327a00d5cb493beeb21b82ed79ebf1ec117ee9ee38f33391b99aea6f3
data/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.16 (2025-04-21)
4
+
5
+ Full Changelog: [v0.1.0-alpha.15...v0.1.0-alpha.16](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0-alpha.15...v0.1.0-alpha.16)
6
+
7
+ ### Features
8
+
9
+ * implement `#hash` for data containers ([7e1420b](https://github.com/lithic-com/lithic-ruby/commit/7e1420bfec9d254eacd77be001cefbad637c7f63))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * **internal:** refresh schemas ([cb47b40](https://github.com/lithic-com/lithic-ruby/commit/cb47b40b1aa544d6e6f8fb3f27153ec03cfd6904))
15
+
16
+
17
+ ### Chores
18
+
19
+ * documentation improvements ([6700ace](https://github.com/lithic-com/lithic-ruby/commit/6700aced32a478a1c301a3b7e3efee908c5d224e))
20
+ * explicitly mark apis public under `Internal` module ([b81d240](https://github.com/lithic-com/lithic-ruby/commit/b81d240b2048754f45ffe14c446490bce83bfce5))
21
+ * update README with recommended editor plugins ([80d5967](https://github.com/lithic-com/lithic-ruby/commit/80d5967d1e747cbd42e66a570f6520e241a64ba8))
22
+
23
+ ## 0.1.0-alpha.15 (2025-04-18)
24
+
25
+ Full Changelog: [v0.1.0-alpha.14...v0.1.0-alpha.15](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0-alpha.14...v0.1.0-alpha.15)
26
+
27
+ ### Features
28
+
29
+ * **api:** updates to Card definition for PCI clarity ([bb157ab](https://github.com/lithic-com/lithic-ruby/commit/bb157abbede60505c67651947fa8c583d17ac84a))
30
+
31
+
32
+ ### Chores
33
+
34
+ * make sorbet enums easier to read ([77f23c5](https://github.com/lithic-com/lithic-ruby/commit/77f23c58d44b4c33b6a897ff988da2cb97965653))
35
+ * refine `#inspect` and `#to_s` for model classes ([7435187](https://github.com/lithic-com/lithic-ruby/commit/74351870d4768cd923ce9d88841ba8c84b6681d6))
36
+ * simplify yard annotations by removing most `@!parse` directives ([12c6882](https://github.com/lithic-com/lithic-ruby/commit/12c6882a7db0b45f91d8e4df7b0d41016567ad7a))
37
+ * use `@!method` instead of `@!parse` for virtual method type definitions ([a73c89a](https://github.com/lithic-com/lithic-ruby/commit/a73c89aa794ebfc771a7410603c10be08d1609d3))
38
+
3
39
  ## 0.1.0-alpha.14 (2025-04-17)
4
40
 
5
41
  Full Changelog: [v0.1.0-alpha.13...v0.1.0-alpha.14](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0-alpha.13...v0.1.0-alpha.14)
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.pre.alpha.14"
18
+ gem "lithic", "~> 0.1.0.pre.alpha.16"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
@@ -31,11 +31,21 @@ lithic = Lithic::Client.new(
31
31
  environment: "sandbox" # defaults to "production"
32
32
  )
33
33
 
34
- card = lithic.cards.create(type: "SINGLE_USE")
34
+ card = lithic.cards.create(type: :SINGLE_USE)
35
35
 
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
+
39
49
  ### Pagination
40
50
 
41
51
  List methods in the Lithic API are paginated.
@@ -61,7 +71,7 @@ When the library is unable to connect to the API, or if the API returns a non-su
61
71
 
62
72
  ```ruby
63
73
  begin
64
- card = lithic.cards.create(type: "an_incorrect_type")
74
+ card = lithic.cards.create(type: :an_incorrect_type)
65
75
  rescue Lithic::Errors::APIError => e
66
76
  puts(e.status) # 400
67
77
  end
@@ -119,61 +129,32 @@ lithic = Lithic::Client.new(
119
129
  lithic.cards.list(page_size: 10, request_options: {timeout: 5})
120
130
  ```
121
131
 
122
- ## LSP Support
123
-
124
- ### Solargraph
125
-
126
- This library includes [Solargraph](https://solargraph.org) support for both auto completion and go to definition.
127
-
128
- ```ruby
129
- gem "solargraph", group: :development
130
- ```
131
-
132
- After Solargraph is installed, **you must populate its index** either via the provided editor command, or by running the following in your terminal:
133
-
134
- ```sh
135
- bundle exec solargraph gems
136
- ```
137
-
138
- Note: if you had installed the gem either using a `git:` or `github:` URL, or had vendored the gem using bundler, you will need to set up your [`.solargraph.yml`](https://solargraph.org/guides/configuration) to include the path to the gem's `lib` directory.
139
-
140
- ```yaml
141
- include:
142
- - 'vendor/bundle/ruby/*/gems/lithic-*/lib/**/*.rb'
143
- ```
144
-
145
- Otherwise Solargraph will not be able to provide type information or auto-completion for any non-indexed libraries.
146
-
147
- ### Sorbet
148
-
149
- This library is written with [Sorbet type definitions](https://sorbet.org/docs/rbi). However, there is no runtime dependency on the `sorbet-runtime`.
132
+ ## Model DSL
150
133
 
151
- What this means is that while you can use Sorbet to type check your code statically, and benefit from the [Sorbet Language Server](https://sorbet.org/docs/lsp) in your editor, there is no runtime type checking and execution overhead from Sorbet itself.
134
+ This library uses a simple DSL to represent request parameters and response shapes in `lib/lithic/models`.
152
135
 
153
- Due to limitations with the Sorbet type system, where a method otherwise can take an instance of `Lithic::BaseModel` class, you will need to use the `**` splat operator to pass the arguments:
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.
154
137
 
155
- Please follow Sorbet's [setup guides](https://sorbet.org/docs/adopting) for best experience.
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:
156
139
 
157
140
  ```ruby
158
- params = Lithic::Models::CardCreateParams.new(type: "SINGLE_USE")
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)
159
143
 
160
- lithic.cards.create(**params)
144
+ # This also works
145
+ params = {
146
+ type: :SINGLE_USE
147
+ }
161
148
  ```
162
149
 
163
- Note: **This library emits an intentional warning under the [`tapioca` toolchain](https://github.com/Shopify/tapioca)**. This is normal, and does not impact functionality.
164
-
165
- ### Ruby LSP
150
+ ## Editor support
166
151
 
167
- The Ruby LSP has [best effort support](https://shopify.github.io/ruby-lsp/#guessed-types) for inferring type information from Ruby code, and as such it may not always be able to provide accurate type information.
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.
168
153
 
169
- ## Advanced
154
+ ## Advanced concepts
170
155
 
171
156
  ### Making custom/undocumented requests
172
157
 
173
- This library is typed for convenient access to the documented API.
174
-
175
- If you need to access undocumented endpoints, params, or response properties, the library can still be used.
176
-
177
158
  #### Undocumented request params
178
159
 
179
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.
@@ -184,15 +165,15 @@ To make requests to undocumented endpoints, you can make requests using `client.
184
165
 
185
166
  ```ruby
186
167
  response = client.request(
187
- method: :post,
188
- path: '/undocumented/endpoint',
189
- query: {"dog": "woof"},
190
- headers: {"useful-header": "interesting-value"},
191
- body: {"he": "llo"},
192
- )
168
+ method: :post,
169
+ path: '/undocumented/endpoint',
170
+ query: {"dog": "woof"},
171
+ headers: {"useful-header": "interesting-value"},
172
+ body: {"he": "llo"},
173
+ )
193
174
  ```
194
175
 
195
- ### Concurrency & Connection Pooling
176
+ ### Concurrency & connection pooling
196
177
 
197
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.
198
179
 
@@ -202,6 +183,30 @@ Unless otherwise specified, other classes in the SDK do not have locks protectin
202
183
 
203
184
  Currently, `Lithic::Client` instances are only fork-safe if there are no in-flight HTTP requests.
204
185
 
186
+ ### Sorbet
187
+
188
+ #### Enums
189
+
190
+ Sorbet's typed enums require sub-classing of the [`T::Enum` class](https://sorbet.org/docs/tenum) from the `sorbet-runtime` gem.
191
+
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.
193
+
194
+ ```ruby
195
+ module Lithic::Models::AccountFinancialAccountType
196
+ # This alias aids language service driven navigation.
197
+ TaggedSymbol = T.type_alias { T.all(Symbol, Lithic::Models::AccountFinancialAccountType) }
198
+ end
199
+ ```
200
+
201
+ #### Argument passing trick
202
+
203
+ It is possible to pass a compatible model / parameter class to a method that expects keyword arguments by using the `**` splat operator.
204
+
205
+ ```ruby
206
+ params = Lithic::Models::CardCreateParams.new(type: :SINGLE_USE)
207
+ lithic.cards.create(**params)
208
+ ```
209
+
205
210
  ## Versioning
206
211
 
207
212
  This package follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions. As the library is in initial development and has a major version of `0`, APIs may change at any time.
@@ -211,3 +216,7 @@ This package considers improvements to the (non-runtime) `*.rbi` and `*.rbs` typ
211
216
  ## Requirements
212
217
 
213
218
  Ruby 3.1.0 or higher.
219
+
220
+ ## Contributing
221
+
222
+ See [the contributing documentation](https://github.com/lithic-com/lithic-ruby/tree/main/CONTRIBUTING.md).
data/lib/lithic/client.rb CHANGED
@@ -148,10 +148,10 @@ module Lithic
148
148
  api_key: ENV["LITHIC_API_KEY"],
149
149
  environment: nil,
150
150
  base_url: ENV["LITHIC_BASE_URL"],
151
- max_retries: DEFAULT_MAX_RETRIES,
152
- timeout: DEFAULT_TIMEOUT_IN_SECONDS,
153
- initial_retry_delay: DEFAULT_INITIAL_RETRY_DELAY,
154
- max_retry_delay: DEFAULT_MAX_RETRY_DELAY
151
+ max_retries: Lithic::Client::DEFAULT_MAX_RETRIES,
152
+ timeout: Lithic::Client::DEFAULT_TIMEOUT_IN_SECONDS,
153
+ initial_retry_delay: Lithic::Client::DEFAULT_INITIAL_RETRY_DELAY,
154
+ max_retry_delay: Lithic::Client::DEFAULT_MAX_RETRY_DELAY
155
155
  )
156
156
  base_url ||= Lithic::Client::ENVIRONMENTS.fetch(environment&.to_sym || :production) do
157
157
  message = "environment must be one of #{Lithic::Client::ENVIRONMENTS.keys}, got #{environment}"
@@ -57,15 +57,11 @@ module Lithic
57
57
  # @return [Array(Net::HTTPGenericRequest, Proc)]
58
58
  def build_request(request, &blk)
59
59
  method, url, headers, body = request.fetch_values(:method, :url, :headers, :body)
60
-
61
- # ensure we construct a URI class of the right scheme
62
- url = URI(url.to_s)
63
-
64
60
  req = Net::HTTPGenericRequest.new(
65
61
  method.to_s.upcase,
66
62
  !body.nil?,
67
63
  method != :head,
68
- url
64
+ URI(url.to_s) # ensure we construct a URI class of the right scheme
69
65
  )
70
66
 
71
67
  headers.each { req[_1] = _2 }
@@ -30,11 +30,15 @@ module Lithic
30
30
  # @option spec [Boolean] :"nil?"
31
31
  def self.[](...) = new(...)
32
32
 
33
+ # @api public
34
+ #
33
35
  # @param other [Object]
34
36
  #
35
37
  # @return [Boolean]
36
38
  def ===(other) = other.is_a?(Array) && other.all?(item_type)
37
39
 
40
+ # @api public
41
+ #
38
42
  # @param other [Object]
39
43
  #
40
44
  # @return [Boolean]
@@ -44,6 +48,11 @@ module Lithic
44
48
  # rubocop:enable Layout/LineLength
45
49
  end
46
50
 
51
+ # @api public
52
+ #
53
+ # @return [Integer]
54
+ def hash = [self.class, item_type].hash
55
+
47
56
  # @api private
48
57
  #
49
58
  # @param value [Array<Object>, Object]
@@ -4,14 +4,6 @@ module Lithic
4
4
  module Internal
5
5
  module Type
6
6
  # @abstract
7
- #
8
- # @example
9
- # # `address` is a `Lithic::Models::Address`
10
- # address => {
11
- # address1: address1,
12
- # city: city,
13
- # country: country
14
- # }
15
7
  class BaseModel
16
8
  extend Lithic::Internal::Type::Converter
17
9
 
@@ -93,11 +85,13 @@ module Lithic
93
85
  state: state
94
86
  )
95
87
  end
96
- rescue StandardError
88
+ rescue StandardError => e
97
89
  cls = self.class.name.split("::").last
98
- # rubocop:disable Layout/LineLength
99
- message = "Failed to parse #{cls}.#{__method__} from #{value.class} to #{target.inspect}. To get the unparsed API response, use #{cls}[:#{__method__}]."
100
- # rubocop:enable Layout/LineLength
90
+ message = [
91
+ "Failed to parse #{cls}.#{__method__} from #{value.class} to #{target.inspect}.",
92
+ "To get the unparsed API response, use #{cls}[#{__method__.inspect}].",
93
+ "Cause: #{e.message}"
94
+ ].join(" ")
101
95
  raise Lithic::Errors::ConversionError.new(message)
102
96
  end
103
97
  end
@@ -165,19 +159,33 @@ module Lithic
165
159
  @mode = nil
166
160
  end
167
161
 
162
+ # @api public
163
+ #
168
164
  # @param other [Object]
169
165
  #
170
166
  # @return [Boolean]
171
167
  def ==(other)
172
168
  other.is_a?(Class) && other <= Lithic::Internal::Type::BaseModel && other.fields == fields
173
169
  end
170
+
171
+ # @api public
172
+ #
173
+ # @return [Integer]
174
+ def hash = fields.hash
174
175
  end
175
176
 
177
+ # @api public
178
+ #
176
179
  # @param other [Object]
177
180
  #
178
181
  # @return [Boolean]
179
182
  def ==(other) = self.class == other.class && @data == other.to_h
180
183
 
184
+ # @api public
185
+ #
186
+ # @return [Integer]
187
+ def hash = [self.class, @data].hash
188
+
181
189
  class << self
182
190
  # @api private
183
191
  #
@@ -291,6 +299,8 @@ module Lithic
291
299
  end
292
300
  end
293
301
 
302
+ # @api public
303
+ #
294
304
  # Returns the raw value associated with the given key, if found. Otherwise, nil is
295
305
  # returned.
296
306
  #
@@ -309,6 +319,8 @@ module Lithic
309
319
  @data[key]
310
320
  end
311
321
 
322
+ # @api public
323
+ #
312
324
  # Returns a Hash of the data underlying this object. O(1)
313
325
  #
314
326
  # Keys are Symbols and values are the raw values from the response. The return
@@ -338,11 +350,38 @@ module Lithic
338
350
  .to_h
339
351
  end
340
352
 
353
+ class << self
354
+ # @api private
355
+ #
356
+ # @param model [Lithic::Internal::Type::BaseModel]
357
+ #
358
+ # @return [Hash{Symbol=>Object}]
359
+ def walk(model)
360
+ walk = ->(x) do
361
+ case x
362
+ in Lithic::Internal::Type::BaseModel
363
+ walk.call(x.to_h)
364
+ in Hash
365
+ x.transform_values(&walk)
366
+ in Array
367
+ x.map(&walk)
368
+ else
369
+ x
370
+ end
371
+ end
372
+ walk.call(model)
373
+ end
374
+ end
375
+
376
+ # @api public
377
+ #
341
378
  # @param a [Object]
342
379
  #
343
380
  # @return [String]
344
381
  def to_json(*a) = Lithic::Internal::Type::Converter.dump(self.class, self).to_json(*a)
345
382
 
383
+ # @api public
384
+ #
346
385
  # @param a [Object]
347
386
  #
348
387
  # @return [String]
@@ -373,31 +412,26 @@ module Lithic
373
412
  depth = depth.succ
374
413
  deferred = fields.transform_values do |field|
375
414
  type, required, nilable = field.fetch_values(:type, :required, :nilable)
376
- -> do
377
- [
378
- Lithic::Internal::Type::Converter.inspect(type, depth: depth),
379
- !required || nilable ? "nil" : nil
380
- ].compact.join(" | ")
381
- end
382
- .tap { _1.define_singleton_method(:inspect) { call } }
415
+ inspected = [
416
+ Lithic::Internal::Type::Converter.inspect(type, depth: depth),
417
+ !required || nilable ? "nil" : nil
418
+ ].compact.join(" | ")
419
+ -> { inspected }.tap { _1.define_singleton_method(:inspect) { call } }
383
420
  end
384
421
 
385
422
  "#{name}[#{deferred.inspect}]"
386
423
  end
387
424
  end
388
425
 
389
- # @api private
426
+ # @api public
390
427
  #
391
428
  # @return [String]
392
- def inspect
393
- rows = @data.map do
394
- "#{_1}=#{self.class.known_fields.key?(_1) ? public_send(_1).inspect : ''}"
395
- rescue Lithic::Errors::ConversionError
396
- "#{_1}=#{_2.inspect}"
397
- end
429
+ def to_s = self.class.walk(@data).to_s
398
430
 
399
- "#<#{self.class}:0x#{object_id.to_s(16)} #{rows.join(' ')}>"
400
- end
431
+ # @api private
432
+ #
433
+ # @return [String]
434
+ def inspect = "#<#{self.class}:0x#{object_id.to_s(16)} #{self}>"
401
435
  end
402
436
  end
403
437
  end
@@ -3,19 +3,27 @@
3
3
  module Lithic
4
4
  module Internal
5
5
  module Type
6
+ # @api private
7
+ #
6
8
  # @generic Elem
7
9
  #
8
10
  # This module provides a base implementation for paginated responses in the SDK.
9
11
  module BasePage
10
12
  # rubocop:disable Lint/UnusedMethodArgument
11
13
 
14
+ # @api public
15
+ #
12
16
  # @return [Boolean]
13
17
  def next_page? = (raise NotImplementedError)
14
18
 
19
+ # @api public
20
+ #
15
21
  # @raise [Lithic::Errors::APIError]
16
22
  # @return [Lithic::Internal::Type::BasePage]
17
23
  def next_page = (raise NotImplementedError)
18
24
 
25
+ # @api public
26
+ #
19
27
  # @param blk [Proc]
20
28
  #
21
29
  # @yieldparam [generic<Elem>]
@@ -13,11 +13,15 @@ module Lithic
13
13
 
14
14
  private_class_method :new
15
15
 
16
+ # @api public
17
+ #
16
18
  # @param other [Object]
17
19
  #
18
20
  # @return [Boolean]
19
21
  def self.===(other) = other == true || other == false
20
22
 
23
+ # @api public
24
+ #
21
25
  # @param other [Object]
22
26
  #
23
27
  # @return [Boolean]
@@ -42,18 +42,17 @@ module Lithic
42
42
  # All of the valid Symbol values for this enum.
43
43
  #
44
44
  # @return [Array<NilClass, Boolean, Integer, Float, Symbol>]
45
- def values = (@values ||= constants.map { const_get(_1) })
45
+ def values = constants.map { const_get(_1) }
46
46
 
47
- # @api private
47
+ # @api public
48
48
  #
49
- # Guard against thread safety issues by instantiating `@values`.
50
- private def finalize! = values
51
-
52
49
  # @param other [Object]
53
50
  #
54
51
  # @return [Boolean]
55
52
  def ===(other) = values.include?(other)
56
53
 
54
+ # @api public
55
+ #
57
56
  # @param other [Object]
58
57
  #
59
58
  # @return [Boolean]
@@ -63,6 +62,11 @@ module Lithic
63
62
  # rubocop:enable Style/CaseEquality
64
63
  end
65
64
 
65
+ # @api public
66
+ #
67
+ # @return [Integer]
68
+ def hash = values.to_set.hash
69
+
66
70
  # @api private
67
71
  #
68
72
  # Unlike with primitives, `Enum` additionally validates that the value is a member
@@ -30,6 +30,8 @@ module Lithic
30
30
  # @option spec [Boolean] :"nil?"
31
31
  def self.[](...) = new(...)
32
32
 
33
+ # @api public
34
+ #
33
35
  # @param other [Object]
34
36
  #
35
37
  # @return [Boolean]
@@ -50,6 +52,8 @@ module Lithic
50
52
  end
51
53
  end
52
54
 
55
+ # @api public
56
+ #
53
57
  # @param other [Object]
54
58
  #
55
59
  # @return [Boolean]
@@ -59,6 +63,11 @@ module Lithic
59
63
  # rubocop:enable Layout/LineLength
60
64
  end
61
65
 
66
+ # @api public
67
+ #
68
+ # @return [Integer]
69
+ def hash = [self.class, item_type].hash
70
+
62
71
  # @api private
63
72
  #
64
73
  # @param value [Hash{Object=>Object}, Object]
@@ -13,6 +13,8 @@ module Lithic
13
13
 
14
14
  private_class_method :new
15
15
 
16
+ # @api public
17
+ #
16
18
  # @param other [Object]
17
19
  #
18
20
  # @return [Boolean]
@@ -25,6 +27,8 @@ module Lithic
25
27
  end
26
28
  end
27
29
 
30
+ # @api public
31
+ #
28
32
  # @param other [Object]
29
33
  #
30
34
  # @return [Boolean]
@@ -12,9 +12,8 @@ module Lithic
12
12
 
13
13
  # @param mod [Module]
14
14
  def self.included(mod)
15
- return unless mod <= Lithic::Internal::Type::BaseModel
15
+ raise ArgumentError.new(mod) unless mod <= Lithic::Internal::Type::BaseModel
16
16
 
17
- mod.extend(Lithic::Internal::Type::RequestParameters::Converter)
18
17
  mod.optional(:request_options, Lithic::RequestOptions)
19
18
  end
20
19
 
@@ -29,7 +29,7 @@ module Lithic
29
29
  #
30
30
  # @return [Array<Array(Symbol, Object)>]
31
31
  protected def derefed_variants
32
- @known_variants.map { |key, variant_fn| [key, variant_fn.call] }
32
+ known_variants.map { |key, variant_fn| [key, variant_fn.call] }
33
33
  end
34
34
 
35
35
  # All of the specified variants for this union.
@@ -98,6 +98,8 @@ module Lithic
98
98
  # rubocop:disable Style/HashEachMethods
99
99
  # rubocop:disable Style/CaseEquality
100
100
 
101
+ # @api public
102
+ #
101
103
  # @param other [Object]
102
104
  #
103
105
  # @return [Boolean]
@@ -107,6 +109,8 @@ module Lithic
107
109
  end
108
110
  end
109
111
 
112
+ # @api public
113
+ #
110
114
  # @param other [Object]
111
115
  #
112
116
  # @return [Boolean]
@@ -114,6 +118,11 @@ module Lithic
114
118
  Lithic::Internal::Type::Union === other && other.derefed_variants == derefed_variants
115
119
  end
116
120
 
121
+ # @api public
122
+ #
123
+ # @return [Integer]
124
+ def hash = variants.hash
125
+
117
126
  # @api private
118
127
  #
119
128
  # @param value [Object]
@@ -15,11 +15,15 @@ module Lithic
15
15
 
16
16
  private_class_method :new
17
17
 
18
+ # @api public
19
+ #
18
20
  # @param other [Object]
19
21
  #
20
22
  # @return [Boolean]
21
23
  def self.===(other) = true
22
24
 
25
+ # @api public
26
+ #
23
27
  # @param other [Object]
24
28
  #
25
29
  # @return [Boolean]
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lithic
4
- # @api private
5
4
  module Internal
6
5
  OMIT =
7
6
  Object.new.tap do