finch-api 0.1.0.pre.alpha.1 → 0.1.0.pre.alpha.2

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 (417) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +63 -20
  3. data/lib/finch-api/base_client.rb +52 -59
  4. data/lib/finch-api/base_model.rb +453 -415
  5. data/lib/finch-api/base_page.rb +34 -15
  6. data/lib/finch-api/client.rb +3 -7
  7. data/lib/finch-api/errors.rb +12 -17
  8. data/lib/finch-api/extern.rb +1 -4
  9. data/lib/finch-api/individuals_page.rb +28 -34
  10. data/lib/finch-api/models/account_update_event.rb +6 -31
  11. data/lib/finch-api/models/company_event.rb +3 -11
  12. data/lib/finch-api/models/connect/session_new_params.rb +9 -52
  13. data/lib/finch-api/models/connect/session_reauthenticate_params.rb +3 -22
  14. data/lib/finch-api/models/connection_status_type.rb +3 -21
  15. data/lib/finch-api/models/create_access_token_response.rb +6 -30
  16. data/lib/finch-api/models/directory_event.rb +3 -15
  17. data/lib/finch-api/models/employment_event.rb +3 -15
  18. data/lib/finch-api/models/hris/benefit_contribution.rb +3 -14
  19. data/lib/finch-api/models/hris/benefit_features_and_operations.rb +9 -39
  20. data/lib/finch-api/models/hris/benefit_frequency.rb +3 -15
  21. data/lib/finch-api/models/hris/benefit_type.rb +3 -22
  22. data/lib/finch-api/models/hris/benefits/enrolled_individual.rb +3 -18
  23. data/lib/finch-api/models/hris/benefits/individual_benefit.rb +3 -14
  24. data/lib/finch-api/models/hris/benefits/individual_enroll_many_params.rb +9 -40
  25. data/lib/finch-api/models/hris/company.rb +9 -52
  26. data/lib/finch-api/models/hris/document_list_params.rb +3 -13
  27. data/lib/finch-api/models/hris/document_response.rb +3 -14
  28. data/lib/finch-api/models/hris/document_retreive_response.rb +7 -23
  29. data/lib/finch-api/models/hris/employment_data.rb +9 -58
  30. data/lib/finch-api/models/hris/individual.rb +12 -66
  31. data/lib/finch-api/models/hris/pay_statement.rb +12 -70
  32. data/lib/finch-api/models/hris/payment.rb +3 -21
  33. data/lib/finch-api/models/hris/supported_benefit.rb +9 -39
  34. data/lib/finch-api/models/hris/w42005.rb +12 -49
  35. data/lib/finch-api/models/hris/w42020.rb +8 -29
  36. data/lib/finch-api/models/income.rb +3 -22
  37. data/lib/finch-api/models/individual_event.rb +3 -15
  38. data/lib/finch-api/models/introspection.rb +9 -50
  39. data/lib/finch-api/models/job_completion_event.rb +3 -21
  40. data/lib/finch-api/models/jobs/automated_async_job.rb +6 -35
  41. data/lib/finch-api/models/jobs/automated_create_params.rb +3 -12
  42. data/lib/finch-api/models/jobs/automated_list_response.rb +100 -0
  43. data/lib/finch-api/models/jobs/manual_async_job.rb +3 -17
  44. data/lib/finch-api/models/operation_support.rb +3 -18
  45. data/lib/finch-api/models/pay_statement_event.rb +3 -15
  46. data/lib/finch-api/models/payment_event.rb +3 -15
  47. data/lib/finch-api/models/payroll/pay_group_list_response.rb +3 -21
  48. data/lib/finch-api/models/payroll/pay_group_retrieve_response.rb +3 -21
  49. data/lib/finch-api/models/provider.rb +3 -20
  50. data/lib/finch-api/models/sandbox/company_update_params.rb +9 -52
  51. data/lib/finch-api/models/sandbox/company_update_response.rb +9 -52
  52. data/lib/finch-api/models/sandbox/connection_create_params.rb +3 -17
  53. data/lib/finch-api/models/sandbox/connection_create_response.rb +3 -17
  54. data/lib/finch-api/models/sandbox/connections/account_create_params.rb +3 -17
  55. data/lib/finch-api/models/sandbox/connections/account_create_response.rb +3 -17
  56. data/lib/finch-api/models/sandbox/connections/account_update_response.rb +3 -17
  57. data/lib/finch-api/models/sandbox/directory_create_params.rb +21 -124
  58. data/lib/finch-api/models/sandbox/employment_update_params.rb +9 -58
  59. data/lib/finch-api/models/sandbox/employment_update_response.rb +9 -58
  60. data/lib/finch-api/models/sandbox/individual_update_params.rb +12 -66
  61. data/lib/finch-api/models/sandbox/individual_update_response.rb +12 -66
  62. data/lib/finch-api/models/sandbox/job_create_params.rb +3 -12
  63. data/lib/finch-api/models/sandbox/jobs/configuration_retrieve_response.rb +2 -1
  64. data/lib/finch-api/models/sandbox/jobs/sandbox_job_configuration.rb +6 -28
  65. data/lib/finch-api/models/sandbox/payment_create_params.rb +12 -70
  66. data/lib/finch-api/models/webhook_event.rb +10 -27
  67. data/lib/finch-api/page.rb +28 -34
  68. data/lib/finch-api/pooled_net_requester.rb +51 -46
  69. data/lib/finch-api/request_options.rb +5 -12
  70. data/lib/finch-api/resources/access_tokens.rb +0 -2
  71. data/lib/finch-api/resources/account.rb +0 -3
  72. data/lib/finch-api/resources/connect/sessions.rb +0 -3
  73. data/lib/finch-api/resources/connect.rb +0 -1
  74. data/lib/finch-api/resources/hris/benefits/individuals.rb +2 -6
  75. data/lib/finch-api/resources/hris/benefits.rb +0 -6
  76. data/lib/finch-api/resources/hris/company.rb +0 -2
  77. data/lib/finch-api/resources/hris/directory.rb +1 -24
  78. data/lib/finch-api/resources/hris/documents.rb +4 -7
  79. data/lib/finch-api/resources/hris/employments.rb +0 -2
  80. data/lib/finch-api/resources/hris/individuals.rb +0 -2
  81. data/lib/finch-api/resources/hris/pay_statements.rb +0 -2
  82. data/lib/finch-api/resources/hris/payments.rb +0 -2
  83. data/lib/finch-api/resources/hris.rb +0 -1
  84. data/lib/finch-api/resources/jobs/automated.rb +2 -7
  85. data/lib/finch-api/resources/jobs/manual.rb +0 -2
  86. data/lib/finch-api/resources/jobs.rb +0 -1
  87. data/lib/finch-api/resources/payroll/pay_groups.rb +0 -3
  88. data/lib/finch-api/resources/payroll.rb +0 -1
  89. data/lib/finch-api/resources/providers.rb +0 -2
  90. data/lib/finch-api/resources/request_forwarding.rb +0 -2
  91. data/lib/finch-api/resources/sandbox/company.rb +0 -2
  92. data/lib/finch-api/resources/sandbox/connections/accounts.rb +0 -3
  93. data/lib/finch-api/resources/sandbox/connections.rb +0 -2
  94. data/lib/finch-api/resources/sandbox/directory.rb +0 -2
  95. data/lib/finch-api/resources/sandbox/employment.rb +0 -2
  96. data/lib/finch-api/resources/sandbox/individual.rb +0 -2
  97. data/lib/finch-api/resources/sandbox/jobs/configuration.rb +0 -3
  98. data/lib/finch-api/resources/sandbox/jobs.rb +0 -2
  99. data/lib/finch-api/resources/sandbox/payment.rb +0 -2
  100. data/lib/finch-api/resources/sandbox.rb +0 -1
  101. data/lib/finch-api/resources/webhooks.rb +0 -1
  102. data/lib/finch-api/responses_page.rb +24 -31
  103. data/lib/finch-api/single_page.rb +23 -31
  104. data/lib/finch-api/util.rb +216 -124
  105. data/lib/finch-api/version.rb +1 -1
  106. data/lib/finch-api.rb +17 -0
  107. data/manifest.yaml +1 -0
  108. data/rbi/lib/finch-api/base_client.rbi +89 -66
  109. data/rbi/lib/finch-api/base_model.rbi +403 -236
  110. data/rbi/lib/finch-api/base_page.rbi +3 -6
  111. data/rbi/lib/finch-api/client.rbi +23 -28
  112. data/rbi/lib/finch-api/errors.rbi +20 -22
  113. data/rbi/lib/finch-api/extern.rbi +1 -1
  114. data/rbi/lib/finch-api/individuals_page.rbi +5 -23
  115. data/rbi/lib/finch-api/models/access_token_create_params.rbi +13 -24
  116. data/rbi/lib/finch-api/models/account_disconnect_params.rbi +9 -2
  117. data/rbi/lib/finch-api/models/account_introspect_params.rbi +9 -2
  118. data/rbi/lib/finch-api/models/account_update_event.rbi +871 -983
  119. data/rbi/lib/finch-api/models/base_webhook_event.rbi +13 -19
  120. data/rbi/lib/finch-api/models/company_event.rbi +28 -20
  121. data/rbi/lib/finch-api/models/connect/session_new_params.rbi +90 -104
  122. data/rbi/lib/finch-api/models/connect/session_new_response.rbi +6 -14
  123. data/rbi/lib/finch-api/models/connect/session_reauthenticate_params.rbi +37 -47
  124. data/rbi/lib/finch-api/models/connect/session_reauthenticate_response.rbi +6 -14
  125. data/rbi/lib/finch-api/models/connection_status_type.rbi +13 -9
  126. data/rbi/lib/finch-api/models/create_access_token_response.rbi +61 -78
  127. data/rbi/lib/finch-api/models/directory_event.rbi +42 -27
  128. data/rbi/lib/finch-api/models/disconnect_response.rbi +4 -8
  129. data/rbi/lib/finch-api/models/employment_event.rbi +42 -27
  130. data/rbi/lib/finch-api/models/hris/benefit_contribution.rbi +29 -21
  131. data/rbi/lib/finch-api/models/hris/benefit_create_params.rbi +18 -26
  132. data/rbi/lib/finch-api/models/hris/benefit_features_and_operations.rbi +199 -86
  133. data/rbi/lib/finch-api/models/hris/benefit_frequency.rbi +9 -6
  134. data/rbi/lib/finch-api/models/hris/benefit_list_params.rbi +9 -2
  135. data/rbi/lib/finch-api/models/hris/benefit_list_supported_benefits_params.rbi +9 -2
  136. data/rbi/lib/finch-api/models/hris/benefit_retrieve_params.rbi +9 -2
  137. data/rbi/lib/finch-api/models/hris/benefit_type.rbi +26 -22
  138. data/rbi/lib/finch-api/models/hris/benefit_update_params.rbi +7 -11
  139. data/rbi/lib/finch-api/models/hris/benefits/enrolled_individual.rbi +43 -49
  140. data/rbi/lib/finch-api/models/hris/benefits/individual_benefit.rbi +74 -63
  141. data/rbi/lib/finch-api/models/hris/benefits/individual_enroll_many_params.rbi +249 -104
  142. data/rbi/lib/finch-api/models/hris/benefits/individual_enrolled_ids_params.rbi +9 -2
  143. data/rbi/lib/finch-api/models/hris/benefits/individual_enrolled_ids_response.rbi +4 -14
  144. data/rbi/lib/finch-api/models/hris/benefits/individual_retrieve_many_benefits_params.rbi +11 -8
  145. data/rbi/lib/finch-api/models/hris/benefits/individual_unenroll_many_params.rbi +7 -8
  146. data/rbi/lib/finch-api/models/hris/benefits/unenrolled_individual.rbi +23 -39
  147. data/rbi/lib/finch-api/models/hris/benefits_support.rbi +88 -86
  148. data/rbi/lib/finch-api/models/hris/benfit_contribution.rbi +1 -1
  149. data/rbi/lib/finch-api/models/hris/company.rbi +119 -171
  150. data/rbi/lib/finch-api/models/hris/company_benefit.rbi +13 -32
  151. data/rbi/lib/finch-api/models/hris/company_retrieve_params.rbi +9 -2
  152. data/rbi/lib/finch-api/models/hris/create_company_benefits_response.rbi +3 -8
  153. data/rbi/lib/finch-api/models/hris/directory_list_individuals_params.rbi +11 -13
  154. data/rbi/lib/finch-api/models/hris/directory_list_params.rbi +11 -13
  155. data/rbi/lib/finch-api/models/hris/document_list_params.rbi +32 -31
  156. data/rbi/lib/finch-api/models/hris/document_list_response.rbi +10 -17
  157. data/rbi/lib/finch-api/models/hris/document_response.rbi +40 -43
  158. data/rbi/lib/finch-api/models/hris/document_retreive_params.rbi +9 -2
  159. data/rbi/lib/finch-api/models/hris/document_retreive_response.rbi +6 -4
  160. data/rbi/lib/finch-api/models/hris/employment_data.rbi +163 -205
  161. data/rbi/lib/finch-api/models/hris/employment_data_response.rbi +18 -17
  162. data/rbi/lib/finch-api/models/hris/employment_retrieve_many_params.rbi +12 -21
  163. data/rbi/lib/finch-api/models/hris/individual.rbi +126 -151
  164. data/rbi/lib/finch-api/models/hris/individual_in_directory.rbi +42 -68
  165. data/rbi/lib/finch-api/models/hris/individual_response.rbi +18 -17
  166. data/rbi/lib/finch-api/models/hris/individual_retrieve_many_params.rbi +27 -31
  167. data/rbi/lib/finch-api/models/hris/pay_statement.rbi +290 -341
  168. data/rbi/lib/finch-api/models/hris/pay_statement_response.rbi +18 -20
  169. data/rbi/lib/finch-api/models/hris/pay_statement_response_body.rbi +13 -16
  170. data/rbi/lib/finch-api/models/hris/pay_statement_retrieve_many_params.rbi +18 -31
  171. data/rbi/lib/finch-api/models/hris/payment.rbi +63 -103
  172. data/rbi/lib/finch-api/models/hris/payment_list_params.rbi +9 -15
  173. data/rbi/lib/finch-api/models/hris/support_per_benefit_type.rbi +10 -14
  174. data/rbi/lib/finch-api/models/hris/supported_benefit.rbi +83 -79
  175. data/rbi/lib/finch-api/models/hris/update_company_benefit_response.rbi +3 -8
  176. data/rbi/lib/finch-api/models/hris/w42005.rbi +86 -70
  177. data/rbi/lib/finch-api/models/hris/w42020.rbi +84 -86
  178. data/rbi/lib/finch-api/models/income.rbi +34 -41
  179. data/rbi/lib/finch-api/models/individual_event.rbi +42 -27
  180. data/rbi/lib/finch-api/models/introspection.rbi +138 -178
  181. data/rbi/lib/finch-api/models/job_completion_event.rbi +48 -37
  182. data/rbi/lib/finch-api/models/jobs/automated_async_job.rbi +66 -94
  183. data/rbi/lib/finch-api/models/jobs/automated_create_params.rbi +26 -33
  184. data/rbi/lib/finch-api/models/jobs/automated_create_response.rbi +11 -31
  185. data/rbi/lib/finch-api/models/jobs/automated_list_params.rbi +11 -13
  186. data/rbi/lib/finch-api/models/jobs/automated_list_response.rbi +126 -0
  187. data/rbi/lib/finch-api/models/jobs/automated_retrieve_params.rbi +9 -2
  188. data/rbi/lib/finch-api/models/jobs/manual_async_job.rbi +32 -27
  189. data/rbi/lib/finch-api/models/jobs/manual_retrieve_params.rbi +9 -2
  190. data/rbi/lib/finch-api/models/location.rbi +16 -59
  191. data/rbi/lib/finch-api/models/money.rbi +7 -13
  192. data/rbi/lib/finch-api/models/operation_support.rbi +18 -7
  193. data/rbi/lib/finch-api/models/operation_support_matrix.rbi +65 -27
  194. data/rbi/lib/finch-api/models/paging.rbi +10 -12
  195. data/rbi/lib/finch-api/models/pay_statement_event.rbi +46 -32
  196. data/rbi/lib/finch-api/models/payment_event.rbi +39 -34
  197. data/rbi/lib/finch-api/models/payroll/pay_group_list_params.rbi +9 -13
  198. data/rbi/lib/finch-api/models/payroll/pay_group_list_response.rbi +55 -30
  199. data/rbi/lib/finch-api/models/payroll/pay_group_retrieve_params.rbi +9 -2
  200. data/rbi/lib/finch-api/models/payroll/pay_group_retrieve_response.rbi +45 -46
  201. data/rbi/lib/finch-api/models/provider.rbi +873 -964
  202. data/rbi/lib/finch-api/models/provider_list_params.rbi +9 -2
  203. data/rbi/lib/finch-api/models/request_forwarding_forward_params.rbi +20 -33
  204. data/rbi/lib/finch-api/models/request_forwarding_forward_response.rbi +40 -59
  205. data/rbi/lib/finch-api/models/sandbox/company_update_params.rbi +144 -166
  206. data/rbi/lib/finch-api/models/sandbox/company_update_response.rbi +145 -174
  207. data/rbi/lib/finch-api/models/sandbox/connection_create_params.rbi +43 -39
  208. data/rbi/lib/finch-api/models/sandbox/connection_create_response.rbi +38 -59
  209. data/rbi/lib/finch-api/models/sandbox/connections/account_create_params.rbi +62 -39
  210. data/rbi/lib/finch-api/models/sandbox/connections/account_create_response.rbi +54 -62
  211. data/rbi/lib/finch-api/models/sandbox/connections/account_update_params.rbi +17 -11
  212. data/rbi/lib/finch-api/models/sandbox/connections/account_update_response.rbi +55 -54
  213. data/rbi/lib/finch-api/models/sandbox/directory_create_params.rbi +380 -332
  214. data/rbi/lib/finch-api/models/sandbox/directory_create_response.rbi +1 -1
  215. data/rbi/lib/finch-api/models/sandbox/employment_update_params.rbi +190 -194
  216. data/rbi/lib/finch-api/models/sandbox/employment_update_response.rbi +195 -198
  217. data/rbi/lib/finch-api/models/sandbox/individual_update_params.rbi +151 -145
  218. data/rbi/lib/finch-api/models/sandbox/individual_update_response.rbi +163 -151
  219. data/rbi/lib/finch-api/models/sandbox/job_create_params.rbi +22 -19
  220. data/rbi/lib/finch-api/models/sandbox/job_create_response.rbi +11 -31
  221. data/rbi/lib/finch-api/models/sandbox/jobs/configuration_retrieve_params.rbi +9 -2
  222. data/rbi/lib/finch-api/models/sandbox/jobs/configuration_retrieve_response.rbi +2 -1
  223. data/rbi/lib/finch-api/models/sandbox/jobs/configuration_update_params.rbi +9 -2
  224. data/rbi/lib/finch-api/models/sandbox/jobs/sandbox_job_configuration.rbi +56 -26
  225. data/rbi/lib/finch-api/models/sandbox/payment_create_params.rbi +409 -393
  226. data/rbi/lib/finch-api/models/sandbox/payment_create_response.rbi +6 -14
  227. data/rbi/lib/finch-api/models/webhook_event.rbi +4 -4
  228. data/rbi/lib/finch-api/page.rbi +5 -23
  229. data/rbi/lib/finch-api/pooled_net_requester.rbi +39 -16
  230. data/rbi/lib/finch-api/request_options.rbi +33 -54
  231. data/rbi/lib/finch-api/resources/access_tokens.rbi +4 -3
  232. data/rbi/lib/finch-api/resources/account.rbi +6 -4
  233. data/rbi/lib/finch-api/resources/connect/sessions.rbi +17 -8
  234. data/rbi/lib/finch-api/resources/connect.rbi +3 -4
  235. data/rbi/lib/finch-api/resources/hris/benefits/individuals.rbi +33 -10
  236. data/rbi/lib/finch-api/resources/hris/benefits.rbi +32 -13
  237. data/rbi/lib/finch-api/resources/hris/company.rbi +4 -3
  238. data/rbi/lib/finch-api/resources/hris/directory.rbi +11 -15
  239. data/rbi/lib/finch-api/resources/hris/documents.rbi +27 -7
  240. data/rbi/lib/finch-api/resources/hris/employments.rbi +10 -5
  241. data/rbi/lib/finch-api/resources/hris/individuals.rbi +6 -5
  242. data/rbi/lib/finch-api/resources/hris/pay_statements.rbi +13 -5
  243. data/rbi/lib/finch-api/resources/hris/payments.rbi +13 -4
  244. data/rbi/lib/finch-api/resources/hris.rbi +10 -18
  245. data/rbi/lib/finch-api/resources/jobs/automated.rbi +39 -10
  246. data/rbi/lib/finch-api/resources/jobs/manual.rbi +5 -3
  247. data/rbi/lib/finch-api/resources/jobs.rbi +4 -6
  248. data/rbi/lib/finch-api/resources/payroll/pay_groups.rbi +6 -4
  249. data/rbi/lib/finch-api/resources/payroll.rbi +3 -4
  250. data/rbi/lib/finch-api/resources/providers.rbi +4 -3
  251. data/rbi/lib/finch-api/resources/request_forwarding.rbi +27 -4
  252. data/rbi/lib/finch-api/resources/sandbox/company.rbi +19 -7
  253. data/rbi/lib/finch-api/resources/sandbox/connections/accounts.rbi +19 -7
  254. data/rbi/lib/finch-api/resources/sandbox/connections.rbi +10 -6
  255. data/rbi/lib/finch-api/resources/sandbox/directory.rbi +12 -6
  256. data/rbi/lib/finch-api/resources/sandbox/employment.rbi +30 -11
  257. data/rbi/lib/finch-api/resources/sandbox/individual.rbi +26 -8
  258. data/rbi/lib/finch-api/resources/sandbox/jobs/configuration.rbi +9 -7
  259. data/rbi/lib/finch-api/resources/sandbox/jobs.rbi +11 -7
  260. data/rbi/lib/finch-api/resources/sandbox/payment.rbi +5 -4
  261. data/rbi/lib/finch-api/resources/sandbox.rbi +9 -16
  262. data/rbi/lib/finch-api/resources/webhooks.rbi +2 -2
  263. data/rbi/lib/finch-api/responses_page.rbi +4 -17
  264. data/rbi/lib/finch-api/single_page.rbi +4 -12
  265. data/rbi/lib/finch-api/util.rbi +228 -115
  266. data/rbi/lib/finch-api/version.rbi +1 -1
  267. data/sig/finch-api/base_client.rbs +20 -15
  268. data/sig/finch-api/base_model.rbs +36 -18
  269. data/sig/finch-api/base_page.rbs +1 -1
  270. data/sig/finch-api/client.rbs +8 -8
  271. data/sig/finch-api/errors.rbs +21 -21
  272. data/sig/finch-api/individuals_page.rbs +2 -7
  273. data/sig/finch-api/models/access_token_create_params.rbs +7 -12
  274. data/sig/finch-api/models/account_disconnect_params.rbs +1 -6
  275. data/sig/finch-api/models/account_introspect_params.rbs +1 -6
  276. data/sig/finch-api/models/account_update_event.rbs +204 -361
  277. data/sig/finch-api/models/base_webhook_event.rbs +5 -5
  278. data/sig/finch-api/models/company_event.rbs +13 -11
  279. data/sig/finch-api/models/connect/session_new_params.rbs +28 -32
  280. data/sig/finch-api/models/connect/session_new_response.rbs +1 -6
  281. data/sig/finch-api/models/connect/session_reauthenticate_params.rbs +11 -14
  282. data/sig/finch-api/models/connect/session_reauthenticate_response.rbs +1 -6
  283. data/sig/finch-api/models/connection_status_type.rbs +4 -2
  284. data/sig/finch-api/models/create_access_token_response.rbs +20 -21
  285. data/sig/finch-api/models/directory_event.rbs +13 -19
  286. data/sig/finch-api/models/disconnect_response.rbs +1 -5
  287. data/sig/finch-api/models/employment_event.rbs +13 -19
  288. data/sig/finch-api/models/hris/benefit_contribution.rbs +8 -11
  289. data/sig/finch-api/models/hris/benefit_create_params.rbs +6 -11
  290. data/sig/finch-api/models/hris/benefit_features_and_operations.rbs +25 -29
  291. data/sig/finch-api/models/hris/benefit_frequency.rbs +4 -2
  292. data/sig/finch-api/models/hris/benefit_list_params.rbs +1 -6
  293. data/sig/finch-api/models/hris/benefit_list_supported_benefits_params.rbs +1 -6
  294. data/sig/finch-api/models/hris/benefit_retrieve_params.rbs +1 -6
  295. data/sig/finch-api/models/hris/benefit_type.rbs +4 -2
  296. data/sig/finch-api/models/hris/benefit_update_params.rbs +4 -6
  297. data/sig/finch-api/models/hris/benefits/enrolled_individual.rbs +14 -18
  298. data/sig/finch-api/models/hris/benefits/individual_benefit.rbs +16 -25
  299. data/sig/finch-api/models/hris/benefits/individual_enroll_many_params.rbs +35 -54
  300. data/sig/finch-api/models/hris/benefits/individual_enrolled_ids_params.rbs +1 -6
  301. data/sig/finch-api/models/hris/benefits/individual_enrolled_ids_response.rbs +4 -6
  302. data/sig/finch-api/models/hris/benefits/individual_retrieve_many_benefits_params.rbs +4 -9
  303. data/sig/finch-api/models/hris/benefits/individual_unenroll_many_params.rbs +4 -9
  304. data/sig/finch-api/models/hris/benefits/unenrolled_individual.rbs +10 -16
  305. data/sig/finch-api/models/hris/benefits_support.rbs +14 -18
  306. data/sig/finch-api/models/hris/benfit_contribution.rbs +0 -1
  307. data/sig/finch-api/models/hris/company.rbs +39 -57
  308. data/sig/finch-api/models/hris/company_benefit.rbs +6 -10
  309. data/sig/finch-api/models/hris/company_retrieve_params.rbs +1 -6
  310. data/sig/finch-api/models/hris/create_company_benefits_response.rbs +1 -6
  311. data/sig/finch-api/models/hris/directory_list_individuals_params.rbs +5 -10
  312. data/sig/finch-api/models/hris/directory_list_params.rbs +5 -10
  313. data/sig/finch-api/models/hris/document_list_params.rbs +11 -14
  314. data/sig/finch-api/models/hris/document_list_response.rbs +4 -9
  315. data/sig/finch-api/models/hris/document_response.rbs +11 -14
  316. data/sig/finch-api/models/hris/document_retreive_params.rbs +1 -6
  317. data/sig/finch-api/models/hris/document_retreive_response.rbs +4 -2
  318. data/sig/finch-api/models/hris/employment_data.rbs +41 -59
  319. data/sig/finch-api/models/hris/employment_data_response.rbs +5 -10
  320. data/sig/finch-api/models/hris/employment_retrieve_many_params.rbs +5 -15
  321. data/sig/finch-api/models/hris/individual.rbs +39 -45
  322. data/sig/finch-api/models/hris/individual_in_directory.rbs +11 -26
  323. data/sig/finch-api/models/hris/individual_response.rbs +5 -10
  324. data/sig/finch-api/models/hris/individual_retrieve_many_params.rbs +7 -22
  325. data/sig/finch-api/models/hris/pay_statement.rbs +75 -131
  326. data/sig/finch-api/models/hris/pay_statement_response.rbs +5 -10
  327. data/sig/finch-api/models/hris/pay_statement_response_body.rbs +4 -9
  328. data/sig/finch-api/models/hris/pay_statement_retrieve_many_params.rbs +9 -15
  329. data/sig/finch-api/models/hris/payment.rbs +19 -26
  330. data/sig/finch-api/models/hris/payment_list_params.rbs +5 -10
  331. data/sig/finch-api/models/hris/support_per_benefit_type.rbs +4 -9
  332. data/sig/finch-api/models/hris/supported_benefit.rbs +22 -21
  333. data/sig/finch-api/models/hris/update_company_benefit_response.rbs +1 -6
  334. data/sig/finch-api/models/hris/w42005.rbs +26 -30
  335. data/sig/finch-api/models/hris/w42020.rbs +23 -25
  336. data/sig/finch-api/models/income.rbs +10 -10
  337. data/sig/finch-api/models/individual_event.rbs +13 -19
  338. data/sig/finch-api/models/introspection.rbs +43 -54
  339. data/sig/finch-api/models/job_completion_event.rbs +13 -20
  340. data/sig/finch-api/models/jobs/automated_async_job.rbs +20 -26
  341. data/sig/finch-api/models/jobs/automated_create_params.rbs +10 -18
  342. data/sig/finch-api/models/jobs/automated_create_response.rbs +6 -11
  343. data/sig/finch-api/models/jobs/automated_list_params.rbs +5 -10
  344. data/sig/finch-api/models/jobs/automated_list_response.rbs +82 -0
  345. data/sig/finch-api/models/jobs/automated_retrieve_params.rbs +1 -6
  346. data/sig/finch-api/models/jobs/manual_async_job.rbs +9 -11
  347. data/sig/finch-api/models/jobs/manual_retrieve_params.rbs +1 -6
  348. data/sig/finch-api/models/location.rbs +10 -12
  349. data/sig/finch-api/models/money.rbs +1 -3
  350. data/sig/finch-api/models/operation_support.rbs +4 -2
  351. data/sig/finch-api/models/operation_support_matrix.rbs +6 -10
  352. data/sig/finch-api/models/paging.rbs +1 -3
  353. data/sig/finch-api/models/pay_statement_event.rbs +13 -20
  354. data/sig/finch-api/models/payment_event.rbs +13 -17
  355. data/sig/finch-api/models/payroll/pay_group_list_params.rbs +5 -10
  356. data/sig/finch-api/models/payroll/pay_group_list_response.rbs +9 -12
  357. data/sig/finch-api/models/payroll/pay_group_retrieve_params.rbs +1 -6
  358. data/sig/finch-api/models/payroll/pay_group_retrieve_response.rbs +10 -13
  359. data/sig/finch-api/models/provider.rbs +200 -347
  360. data/sig/finch-api/models/provider_list_params.rbs +1 -5
  361. data/sig/finch-api/models/request_forwarding_forward_params.rbs +8 -13
  362. data/sig/finch-api/models/request_forwarding_forward_response.rbs +13 -23
  363. data/sig/finch-api/models/sandbox/company_update_params.rbs +39 -58
  364. data/sig/finch-api/models/sandbox/company_update_response.rbs +38 -57
  365. data/sig/finch-api/models/sandbox/connection_create_params.rbs +11 -14
  366. data/sig/finch-api/models/sandbox/connection_create_response.rbs +14 -17
  367. data/sig/finch-api/models/sandbox/connections/account_create_params.rbs +11 -14
  368. data/sig/finch-api/models/sandbox/connections/account_create_response.rbs +13 -16
  369. data/sig/finch-api/models/sandbox/connections/account_update_params.rbs +4 -9
  370. data/sig/finch-api/models/sandbox/connections/account_update_response.rbs +12 -15
  371. data/sig/finch-api/models/sandbox/directory_create_params.rbs +76 -102
  372. data/sig/finch-api/models/sandbox/employment_update_params.rbs +40 -59
  373. data/sig/finch-api/models/sandbox/employment_update_response.rbs +40 -59
  374. data/sig/finch-api/models/sandbox/individual_update_params.rbs +39 -46
  375. data/sig/finch-api/models/sandbox/individual_update_response.rbs +39 -46
  376. data/sig/finch-api/models/sandbox/job_create_params.rbs +8 -11
  377. data/sig/finch-api/models/sandbox/job_create_response.rbs +6 -11
  378. data/sig/finch-api/models/sandbox/jobs/configuration_retrieve_params.rbs +1 -6
  379. data/sig/finch-api/models/sandbox/jobs/configuration_update_params.rbs +1 -6
  380. data/sig/finch-api/models/sandbox/jobs/sandbox_job_configuration.rbs +12 -13
  381. data/sig/finch-api/models/sandbox/payment_create_params.rbs +81 -143
  382. data/sig/finch-api/models/sandbox/payment_create_response.rbs +1 -6
  383. data/sig/finch-api/models/webhook_event.rbs +5 -3
  384. data/sig/finch-api/page.rbs +2 -7
  385. data/sig/finch-api/pooled_net_requester.rbs +13 -4
  386. data/sig/finch-api/request_options.rbs +6 -2
  387. data/sig/finch-api/resources/access_tokens.rbs +7 -11
  388. data/sig/finch-api/resources/account.rbs +6 -16
  389. data/sig/finch-api/resources/connect/sessions.rbs +19 -29
  390. data/sig/finch-api/resources/hris/benefits/individuals.rbs +19 -43
  391. data/sig/finch-api/resources/hris/benefits.rbs +21 -48
  392. data/sig/finch-api/resources/hris/company.rbs +3 -8
  393. data/sig/finch-api/resources/hris/directory.rbs +6 -20
  394. data/sig/finch-api/resources/hris/documents.rbs +11 -22
  395. data/sig/finch-api/resources/hris/employments.rbs +4 -9
  396. data/sig/finch-api/resources/hris/individuals.rbs +5 -10
  397. data/sig/finch-api/resources/hris/pay_statements.rbs +4 -9
  398. data/sig/finch-api/resources/hris/payments.rbs +5 -10
  399. data/sig/finch-api/resources/jobs/automated.rbs +14 -30
  400. data/sig/finch-api/resources/jobs/manual.rbs +4 -10
  401. data/sig/finch-api/resources/payroll/pay_groups.rbs +9 -20
  402. data/sig/finch-api/resources/providers.rbs +3 -7
  403. data/sig/finch-api/resources/request_forwarding.rbs +8 -13
  404. data/sig/finch-api/resources/sandbox/company.rbs +11 -16
  405. data/sig/finch-api/resources/sandbox/connections/accounts.rbs +11 -21
  406. data/sig/finch-api/resources/sandbox/connections.rbs +7 -12
  407. data/sig/finch-api/resources/sandbox/directory.rbs +4 -9
  408. data/sig/finch-api/resources/sandbox/employment.rbs +22 -28
  409. data/sig/finch-api/resources/sandbox/individual.rbs +16 -22
  410. data/sig/finch-api/resources/sandbox/jobs/configuration.rbs +8 -18
  411. data/sig/finch-api/resources/sandbox/jobs.rbs +4 -9
  412. data/sig/finch-api/resources/sandbox/payment.rbs +6 -11
  413. data/sig/finch-api/responses_page.rbs +2 -7
  414. data/sig/finch-api/single_page.rbs +2 -7
  415. data/sig/finch-api/util.rbs +37 -12
  416. data/sig/finch-api/version.rbs +1 -1
  417. metadata +7 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 260e53c135137f098cf627393777300544df0b1dfd30489389af1b5703ce2acd
4
- data.tar.gz: 219d07fcc8c72e40aea5bdcc41e3de9eefae11f4dad02c7fa269d55df370276f
3
+ metadata.gz: '0370233596fffe27112b67ca1690b835ad255607fa5cbe9916e93e6e2b866102'
4
+ data.tar.gz: abd43b5d6d449169a59044c49cd32a405953da7320c1028d8cc40b39f66c16f1
5
5
  SHA512:
6
- metadata.gz: 3b4f44ef66f40d2dea1c354c256983ed4749aad16e978cacfee6513cccf895fa0ca8fb9bbb3455ca75c85820772cc92caca029f6578b522d941d742932dd8f32
7
- data.tar.gz: 342f5568ee0508357aeef589fc05eba8f06b119b3935ef6b4c83a04c16cb686085feacbd8f6083d785e39de6dfb121dcb2d8c6107744e8f828b855100357ca39
6
+ metadata.gz: 2dad341274fdce9f06659285a16f30fbda6152928fcb9479323364a7f10b43ef53d1f9a0180c1e022d8c240dae07c3dda0eb4578483fdb8a4eaa169994a6b8cf
7
+ data.tar.gz: bde034ab00e4331713dc8f60048df9e58fa90e7eb97b784902b0e765bbf5331daf46ca880f459ce640838f1f09f6ac4bff3025571b17f237573c846be94c710e
data/README.md CHANGED
@@ -1,20 +1,18 @@
1
1
  # Finch Ruby API library
2
2
 
3
- The Finch Ruby library provides convenient access to the Finch REST API from any Ruby 3.0.0+
4
- application.
3
+ The Finch Ruby library provides convenient access to the Finch REST API from any Ruby 3.0.0+ application.
5
4
 
6
5
  It is generated with [Stainless](https://www.stainless.com/).
7
6
 
8
7
  ## Documentation
9
8
 
10
- Documentation for the most recent release of this gem can be found [on RubyDoc](https://gemdocs.org/gems/finch-api/latest).
9
+ Documentation for released of this gem can be found [on RubyDoc](https://gemdocs.org/gems/finch-api).
11
10
 
12
11
  The underlying REST API documentation can be found on [developer.tryfinch.com](https://developer.tryfinch.com/).
13
12
 
14
13
  ## Installation
15
14
 
16
- To use this gem during the beta, install directly from GitHub with Bundler by
17
- adding the following to your application's `Gemfile`:
15
+ To use this gem during the beta, install directly from GitHub with Bundler by adding the following to your application's `Gemfile`:
18
16
 
19
17
  ```ruby
20
18
  gem "finch-api", git: "https://github.com/Finch-API/finch-api-ruby", branch: "main"
@@ -26,8 +24,7 @@ To fetch an initial copy of the gem:
26
24
  bundle install
27
25
  ```
28
26
 
29
- To update the version used by your application when updates are pushed to
30
- GitHub:
27
+ To update the version used by your application when updates are pushed to GitHub:
31
28
 
32
29
  ```sh
33
30
  bundle update finch-api
@@ -46,11 +43,28 @@ page = finch.hris.directory.list
46
43
  puts(page.id)
47
44
  ```
48
45
 
46
+ ### Pagination
47
+
48
+ List methods in the Finch API are paginated.
49
+
50
+ This library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:
51
+
52
+ ```ruby
53
+ page = finch.hris.directory.list
54
+
55
+ # Fetch single item from page.
56
+ directory = page.individuals[0]
57
+ puts(directory.id)
58
+
59
+ # Automatically fetches more pages as needed.
60
+ page.auto_paging_each do |directory|
61
+ puts(directory.id)
62
+ end
63
+ ```
64
+
49
65
  ### Errors
50
66
 
51
- When the library is unable to connect to the API, or if the API returns a
52
- non-success status code (i.e., 4xx or 5xx response), a subclass of
53
- `FinchAPI::Error` will be thrown:
67
+ 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 `FinchAPI::Error` will be thrown:
54
68
 
55
69
  ```ruby
56
70
  begin
@@ -78,10 +92,9 @@ Error codes are as followed:
78
92
 
79
93
  ### Retries
80
94
 
81
- Certain errors will be automatically retried 2 times by default, with a short
82
- exponential backoff. Connection errors (for example, due to a network
83
- connectivity problem), 408 Request Timeout, 409 Conflict, 429 Rate Limit, >=500 Internal errors,
84
- and timeouts will all be retried by default.
95
+ Certain errors will be automatically retried 2 times by default, with a short exponential backoff.
96
+
97
+ Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict, 429 Rate Limit, >=500 Internal errors, and timeouts will all be retried by default.
85
98
 
86
99
  You can use the `max_retries` option to configure or disable this:
87
100
 
@@ -98,8 +111,8 @@ finch.hris.directory.list(request_options: {max_retries: 5})
98
111
  ### Timeouts
99
112
 
100
113
  By default, requests will time out after 60 seconds.
101
- Timeouts are applied separately to the initial connection and the overall request time,
102
- so in some cases a request could wait 2\*timeout seconds before it fails.
114
+
115
+ 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.
103
116
 
104
117
  You can use the `timeout` option to configure or disable this:
105
118
 
@@ -113,12 +126,42 @@ finch = FinchAPI::Client.new(
113
126
  finch.hris.directory.list(request_options: {timeout: 5})
114
127
  ```
115
128
 
129
+ ## Sorbet Support
130
+
131
+ **This library emits an intentional warning under the [`tapioca` toolchain](https://github.com/Shopify/tapioca)**. This is normal, and does not impact functionality.
132
+
133
+ This library is written with [Sorbet type definitions](https://sorbet.org/docs/rbi). However, there is no runtime dependency on the `sorbet-runtime`.
134
+
135
+ 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.
136
+
137
+ Due to limitations with the Sorbet type system, where a method otherwise can take an instance of `FinchAPI::BaseModel` class, you will need to use the `**` splat operator to pass the arguments:
138
+
139
+ Please follow Sorbet's [setup guides](https://sorbet.org/docs/adopting) for best experience.
140
+
141
+ ```ruby
142
+ model = DirectoryListParams.new
143
+
144
+ finch.hris.directory.list(**model)
145
+ ```
146
+
147
+ ## Advanced
148
+
149
+ ### Concurrency & Connection Pooling
150
+
151
+ The `FinchAPI::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.
152
+
153
+ 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.
154
+
155
+ Unless otherwise specified, other classes in the SDK do not have locks protecting their underlying data structure.
156
+
157
+ Currently, `FinchAPI::Client` instances are only fork-safe if there are no in-flight HTTP requests.
158
+
116
159
  ## Versioning
117
160
 
118
- This package follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions. As the
119
- library is in initial development and has a major version of `0`, APIs may change
120
- at any time.
161
+ 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.
162
+
163
+ This package considers improvements to the (non-runtime) `*.rbi` and `*.rbs` type definitions to be non-breaking changes.
121
164
 
122
165
  ## Requirements
123
166
 
124
- Ruby 3.0 or higher.
167
+ Ruby 3.0.0 or higher.
@@ -1,32 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FinchAPI
4
- # @private
4
+ # @api private
5
5
  #
6
6
  # @abstract
7
- #
8
7
  class BaseClient
9
8
  # from whatwg fetch spec
10
9
  MAX_REDIRECTS = 20
11
10
 
12
11
  # rubocop:disable Style/MutableConstant
13
- PLATFORM_HEADERS = {
14
- "x-stainless-arch" => FinchAPI::Util.arch,
15
- "x-stainless-lang" => "ruby",
16
- "x-stainless-os" => FinchAPI::Util.os,
17
- "x-stainless-package-version" => FinchAPI::VERSION,
18
- "x-stainless-runtime" => ::RUBY_ENGINE,
19
- "x-stainless-runtime-version" => ::RUBY_ENGINE_VERSION
20
- }
12
+ PLATFORM_HEADERS =
13
+ {
14
+ "x-stainless-arch" => FinchAPI::Util.arch,
15
+ "x-stainless-lang" => "ruby",
16
+ "x-stainless-os" => FinchAPI::Util.os,
17
+ "x-stainless-package-version" => FinchAPI::VERSION,
18
+ "x-stainless-runtime" => ::RUBY_ENGINE,
19
+ "x-stainless-runtime-version" => ::RUBY_ENGINE_VERSION
20
+ }
21
21
  # rubocop:enable Style/MutableConstant
22
22
 
23
23
  class << self
24
- # @private
24
+ # @api private
25
25
  #
26
26
  # @param req [Hash{Symbol=>Object}]
27
27
  #
28
28
  # @raise [ArgumentError]
29
- #
30
29
  def validate!(req)
31
30
  keys = [:method, :path, :query, :headers, :body, :unwrap, :page, :stream, :model, :options]
32
31
  case req
@@ -41,13 +40,12 @@ module FinchAPI
41
40
  end
42
41
  end
43
42
 
44
- # @private
43
+ # @api private
45
44
  #
46
45
  # @param status [Integer]
47
46
  # @param headers [Hash{String=>String}, Net::HTTPHeader]
48
47
  #
49
48
  # @return [Boolean]
50
- #
51
49
  def should_retry?(status, headers:)
52
50
  coerced = FinchAPI::Util.coerce_boolean(headers["x-should-retry"])
53
51
  case [coerced, status]
@@ -65,7 +63,7 @@ module FinchAPI
65
63
  end
66
64
  end
67
65
 
68
- # @private
66
+ # @api private
69
67
  #
70
68
  # @param request [Hash{Symbol=>Object}] .
71
69
  #
@@ -86,7 +84,6 @@ module FinchAPI
86
84
  # @param response_headers [Hash{String=>String}, Net::HTTPHeader]
87
85
  #
88
86
  # @return [Hash{Symbol=>Object}]
89
- #
90
87
  def follow_redirect(request, status:, response_headers:)
91
88
  method, url, headers = request.fetch_values(:method, :url, :headers)
92
89
  location =
@@ -128,14 +125,27 @@ module FinchAPI
128
125
 
129
126
  request
130
127
  end
128
+
129
+ # @api private
130
+ #
131
+ # @param status [Integer, FinchAPI::APIConnectionError]
132
+ # @param stream [Enumerable, nil]
133
+ def reap_connection!(status, stream:)
134
+ case status
135
+ in (..199) | (300..499)
136
+ stream&.each { next }
137
+ in FinchAPI::APIConnectionError | (500..)
138
+ FinchAPI::Util.close_fused!(stream)
139
+ else
140
+ end
141
+ end
131
142
  end
132
143
 
133
- # @private
134
- #
144
+ # @api private
135
145
  # @return [FinchAPI::PooledNetRequester]
136
146
  attr_accessor :requester
137
147
 
138
- # @private
148
+ # @api private
139
149
  #
140
150
  # @param base_url [String]
141
151
  # @param timeout [Float]
@@ -144,7 +154,6 @@ module FinchAPI
144
154
  # @param max_retry_delay [Float]
145
155
  # @param headers [Hash{String=>String, Integer, Array<String, Integer, nil>, nil}]
146
156
  # @param idempotency_header [String, nil]
147
- #
148
157
  def initialize(
149
158
  base_url:,
150
159
  timeout: 0.0,
@@ -171,19 +180,17 @@ module FinchAPI
171
180
  @max_retry_delay = max_retry_delay
172
181
  end
173
182
 
174
- # @private
183
+ # @api private
175
184
  #
176
185
  # @return [Hash{String=>String}]
177
- #
178
186
  private def auth_headers = {}
179
187
 
180
- # @private
188
+ # @api private
181
189
  #
182
190
  # @return [String]
183
- #
184
191
  private def generate_idempotency_key = "stainless-ruby-retry-#{SecureRandom.uuid}"
185
192
 
186
- # @private
193
+ # @api private
187
194
  #
188
195
  # @param req [Hash{Symbol=>Object}] .
189
196
  #
@@ -213,14 +220,13 @@ module FinchAPI
213
220
  #
214
221
  # @option opts [Hash{String=>String, nil}, nil] :extra_headers
215
222
  #
216
- # @option opts [Hash{Symbol=>Object}, nil] :extra_body
223
+ # @option opts [Object, nil] :extra_body
217
224
  #
218
225
  # @option opts [Integer, nil] :max_retries
219
226
  #
220
227
  # @option opts [Float, nil] :timeout
221
228
  #
222
229
  # @return [Hash{Symbol=>Object}]
223
- #
224
230
  private def build_request(req, opts)
225
231
  method, uninterpolated_path = req.fetch_values(:method, :path)
226
232
 
@@ -246,8 +252,8 @@ module FinchAPI
246
252
  end
247
253
 
248
254
  timeout = opts.fetch(:timeout, @timeout).to_f.clamp((0..))
249
- unless headers.key?("x-stainless-read-timeout") || timeout.zero?
250
- headers["x-stainless-read-timeout"] = timeout.to_s
255
+ unless headers.key?("x-stainless-timeout") || timeout.zero?
256
+ headers["x-stainless-timeout"] = timeout.to_s
251
257
  end
252
258
 
253
259
  headers.reject! { |_, v| v.to_s.empty? }
@@ -271,13 +277,12 @@ module FinchAPI
271
277
  }
272
278
  end
273
279
 
274
- # @private
280
+ # @api private
275
281
  #
276
282
  # @param headers [Hash{String=>String}]
277
283
  # @param retry_count [Integer]
278
284
  #
279
285
  # @return [Float]
280
- #
281
286
  private def retry_delay(headers, retry_count:)
282
287
  # Non-standard extension
283
288
  span = Float(headers["retry-after-ms"], exception: false)&.then { _1 / 1000 }
@@ -298,7 +303,7 @@ module FinchAPI
298
303
  (@initial_retry_delay * scale * jitter).clamp(0, @max_retry_delay)
299
304
  end
300
305
 
301
- # @private
306
+ # @api private
302
307
  #
303
308
  # @param request [Hash{Symbol=>Object}] .
304
309
  #
@@ -322,7 +327,6 @@ module FinchAPI
322
327
  #
323
328
  # @raise [FinchAPI::APIError]
324
329
  # @return [Array(Integer, Net::HTTPResponse, Enumerable)]
325
- #
326
330
  private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
327
331
  url, headers, max_retries, timeout = request.fetch_values(:url, :headers, :max_retries, :timeout)
328
332
  input = {**request.except(:timeout), deadline: FinchAPI::Util.monotonic_secs + timeout}
@@ -332,28 +336,23 @@ module FinchAPI
332
336
  end
333
337
 
334
338
  begin
335
- response, stream = @requester.execute(input)
336
- status = Integer(response.code)
339
+ status, response, stream = @requester.execute(input)
337
340
  rescue FinchAPI::APIConnectionError => e
338
341
  status = e
339
342
  end
340
343
 
341
- # normally we want to drain the response body and reuse the HTTP session by clearing the socket buffers
342
- # unless we hit a server error
343
- srv_fault = (500...).include?(status)
344
-
345
344
  case status
346
345
  in ..299
347
346
  [status, response, stream]
348
347
  in 300..399 if redirect_count >= self.class::MAX_REDIRECTS
349
- message = "Failed to complete the request within #{self.class::MAX_REDIRECTS} redirects."
348
+ self.class.reap_connection!(status, stream: stream)
350
349
 
351
- stream.each { next }
350
+ message = "Failed to complete the request within #{self.class::MAX_REDIRECTS} redirects."
352
351
  raise FinchAPI::APIConnectionError.new(url: url, message: message)
353
352
  in 300..399
354
- request = self.class.follow_redirect(request, status: status, response_headers: response)
353
+ self.class.reap_connection!(status, stream: stream)
355
354
 
356
- stream.each { next }
355
+ request = self.class.follow_redirect(request, status: status, response_headers: response)
357
356
  send_request(
358
357
  request,
359
358
  redirect_count: redirect_count + 1,
@@ -363,12 +362,10 @@ module FinchAPI
363
362
  in FinchAPI::APIConnectionError if retry_count >= max_retries
364
363
  raise status
365
364
  in (400..) if retry_count >= max_retries || !self.class.should_retry?(status, headers: response)
366
- decoded = FinchAPI::Util.decode_content(response, stream: stream, suppress_error: true)
367
-
368
- if srv_fault
369
- FinchAPI::Util.close_fused!(stream)
370
- else
371
- stream.each { next }
365
+ decoded = Kernel.then do
366
+ FinchAPI::Util.decode_content(response, stream: stream, suppress_error: true)
367
+ ensure
368
+ self.class.reap_connection!(status, stream: stream)
372
369
  end
373
370
 
374
371
  raise FinchAPI::APIStatusError.for(
@@ -379,13 +376,9 @@ module FinchAPI
379
376
  response: response
380
377
  )
381
378
  in (400..) | FinchAPI::APIConnectionError
382
- delay = retry_delay(response, retry_count: retry_count)
379
+ self.class.reap_connection!(status, stream: stream)
383
380
 
384
- if srv_fault
385
- FinchAPI::Util.close_fused!(stream)
386
- else
387
- stream&.each { next }
388
- end
381
+ delay = retry_delay(response, retry_count: retry_count)
389
382
  sleep(delay)
390
383
 
391
384
  send_request(
@@ -424,7 +417,6 @@ module FinchAPI
424
417
  #
425
418
  # @raise [FinchAPI::APIError]
426
419
  # @return [Object]
427
- #
428
420
  def request(req)
429
421
  self.class.validate!(req)
430
422
  model = req.fetch(:model) { FinchAPI::Unknown }
@@ -445,9 +437,9 @@ module FinchAPI
445
437
  decoded = FinchAPI::Util.decode_content(response, stream: stream)
446
438
  case req
447
439
  in { stream: Class => st }
448
- st.new(model: model, url: url, status: status, response: response, messages: decoded)
440
+ st.new(model: model, url: url, status: status, response: response, stream: decoded)
449
441
  in { page: Class => page }
450
- page.new(client: self, req: req, headers: response, unwrapped: decoded)
442
+ page.new(client: self, req: req, headers: response, page_data: decoded)
451
443
  else
452
444
  unwrapped = FinchAPI::Util.dig(decoded, req[:unwrap])
453
445
  FinchAPI::Converter.coerce(model, unwrapped)
@@ -455,10 +447,11 @@ module FinchAPI
455
447
  end
456
448
 
457
449
  # @return [String]
458
- #
459
450
  def inspect
451
+ # rubocop:disable Layout/LineLength
460
452
  base_url = FinchAPI::Util.unparse_uri(@base_url)
461
453
  "#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
454
+ # rubocop:enable Layout/LineLength
462
455
  end
463
456
  end
464
457
  end