vitable-connect 0.5.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +16 -0
  3. data/.fernignore +7 -0
  4. data/.rubocop.yml +110 -0
  5. data/CONTRIBUTING.md +120 -0
  6. data/LICENSE +201 -0
  7. data/README.md +170 -123
  8. data/Rakefile +20 -0
  9. data/custom.gemspec.rb +16 -0
  10. data/lib/VitableConnect/auth/client.rb +52 -0
  11. data/lib/VitableConnect/auth/types/issue_access_token_request.rb +13 -0
  12. data/lib/VitableConnect/client.rb +67 -0
  13. data/lib/VitableConnect/employees/client.rb +161 -0
  14. data/lib/VitableConnect/employees/types/get_employees_request.rb +11 -0
  15. data/lib/VitableConnect/employees/types/list_enrollments_employees_request.rb +15 -0
  16. data/lib/VitableConnect/employees/types/patched_update_employee_request.rb +27 -0
  17. data/lib/VitableConnect/employers/client.rb +904 -0
  18. data/lib/VitableConnect/employers/types/census_sync_request.rb +13 -0
  19. data/lib/VitableConnect/employers/types/create_employer_request.rb +23 -0
  20. data/lib/VitableConnect/employers/types/ensure_payroll_integration_email_employers_request.rb +11 -0
  21. data/lib/VitableConnect/employers/types/get_benefit_plan_year_employers_request.rb +13 -0
  22. data/lib/VitableConnect/employers/types/get_employers_request.rb +11 -0
  23. data/lib/VitableConnect/employers/types/get_hris_employers_request.rb +11 -0
  24. data/lib/VitableConnect/employers/types/get_invoice_pdf_employers_request.rb +13 -0
  25. data/lib/VitableConnect/employers/types/get_payroll_access_setup_employers_request.rb +11 -0
  26. data/lib/VitableConnect/employers/types/list_benefit_plan_year_enrollments_employers_request.rb +21 -0
  27. data/lib/VitableConnect/employers/types/list_benefit_plan_years_employers_request.rb +11 -0
  28. data/lib/VitableConnect/employers/types/list_employees_employers_request.rb +19 -0
  29. data/lib/VitableConnect/employers/types/list_employers_request.rb +25 -0
  30. data/lib/VitableConnect/employers/types/list_invoices_employers_request.rb +15 -0
  31. data/lib/VitableConnect/employers/types/list_payroll_deduction_statements_employers_request.rb +15 -0
  32. data/lib/VitableConnect/employers/types/submit_payroll_access_setup_request.rb +57 -0
  33. data/lib/VitableConnect/employers/types/update_employer_request.rb +19 -0
  34. data/lib/VitableConnect/employers/types/update_employer_settings_request.rb +13 -0
  35. data/lib/VitableConnect/enrollments/client.rb +152 -0
  36. data/lib/VitableConnect/enrollments/types/get_enrollments_request.rb +11 -0
  37. data/lib/VitableConnect/enrollments/types/reissue_enrollment_request.rb +17 -0
  38. data/lib/VitableConnect/enrollments/types/terminate_enrollment_request.rb +17 -0
  39. data/lib/VitableConnect/environment.rb +9 -0
  40. data/lib/VitableConnect/errors/api_error.rb +8 -0
  41. data/lib/VitableConnect/errors/client_error.rb +17 -0
  42. data/lib/VitableConnect/errors/redirect_error.rb +8 -0
  43. data/lib/VitableConnect/errors/response_error.rb +42 -0
  44. data/lib/VitableConnect/errors/server_error.rb +11 -0
  45. data/lib/VitableConnect/errors/timeout_error.rb +8 -0
  46. data/lib/VitableConnect/groups/client.rb +199 -0
  47. data/lib/VitableConnect/groups/members/client.rb +21 -0
  48. data/lib/VitableConnect/groups/members/sync/client.rb +122 -0
  49. data/lib/VitableConnect/groups/members/sync/types/get_sync_request.rb +17 -0
  50. data/lib/VitableConnect/groups/members/sync/types/group_member_sync_request.rb +17 -0
  51. data/lib/VitableConnect/groups/types/create_group_request.rb +13 -0
  52. data/lib/VitableConnect/groups/types/get_groups_request.rb +11 -0
  53. data/lib/VitableConnect/groups/types/list_groups_request.rb +13 -0
  54. data/lib/VitableConnect/groups/types/patched_update_group_request.rb +15 -0
  55. data/lib/VitableConnect/internal/errors/constraint_error.rb +10 -0
  56. data/lib/VitableConnect/internal/errors/type_error.rb +10 -0
  57. data/lib/VitableConnect/internal/http/base_request.rb +51 -0
  58. data/lib/VitableConnect/internal/http/raw_client.rb +265 -0
  59. data/lib/VitableConnect/internal/iterators/cursor_item_iterator.rb +28 -0
  60. data/lib/VitableConnect/internal/iterators/cursor_page_iterator.rb +63 -0
  61. data/lib/VitableConnect/internal/iterators/item_iterator.rb +65 -0
  62. data/lib/VitableConnect/internal/iterators/offset_item_iterator.rb +30 -0
  63. data/lib/VitableConnect/internal/iterators/offset_page_iterator.rb +103 -0
  64. data/lib/VitableConnect/internal/json/request.rb +41 -0
  65. data/lib/VitableConnect/internal/json/serializable.rb +25 -0
  66. data/lib/VitableConnect/internal/multipart/multipart_encoder.rb +141 -0
  67. data/lib/VitableConnect/internal/multipart/multipart_form_data.rb +78 -0
  68. data/lib/VitableConnect/internal/multipart/multipart_form_data_part.rb +51 -0
  69. data/lib/VitableConnect/internal/multipart/multipart_request.rb +40 -0
  70. data/lib/VitableConnect/internal/types/array.rb +47 -0
  71. data/lib/VitableConnect/internal/types/boolean.rb +34 -0
  72. data/lib/VitableConnect/internal/types/enum.rb +56 -0
  73. data/lib/VitableConnect/internal/types/hash.rb +36 -0
  74. data/lib/VitableConnect/internal/types/model/field.rb +38 -0
  75. data/lib/VitableConnect/internal/types/model.rb +208 -0
  76. data/lib/VitableConnect/internal/types/type.rb +35 -0
  77. data/lib/VitableConnect/internal/types/union.rb +161 -0
  78. data/lib/VitableConnect/internal/types/unknown.rb +15 -0
  79. data/lib/VitableConnect/internal/types/utils.rb +116 -0
  80. data/lib/VitableConnect/members/client.rb +385 -0
  81. data/lib/VitableConnect/members/types/get_household_members_request.rb +11 -0
  82. data/lib/VitableConnect/members/types/get_members_request.rb +11 -0
  83. data/lib/VitableConnect/members/types/list_dependents_members_request.rb +11 -0
  84. data/lib/VitableConnect/members/types/list_employments_members_request.rb +11 -0
  85. data/lib/VitableConnect/members/types/list_enrollments_members_request.rb +11 -0
  86. data/lib/VitableConnect/members/types/list_id_cards_members_request.rb +11 -0
  87. data/lib/VitableConnect/members/types/list_members_request.rb +15 -0
  88. data/lib/VitableConnect/members/types/list_qualifying_life_events_members_request.rb +17 -0
  89. data/lib/VitableConnect/organizations/client.rb +92 -0
  90. data/lib/VitableConnect/organizations/types/create_organization_request.rb +13 -0
  91. data/lib/VitableConnect/plans/client.rb +69 -0
  92. data/lib/VitableConnect/plans/types/list_plans_request.rb +13 -0
  93. data/lib/VitableConnect/types/access_method.rb +12 -0
  94. data/lib/VitableConnect/types/access_token_response.rb +15 -0
  95. data/lib/VitableConnect/types/additional_access_method.rb +12 -0
  96. data/lib/VitableConnect/types/address.rb +22 -0
  97. data/lib/VitableConnect/types/address_request.rb +17 -0
  98. data/lib/VitableConnect/types/benefit_family.rb +16 -0
  99. data/lib/VitableConnect/types/benefit_family_param_item.rb +16 -0
  100. data/lib/VitableConnect/types/benefit_lifecycle_stage_item.rb +15 -0
  101. data/lib/VitableConnect/types/benefit_plan_network.rb +29 -0
  102. data/lib/VitableConnect/types/benefit_plan_year_detail.rb +52 -0
  103. data/lib/VitableConnect/types/benefit_plan_year_id.rb +23 -0
  104. data/lib/VitableConnect/types/benefit_plan_year_list.rb +47 -0
  105. data/lib/VitableConnect/types/benefit_status.rb +14 -0
  106. data/lib/VitableConnect/types/benefit_summary.rb +15 -0
  107. data/lib/VitableConnect/types/bound_entity.rb +11 -0
  108. data/lib/VitableConnect/types/bound_entity_response.rb +11 -0
  109. data/lib/VitableConnect/types/bound_entity_type.rb +12 -0
  110. data/lib/VitableConnect/types/card_type.rb +14 -0
  111. data/lib/VitableConnect/types/category.rb +14 -0
  112. data/lib/VitableConnect/types/census_sync_detail_response.rb +10 -0
  113. data/lib/VitableConnect/types/census_sync_employee_address_request.rb +17 -0
  114. data/lib/VitableConnect/types/census_sync_employee_request.rb +27 -0
  115. data/lib/VitableConnect/types/census_sync_response.rb +11 -0
  116. data/lib/VitableConnect/types/classification_correction_source.rb +12 -0
  117. data/lib/VitableConnect/types/compensation_type.rb +12 -0
  118. data/lib/VitableConnect/types/contribution_class_compensation.rb +13 -0
  119. data/lib/VitableConnect/types/contribution_class_employment.rb +15 -0
  120. data/lib/VitableConnect/types/contribution_class_location.rb +12 -0
  121. data/lib/VitableConnect/types/contribution_range.rb +11 -0
  122. data/lib/VitableConnect/types/contribution_strategy.rb +13 -0
  123. data/lib/VitableConnect/types/contribution_tier.rb +26 -0
  124. data/lib/VitableConnect/types/coverage_tier.rb +15 -0
  125. data/lib/VitableConnect/types/create_organization_request_type.rb +16 -0
  126. data/lib/VitableConnect/types/created_after.rb +23 -0
  127. data/lib/VitableConnect/types/created_before.rb +23 -0
  128. data/lib/VitableConnect/types/deduction_detail.rb +21 -0
  129. data/lib/VitableConnect/types/deduction_frequency.rb +14 -0
  130. data/lib/VitableConnect/types/digital_benefit_card.rb +36 -0
  131. data/lib/VitableConnect/types/election_status_item.rb +14 -0
  132. data/lib/VitableConnect/types/eligibility_policy.rb +17 -0
  133. data/lib/VitableConnect/types/eligibility_policy_rule.rb +15 -0
  134. data/lib/VitableConnect/types/eligibility_rule_compensation_type.rb +13 -0
  135. data/lib/VitableConnect/types/eligibility_rule_employee_class.rb +17 -0
  136. data/lib/VitableConnect/types/eligible_geographical_location.rb +11 -0
  137. data/lib/VitableConnect/types/eligible_geographical_location_type.rb +12 -0
  138. data/lib/VitableConnect/types/employee.rb +53 -0
  139. data/lib/VitableConnect/types/employee_address.rb +17 -0
  140. data/lib/VitableConnect/types/employee_address_input.rb +19 -0
  141. data/lib/VitableConnect/types/employee_class.rb +16 -0
  142. data/lib/VitableConnect/types/employee_id.rb +23 -0
  143. data/lib/VitableConnect/types/employee_list_response.rb +12 -0
  144. data/lib/VitableConnect/types/employee_response.rb +10 -0
  145. data/lib/VitableConnect/types/employee_search.rb +23 -0
  146. data/lib/VitableConnect/types/employee_status.rb +12 -0
  147. data/lib/VitableConnect/types/employer.rb +34 -0
  148. data/lib/VitableConnect/types/employer_address.rb +18 -0
  149. data/lib/VitableConnect/types/employer_address_input.rb +17 -0
  150. data/lib/VitableConnect/types/employer_benefit_lifecycle_stage.rb +11 -0
  151. data/lib/VitableConnect/types/employer_benefit_plan_year_response.rb +10 -0
  152. data/lib/VitableConnect/types/employer_benefit_plan_years_list_response.rb +9 -0
  153. data/lib/VitableConnect/types/employer_contact.rb +12 -0
  154. data/lib/VitableConnect/types/employer_hris.rb +9 -0
  155. data/lib/VitableConnect/types/employer_hris_response.rb +10 -0
  156. data/lib/VitableConnect/types/employer_hris_status.rb +13 -0
  157. data/lib/VitableConnect/types/employer_id.rb +23 -0
  158. data/lib/VitableConnect/types/employer_invoice_pdf.rb +9 -0
  159. data/lib/VitableConnect/types/employer_invoice_pdf_response.rb +10 -0
  160. data/lib/VitableConnect/types/employer_invoices_list_response.rb +12 -0
  161. data/lib/VitableConnect/types/employer_payroll_deduction_statement_list_response.rb +12 -0
  162. data/lib/VitableConnect/types/employer_response.rb +10 -0
  163. data/lib/VitableConnect/types/employer_search.rb +23 -0
  164. data/lib/VitableConnect/types/employer_settings.rb +9 -0
  165. data/lib/VitableConnect/types/employer_settings_response.rb +10 -0
  166. data/lib/VitableConnect/types/enrollment.rb +34 -0
  167. data/lib/VitableConnect/types/enrollment_detail.rb +39 -0
  168. data/lib/VitableConnect/types/enrollment_id.rb +23 -0
  169. data/lib/VitableConnect/types/enrollment_list_response.rb +12 -0
  170. data/lib/VitableConnect/types/enrollment_rate.rb +13 -0
  171. data/lib/VitableConnect/types/enrollment_rate_summary.rb +13 -0
  172. data/lib/VitableConnect/types/enrollment_response.rb +10 -0
  173. data/lib/VitableConnect/types/enrollment_status.rb +14 -0
  174. data/lib/VitableConnect/types/error_response.rb +17 -0
  175. data/lib/VitableConnect/types/event_id.rb +23 -0
  176. data/lib/VitableConnect/types/event_name.rb +21 -0
  177. data/lib/VitableConnect/types/gender.rb +15 -0
  178. data/lib/VitableConnect/types/grant_type.rb +11 -0
  179. data/lib/VitableConnect/types/group.rb +19 -0
  180. data/lib/VitableConnect/types/group_id.rb +23 -0
  181. data/lib/VitableConnect/types/group_list_response.rb +12 -0
  182. data/lib/VitableConnect/types/group_member_sync_detail_response.rb +10 -0
  183. data/lib/VitableConnect/types/group_member_sync_failure.rb +13 -0
  184. data/lib/VitableConnect/types/group_member_sync_member_request.rb +23 -0
  185. data/lib/VitableConnect/types/group_member_sync_request_detail.rb +17 -0
  186. data/lib/VitableConnect/types/group_member_sync_request_detail_response.rb +10 -0
  187. data/lib/VitableConnect/types/group_member_sync_response.rb +13 -0
  188. data/lib/VitableConnect/types/group_member_sync_results.rb +13 -0
  189. data/lib/VitableConnect/types/group_response.rb +10 -0
  190. data/lib/VitableConnect/types/household_member.rb +22 -0
  191. data/lib/VitableConnect/types/household_member_relationship.rb +14 -0
  192. data/lib/VitableConnect/types/household_member_type.rb +13 -0
  193. data/lib/VitableConnect/types/household_members_response.rb +10 -0
  194. data/lib/VitableConnect/types/hris_connection.rb +17 -0
  195. data/lib/VitableConnect/types/hris_status_item.rb +15 -0
  196. data/lib/VitableConnect/types/ichra_contribution_class.rb +29 -0
  197. data/lib/VitableConnect/types/idp_provider.rb +12 -0
  198. data/lib/VitableConnect/types/include_cancelled.rb +23 -0
  199. data/lib/VitableConnect/types/invoice.rb +15 -0
  200. data/lib/VitableConnect/types/invoice_id.rb +23 -0
  201. data/lib/VitableConnect/types/invoices_cursor_pagination.rb +9 -0
  202. data/lib/VitableConnect/types/limit.rb +23 -0
  203. data/lib/VitableConnect/types/list_webhook_event_deliveries_response.rb +9 -0
  204. data/lib/VitableConnect/types/marital_status.rb +12 -0
  205. data/lib/VitableConnect/types/member.rb +42 -0
  206. data/lib/VitableConnect/types/member_address.rb +17 -0
  207. data/lib/VitableConnect/types/member_dependents_response.rb +10 -0
  208. data/lib/VitableConnect/types/member_digital_benefit_cards_response.rb +10 -0
  209. data/lib/VitableConnect/types/member_employments_response.rb +10 -0
  210. data/lib/VitableConnect/types/member_enrollment.rb +58 -0
  211. data/lib/VitableConnect/types/member_enrollments_response.rb +10 -0
  212. data/lib/VitableConnect/types/member_id.rb +23 -0
  213. data/lib/VitableConnect/types/member_legal_dependent.rb +24 -0
  214. data/lib/VitableConnect/types/member_list_item.rb +20 -0
  215. data/lib/VitableConnect/types/member_list_response.rb +12 -0
  216. data/lib/VitableConnect/types/member_qualifying_life_event.rb +19 -0
  217. data/lib/VitableConnect/types/member_qualifying_life_event_list_response.rb +12 -0
  218. data/lib/VitableConnect/types/member_response.rb +10 -0
  219. data/lib/VitableConnect/types/member_search.rb +23 -0
  220. data/lib/VitableConnect/types/member_status.rb +12 -0
  221. data/lib/VitableConnect/types/missing_employee_resolution.rb +12 -0
  222. data/lib/VitableConnect/types/name_suffix.rb +17 -0
  223. data/lib/VitableConnect/types/offset.rb +23 -0
  224. data/lib/VitableConnect/types/operation.rb +12 -0
  225. data/lib/VitableConnect/types/organization.rb +19 -0
  226. data/lib/VitableConnect/types/organization_employer.rb +44 -0
  227. data/lib/VitableConnect/types/organization_employer_list_response.rb +12 -0
  228. data/lib/VitableConnect/types/organization_hris_provider.rb +11 -0
  229. data/lib/VitableConnect/types/organization_hris_providers_response.rb +10 -0
  230. data/lib/VitableConnect/types/organization_type.rb +16 -0
  231. data/lib/VitableConnect/types/organizations_list_response.rb +12 -0
  232. data/lib/VitableConnect/types/page.rb +23 -0
  233. data/lib/VitableConnect/types/pagination.rb +16 -0
  234. data/lib/VitableConnect/types/payroll_access_setup_status.rb +11 -0
  235. data/lib/VitableConnect/types/payroll_access_setup_status_response.rb +10 -0
  236. data/lib/VitableConnect/types/payroll_deduction_statement.rb +29 -0
  237. data/lib/VitableConnect/types/payroll_integration_email.rb +9 -0
  238. data/lib/VitableConnect/types/payroll_integration_email_response.rb +10 -0
  239. data/lib/VitableConnect/types/plan.rb +11 -0
  240. data/lib/VitableConnect/types/plan_list_response.rb +12 -0
  241. data/lib/VitableConnect/types/plan_year_enrollment.rb +35 -0
  242. data/lib/VitableConnect/types/plan_year_enrollment_election_status.rb +14 -0
  243. data/lib/VitableConnect/types/plan_year_enrollment_list_response.rb +12 -0
  244. data/lib/VitableConnect/types/plan_year_enrollment_policy_status.rb +14 -0
  245. data/lib/VitableConnect/types/preferred_language.rb +16 -0
  246. data/lib/VitableConnect/types/product_code.rb +25 -0
  247. data/lib/VitableConnect/types/qualifying_life_event_status.rb +13 -0
  248. data/lib/VitableConnect/types/qualifying_life_event_type.rb +31 -0
  249. data/lib/VitableConnect/types/reissue_enrollment.rb +9 -0
  250. data/lib/VitableConnect/types/reissue_enrollment_response.rb +10 -0
  251. data/lib/VitableConnect/types/relationship.rb +12 -0
  252. data/lib/VitableConnect/types/remaining_employee_action.rb +12 -0
  253. data/lib/VitableConnect/types/request_id.rb +23 -0
  254. data/lib/VitableConnect/types/resource_id.rb +23 -0
  255. data/lib/VitableConnect/types/resource_type.rb +16 -0
  256. data/lib/VitableConnect/types/search.rb +23 -0
  257. data/lib/VitableConnect/types/sex_at_birth.rb +14 -0
  258. data/lib/VitableConnect/types/state.rb +72 -0
  259. data/lib/VitableConnect/types/status.rb +13 -0
  260. data/lib/VitableConnect/types/tax_classification.rb +13 -0
  261. data/lib/VitableConnect/types/termination_rule.rb +12 -0
  262. data/lib/VitableConnect/types/update_employer_address_input.rb +17 -0
  263. data/lib/VitableConnect/types/waiting_period.rb +13 -0
  264. data/lib/VitableConnect/types/webhook_delivery.rb +25 -0
  265. data/lib/VitableConnect/types/webhook_event.rb +19 -0
  266. data/lib/VitableConnect/types/webhook_event_list_response.rb +12 -0
  267. data/lib/VitableConnect/types/webhook_event_response.rb +10 -0
  268. data/lib/{vitable_connect → VitableConnect}/version.rb +1 -1
  269. data/lib/VitableConnect/webhook_events/client.rb +156 -0
  270. data/lib/VitableConnect/webhook_events/types/get_webhook_events_request.rb +11 -0
  271. data/lib/VitableConnect/webhook_events/types/list_deliveries_webhook_events_request.rb +11 -0
  272. data/lib/VitableConnect/webhook_events/types/list_webhook_events_request.rb +23 -0
  273. data/lib/VitableConnect.rb +268 -0
  274. data/lib/vitable_connect.rb +4 -105
  275. data/reference.md +3722 -0
  276. metadata +286 -266
  277. data/.ignore +0 -2
  278. data/CHANGELOG.md +0 -133
  279. data/lib/vitable_connect/client.rb +0 -139
  280. data/lib/vitable_connect/errors.rb +0 -228
  281. data/lib/vitable_connect/file_part.rb +0 -58
  282. data/lib/vitable_connect/internal/page_number_page.rb +0 -113
  283. data/lib/vitable_connect/internal/transport/base_client.rb +0 -582
  284. data/lib/vitable_connect/internal/transport/pooled_net_requester.rb +0 -210
  285. data/lib/vitable_connect/internal/type/array_of.rb +0 -168
  286. data/lib/vitable_connect/internal/type/base_model.rb +0 -534
  287. data/lib/vitable_connect/internal/type/base_page.rb +0 -55
  288. data/lib/vitable_connect/internal/type/boolean.rb +0 -77
  289. data/lib/vitable_connect/internal/type/converter.rb +0 -327
  290. data/lib/vitable_connect/internal/type/enum.rb +0 -152
  291. data/lib/vitable_connect/internal/type/file_input.rb +0 -111
  292. data/lib/vitable_connect/internal/type/hash_of.rb +0 -188
  293. data/lib/vitable_connect/internal/type/request_parameters.rb +0 -42
  294. data/lib/vitable_connect/internal/type/union.rb +0 -245
  295. data/lib/vitable_connect/internal/type/unknown.rb +0 -81
  296. data/lib/vitable_connect/internal/util.rb +0 -966
  297. data/lib/vitable_connect/internal.rb +0 -20
  298. data/lib/vitable_connect/models/auth_issue_access_token_params.rb +0 -68
  299. data/lib/vitable_connect/models/auth_issue_access_token_response.rb +0 -70
  300. data/lib/vitable_connect/models/employee.rb +0 -310
  301. data/lib/vitable_connect/models/employee_class.rb +0 -25
  302. data/lib/vitable_connect/models/employee_list_enrollments_params.rb +0 -38
  303. data/lib/vitable_connect/models/employee_retrieve_params.rb +0 -22
  304. data/lib/vitable_connect/models/employee_retrieve_response.rb +0 -18
  305. data/lib/vitable_connect/models/employer.rb +0 -155
  306. data/lib/vitable_connect/models/employer_create_params.rb +0 -115
  307. data/lib/vitable_connect/models/employer_list_employees_params.rb +0 -38
  308. data/lib/vitable_connect/models/employer_list_params.rb +0 -30
  309. data/lib/vitable_connect/models/employer_response.rb +0 -19
  310. data/lib/vitable_connect/models/employer_retrieve_params.rb +0 -22
  311. data/lib/vitable_connect/models/employer_submit_census_sync_params.rb +0 -374
  312. data/lib/vitable_connect/models/employer_submit_census_sync_response.rb +0 -35
  313. data/lib/vitable_connect/models/employer_update_settings_params.rb +0 -52
  314. data/lib/vitable_connect/models/employer_update_settings_response.rb +0 -56
  315. data/lib/vitable_connect/models/enrollment.rb +0 -234
  316. data/lib/vitable_connect/models/enrollment_retrieve_params.rb +0 -22
  317. data/lib/vitable_connect/models/enrollment_retrieve_response.rb +0 -18
  318. data/lib/vitable_connect/models/enrollment_status.rb +0 -21
  319. data/lib/vitable_connect/models/group.rb +0 -57
  320. data/lib/vitable_connect/models/group_create_params.rb +0 -26
  321. data/lib/vitable_connect/models/group_list_params.rb +0 -30
  322. data/lib/vitable_connect/models/group_response.rb +0 -18
  323. data/lib/vitable_connect/models/group_retrieve_params.rb +0 -22
  324. data/lib/vitable_connect/models/group_update_params.rb +0 -36
  325. data/lib/vitable_connect/models/groups/members/sync_retrieve_params.rb +0 -33
  326. data/lib/vitable_connect/models/groups/members/sync_retrieve_response.rb +0 -128
  327. data/lib/vitable_connect/models/groups/members/sync_submit_params.rb +0 -121
  328. data/lib/vitable_connect/models/groups/members/sync_submit_response.rb +0 -45
  329. data/lib/vitable_connect/models/pagination.rb +0 -42
  330. data/lib/vitable_connect/models/plan_list_params.rb +0 -30
  331. data/lib/vitable_connect/models/plan_list_response.rb +0 -22
  332. data/lib/vitable_connect/models/type.rb +0 -17
  333. data/lib/vitable_connect/models/webhook_event.rb +0 -62
  334. data/lib/vitable_connect/models/webhook_event_list_deliveries_params.rb +0 -20
  335. data/lib/vitable_connect/models/webhook_event_list_deliveries_response.rb +0 -92
  336. data/lib/vitable_connect/models/webhook_event_list_params.rb +0 -132
  337. data/lib/vitable_connect/models/webhook_event_retrieve_params.rb +0 -20
  338. data/lib/vitable_connect/models/webhook_event_retrieve_response.rb +0 -18
  339. data/lib/vitable_connect/models.rb +0 -104
  340. data/lib/vitable_connect/request_options.rb +0 -78
  341. data/lib/vitable_connect/resources/auth.rb +0 -41
  342. data/lib/vitable_connect/resources/benefit_eligibility_policies.rb +0 -14
  343. data/lib/vitable_connect/resources/employees.rb +0 -65
  344. data/lib/vitable_connect/resources/employers.rb +0 -184
  345. data/lib/vitable_connect/resources/enrollments.rb +0 -35
  346. data/lib/vitable_connect/resources/groups/members/sync.rb +0 -74
  347. data/lib/vitable_connect/resources/groups/members.rb +0 -20
  348. data/lib/vitable_connect/resources/groups.rb +0 -114
  349. data/lib/vitable_connect/resources/plans.rb +0 -41
  350. data/lib/vitable_connect/resources/webhook_events.rb +0 -95
  351. data/manifest.yaml +0 -17
  352. data/rbi/vitable_connect/client.rbi +0 -93
  353. data/rbi/vitable_connect/errors.rbi +0 -205
  354. data/rbi/vitable_connect/file_part.rbi +0 -37
  355. data/rbi/vitable_connect/internal/page_number_page.rbi +0 -49
  356. data/rbi/vitable_connect/internal/transport/base_client.rbi +0 -307
  357. data/rbi/vitable_connect/internal/transport/pooled_net_requester.rbi +0 -84
  358. data/rbi/vitable_connect/internal/type/array_of.rbi +0 -108
  359. data/rbi/vitable_connect/internal/type/base_model.rbi +0 -314
  360. data/rbi/vitable_connect/internal/type/base_page.rbi +0 -43
  361. data/rbi/vitable_connect/internal/type/boolean.rbi +0 -58
  362. data/rbi/vitable_connect/internal/type/converter.rbi +0 -225
  363. data/rbi/vitable_connect/internal/type/enum.rbi +0 -82
  364. data/rbi/vitable_connect/internal/type/file_input.rbi +0 -59
  365. data/rbi/vitable_connect/internal/type/hash_of.rbi +0 -108
  366. data/rbi/vitable_connect/internal/type/request_parameters.rbi +0 -31
  367. data/rbi/vitable_connect/internal/type/union.rbi +0 -130
  368. data/rbi/vitable_connect/internal/type/unknown.rbi +0 -58
  369. data/rbi/vitable_connect/internal/util.rbi +0 -515
  370. data/rbi/vitable_connect/internal.rbi +0 -18
  371. data/rbi/vitable_connect/models/auth_issue_access_token_params.rbi +0 -147
  372. data/rbi/vitable_connect/models/auth_issue_access_token_response.rbi +0 -128
  373. data/rbi/vitable_connect/models/employee.rbi +0 -450
  374. data/rbi/vitable_connect/models/employee_class.rbi +0 -38
  375. data/rbi/vitable_connect/models/employee_list_enrollments_params.rbi +0 -68
  376. data/rbi/vitable_connect/models/employee_retrieve_params.rbi +0 -46
  377. data/rbi/vitable_connect/models/employee_retrieve_response.rbi +0 -32
  378. data/rbi/vitable_connect/models/employer.rbi +0 -197
  379. data/rbi/vitable_connect/models/employer_create_params.rbi +0 -169
  380. data/rbi/vitable_connect/models/employer_list_employees_params.rbi +0 -68
  381. data/rbi/vitable_connect/models/employer_list_params.rbi +0 -60
  382. data/rbi/vitable_connect/models/employer_response.rbi +0 -36
  383. data/rbi/vitable_connect/models/employer_retrieve_params.rbi +0 -46
  384. data/rbi/vitable_connect/models/employer_submit_census_sync_params.rbi +0 -819
  385. data/rbi/vitable_connect/models/employer_submit_census_sync_response.rbi +0 -76
  386. data/rbi/vitable_connect/models/employer_update_settings_params.rbi +0 -114
  387. data/rbi/vitable_connect/models/employer_update_settings_response.rbi +0 -147
  388. data/rbi/vitable_connect/models/enrollment.rbi +0 -401
  389. data/rbi/vitable_connect/models/enrollment_retrieve_params.rbi +0 -46
  390. data/rbi/vitable_connect/models/enrollment_retrieve_response.rbi +0 -34
  391. data/rbi/vitable_connect/models/enrollment_status.rbi +0 -32
  392. data/rbi/vitable_connect/models/group.rbi +0 -77
  393. data/rbi/vitable_connect/models/group_create_params.rbi +0 -46
  394. data/rbi/vitable_connect/models/group_list_params.rbi +0 -60
  395. data/rbi/vitable_connect/models/group_response.rbi +0 -32
  396. data/rbi/vitable_connect/models/group_retrieve_params.rbi +0 -43
  397. data/rbi/vitable_connect/models/group_update_params.rbi +0 -58
  398. data/rbi/vitable_connect/models/groups/members/sync_retrieve_params.rbi +0 -56
  399. data/rbi/vitable_connect/models/groups/members/sync_retrieve_response.rbi +0 -282
  400. data/rbi/vitable_connect/models/groups/members/sync_submit_params.rbi +0 -214
  401. data/rbi/vitable_connect/models/groups/members/sync_submit_response.rbi +0 -92
  402. data/rbi/vitable_connect/models/pagination.rbi +0 -62
  403. data/rbi/vitable_connect/models/plan_list_params.rbi +0 -60
  404. data/rbi/vitable_connect/models/plan_list_response.rbi +0 -29
  405. data/rbi/vitable_connect/models/type.rbi +0 -21
  406. data/rbi/vitable_connect/models/webhook_event.rbi +0 -81
  407. data/rbi/vitable_connect/models/webhook_event_list_deliveries_params.rbi +0 -38
  408. data/rbi/vitable_connect/models/webhook_event_list_deliveries_response.rbi +0 -147
  409. data/rbi/vitable_connect/models/webhook_event_list_params.rbi +0 -299
  410. data/rbi/vitable_connect/models/webhook_event_retrieve_params.rbi +0 -38
  411. data/rbi/vitable_connect/models/webhook_event_retrieve_response.rbi +0 -34
  412. data/rbi/vitable_connect/models.rbi +0 -70
  413. data/rbi/vitable_connect/request_options.rbi +0 -61
  414. data/rbi/vitable_connect/resources/auth.rbi +0 -36
  415. data/rbi/vitable_connect/resources/benefit_eligibility_policies.rbi +0 -12
  416. data/rbi/vitable_connect/resources/employees.rbi +0 -51
  417. data/rbi/vitable_connect/resources/employers.rbi +0 -150
  418. data/rbi/vitable_connect/resources/enrollments.rbi +0 -27
  419. data/rbi/vitable_connect/resources/groups/members/sync.rbi +0 -62
  420. data/rbi/vitable_connect/resources/groups/members.rbi +0 -17
  421. data/rbi/vitable_connect/resources/groups.rbi +0 -79
  422. data/rbi/vitable_connect/resources/plans.rbi +0 -34
  423. data/rbi/vitable_connect/resources/webhook_events.rbi +0 -83
  424. data/rbi/vitable_connect/version.rbi +0 -5
  425. data/sig/vitable_connect/client.rbs +0 -46
  426. data/sig/vitable_connect/errors.rbs +0 -117
  427. data/sig/vitable_connect/file_part.rbs +0 -21
  428. data/sig/vitable_connect/internal/page_number_page.rbs +0 -28
  429. data/sig/vitable_connect/internal/transport/base_client.rbs +0 -133
  430. data/sig/vitable_connect/internal/transport/pooled_net_requester.rbs +0 -48
  431. data/sig/vitable_connect/internal/type/array_of.rbs +0 -48
  432. data/sig/vitable_connect/internal/type/base_model.rbs +0 -104
  433. data/sig/vitable_connect/internal/type/base_page.rbs +0 -24
  434. data/sig/vitable_connect/internal/type/boolean.rbs +0 -26
  435. data/sig/vitable_connect/internal/type/converter.rbs +0 -79
  436. data/sig/vitable_connect/internal/type/enum.rbs +0 -32
  437. data/sig/vitable_connect/internal/type/file_input.rbs +0 -25
  438. data/sig/vitable_connect/internal/type/hash_of.rbs +0 -48
  439. data/sig/vitable_connect/internal/type/request_parameters.rbs +0 -20
  440. data/sig/vitable_connect/internal/type/union.rbs +0 -52
  441. data/sig/vitable_connect/internal/type/unknown.rbs +0 -26
  442. data/sig/vitable_connect/internal/util.rbs +0 -199
  443. data/sig/vitable_connect/internal.rbs +0 -10
  444. data/sig/vitable_connect/models/auth_issue_access_token_params.rbs +0 -56
  445. data/sig/vitable_connect/models/auth_issue_access_token_response.rbs +0 -50
  446. data/sig/vitable_connect/models/employee.rbs +0 -214
  447. data/sig/vitable_connect/models/employee_class.rbs +0 -24
  448. data/sig/vitable_connect/models/employee_list_enrollments_params.rbs +0 -36
  449. data/sig/vitable_connect/models/employee_retrieve_params.rbs +0 -24
  450. data/sig/vitable_connect/models/employee_retrieve_response.rbs +0 -13
  451. data/sig/vitable_connect/models/employer.rbs +0 -112
  452. data/sig/vitable_connect/models/employer_create_params.rbs +0 -93
  453. data/sig/vitable_connect/models/employer_list_employees_params.rbs +0 -36
  454. data/sig/vitable_connect/models/employer_list_params.rbs +0 -32
  455. data/sig/vitable_connect/models/employer_response.rbs +0 -13
  456. data/sig/vitable_connect/models/employer_retrieve_params.rbs +0 -24
  457. data/sig/vitable_connect/models/employer_submit_census_sync_params.rbs +0 -274
  458. data/sig/vitable_connect/models/employer_submit_census_sync_response.rbs +0 -30
  459. data/sig/vitable_connect/models/employer_update_settings_params.rbs +0 -44
  460. data/sig/vitable_connect/models/employer_update_settings_response.rbs +0 -48
  461. data/sig/vitable_connect/models/enrollment.rbs +0 -164
  462. data/sig/vitable_connect/models/enrollment_retrieve_params.rbs +0 -24
  463. data/sig/vitable_connect/models/enrollment_retrieve_response.rbs +0 -13
  464. data/sig/vitable_connect/models/enrollment_status.rbs +0 -16
  465. data/sig/vitable_connect/models/group.rbs +0 -45
  466. data/sig/vitable_connect/models/group_create_params.rbs +0 -28
  467. data/sig/vitable_connect/models/group_list_params.rbs +0 -32
  468. data/sig/vitable_connect/models/group_response.rbs +0 -13
  469. data/sig/vitable_connect/models/group_retrieve_params.rbs +0 -23
  470. data/sig/vitable_connect/models/group_update_params.rbs +0 -32
  471. data/sig/vitable_connect/models/groups/members/sync_retrieve_params.rbs +0 -32
  472. data/sig/vitable_connect/models/groups/members/sync_retrieve_response.rbs +0 -126
  473. data/sig/vitable_connect/models/groups/members/sync_submit_params.rbs +0 -124
  474. data/sig/vitable_connect/models/groups/members/sync_submit_response.rbs +0 -47
  475. data/sig/vitable_connect/models/pagination.rbs +0 -30
  476. data/sig/vitable_connect/models/plan_list_params.rbs +0 -32
  477. data/sig/vitable_connect/models/plan_list_response.rbs +0 -15
  478. data/sig/vitable_connect/models/type.rbs +0 -14
  479. data/sig/vitable_connect/models/webhook_event.rbs +0 -45
  480. data/sig/vitable_connect/models/webhook_event_list_deliveries_params.rbs +0 -23
  481. data/sig/vitable_connect/models/webhook_event_list_deliveries_response.rbs +0 -77
  482. data/sig/vitable_connect/models/webhook_event_list_params.rbs +0 -124
  483. data/sig/vitable_connect/models/webhook_event_retrieve_params.rbs +0 -23
  484. data/sig/vitable_connect/models/webhook_event_retrieve_response.rbs +0 -14
  485. data/sig/vitable_connect/models.rbs +0 -61
  486. data/sig/vitable_connect/request_options.rbs +0 -36
  487. data/sig/vitable_connect/resources/auth.rbs +0 -13
  488. data/sig/vitable_connect/resources/benefit_eligibility_policies.rbs +0 -7
  489. data/sig/vitable_connect/resources/employees.rbs +0 -19
  490. data/sig/vitable_connect/resources/employers.rbs +0 -48
  491. data/sig/vitable_connect/resources/enrollments.rbs +0 -12
  492. data/sig/vitable_connect/resources/groups/members/sync.rbs +0 -23
  493. data/sig/vitable_connect/resources/groups/members.rbs +0 -11
  494. data/sig/vitable_connect/resources/groups.rbs +0 -33
  495. data/sig/vitable_connect/resources/plans.rbs +0 -13
  496. data/sig/vitable_connect/resources/webhook_events.rbs +0 -28
  497. data/sig/vitable_connect/version.rbs +0 -3
data/README.md CHANGED
@@ -1,8 +1,27 @@
1
- # Vitable Connect Ruby API library
2
-
3
- The Vitable Connect Ruby library provides convenient access to the Vitable Connect REST API from any Ruby 3.2.0+ application. It ships with comprehensive types & docstrings in Yard, RBS, and RBI – [see below](https://github.com/Vitable-Inc/vitable-connect-ruby#Sorbet) for usage with Sorbet. The standard library's `net/http` is used as the HTTP transport, with connection pooling via the `connection_pool` gem.
4
-
5
- It is generated with [Stainless](https://www.stainless.com/).
1
+ # Vitable Ruby Library
2
+
3
+ [![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2FVitable-Inc%2Fvitable-connect-ruby)
4
+
5
+ The Vitable Ruby library provides convenient access to the Vitable APIs from Ruby.
6
+
7
+ ## Table of Contents
8
+
9
+ - [Documentation](#documentation)
10
+ - [Installation](#installation)
11
+ - [Reference](#reference)
12
+ - [Usage](#usage)
13
+ - [Advanced Concepts](#advanced-concepts)
14
+ - [Sorbet](#sorbet)
15
+ - [Versioning](#versioning)
16
+ - [Requirements](#requirements)
17
+ - [Environments](#environments)
18
+ - [Errors](#errors)
19
+ - [Advanced](#advanced)
20
+ - [Retries](#retries)
21
+ - [Timeouts](#timeouts)
22
+ - [Additional Headers](#additional-headers)
23
+ - [Additional Query Parameters](#additional-query-parameters)
24
+ - [Contributing](#contributing)
6
25
 
7
26
  ## Documentation
8
27
 
@@ -17,128 +36,27 @@ To use this gem, install via Bundler by adding the following to your application
17
36
  <!-- x-release-please-start-version -->
18
37
 
19
38
  ```ruby
20
- gem "vitable-connect", "~> 0.5.0"
39
+ gem "vitable-connect", "~> 0.6.0"
21
40
  ```
22
41
 
23
42
  <!-- x-release-please-end -->
24
43
 
25
- ## Usage
26
-
27
- ```ruby
28
- require "bundler/setup"
29
- require "vitable_connect"
30
-
31
- vitable_connect = VitableConnect::Client.new(
32
- api_key: ENV["VITABLE_CONNECT_API_KEY"], # This is the default and can be omitted
33
- environment: "environment_1" # defaults to "production"
34
- )
35
-
36
- response = vitable_connect.auth.issue_access_token(grant_type: "client_credentials")
37
-
38
- puts(response.access_token)
39
- ```
40
-
41
- ### Pagination
42
-
43
- List methods in the Vitable Connect API are paginated.
44
-
45
- This library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:
46
-
47
- ```ruby
48
- page = vitable_connect.employees.list_enrollments
49
-
50
- # Fetch single item from page.
51
- employee = page.data[0]
52
- puts(employee.id)
53
-
54
- # Automatically fetches more pages as needed.
55
- page.auto_paging_each do |employee|
56
- puts(employee.id)
57
- end
58
- ```
59
-
60
- Alternatively, you can use the `#next_page?` and `#next_page` methods for more granular control working with pages.
61
-
62
- ```ruby
63
- if page.next_page?
64
- new_page = page.next_page
65
- puts(new_page.data[0].id)
66
- end
67
- ```
68
-
69
- ### Handling errors
70
-
71
- 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 `VitableConnect::Errors::APIError` will be thrown:
72
-
73
- ```ruby
74
- begin
75
- auth = vitable_connect.auth.issue_access_token(grant_type: "client_credentials")
76
- rescue VitableConnect::Errors::APIConnectionError => e
77
- puts("The server could not be reached")
78
- puts(e.cause) # an underlying Exception, likely raised within `net/http`
79
- rescue VitableConnect::Errors::RateLimitError => e
80
- puts("A 429 status code was received; we should back off a bit.")
81
- rescue VitableConnect::Errors::APIStatusError => e
82
- puts("Another non-200-range status code was received")
83
- puts(e.status)
84
- end
85
- ```
86
-
87
- Error codes are as follows:
88
-
89
- | Cause | Error Type |
90
- | ---------------- | -------------------------- |
91
- | HTTP 400 | `BadRequestError` |
92
- | HTTP 401 | `AuthenticationError` |
93
- | HTTP 403 | `PermissionDeniedError` |
94
- | HTTP 404 | `NotFoundError` |
95
- | HTTP 409 | `ConflictError` |
96
- | HTTP 422 | `UnprocessableEntityError` |
97
- | HTTP 429 | `RateLimitError` |
98
- | HTTP >= 500 | `InternalServerError` |
99
- | Other HTTP error | `APIStatusError` |
100
- | Timeout | `APITimeoutError` |
101
- | Network error | `APIConnectionError` |
102
-
103
- ### Retries
44
+ ## Reference
104
45
 
105
- Certain errors will be automatically retried 2 times by default, with a short exponential backoff.
46
+ A full reference for this library is available [here](https://github.com/Vitable-Inc/vitable-connect-ruby/blob/HEAD/./reference.md).
106
47
 
107
- 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.
48
+ ## Usage
108
49
 
109
- You can use the `max_retries` option to configure or disable this:
50
+ Instantiate and use the client with the following:
110
51
 
111
52
  ```ruby
112
- # Configure the default for all requests:
113
- vitable_connect = VitableConnect::Client.new(
114
- max_retries: 0 # default is 2
115
- )
116
-
117
- # Or, configure per-request:
118
- vitable_connect.auth.issue_access_token(
119
- grant_type: "client_credentials",
120
- request_options: {max_retries: 5}
121
- )
122
- ```
123
-
124
- ### Timeouts
53
+ require "vitableconnect"
125
54
 
126
- By default, requests will time out after 60 seconds. You can use the timeout option to configure or disable this:
55
+ client = VitableConnect::Client.new(api_key: "<token>")
127
56
 
128
- ```ruby
129
- # Configure the default for all requests:
130
- vitable_connect = VitableConnect::Client.new(
131
- timeout: nil # default is 60
132
- )
133
-
134
- # Or, configure per-request:
135
- vitable_connect.auth.issue_access_token(grant_type: "client_credentials", request_options: {timeout: 5})
57
+ client.auth.issue_access_token(grant_type: "client_credentials")
136
58
  ```
137
59
 
138
- On timeout, `VitableConnect::Errors::APITimeoutError` is raised.
139
-
140
- Note that requests that time out are retried by default.
141
-
142
60
  ## Advanced concepts
143
61
 
144
62
  ### BaseModel
@@ -229,25 +147,25 @@ vitable_connect.auth.issue_access_token(**params)
229
147
  Since this library does not depend on `sorbet-runtime`, it cannot provide [`T::Enum`](https://sorbet.org/docs/tenum) instances. Instead, we provide "tagged symbols" instead, which is always a primitive at runtime:
230
148
 
231
149
  ```ruby
232
- # :weekly
233
- puts(VitableConnect::EmployerUpdateSettingsParams::PayFrequency::WEEKLY)
150
+ # :Salary
151
+ puts(VitableConnect::EmployeeUpdateParams::CompensationType::SALARY)
234
152
 
235
- # Revealed type: `T.all(VitableConnect::EmployerUpdateSettingsParams::PayFrequency, Symbol)`
236
- T.reveal_type(VitableConnect::EmployerUpdateSettingsParams::PayFrequency::WEEKLY)
153
+ # Revealed type: `T.all(VitableConnect::EmployeeUpdateParams::CompensationType, Symbol)`
154
+ T.reveal_type(VitableConnect::EmployeeUpdateParams::CompensationType::SALARY)
237
155
  ```
238
156
 
239
157
  Enum parameters have a "relaxed" type, so you can either pass in enum constants or their literal value:
240
158
 
241
159
  ```ruby
242
160
  # Using the enum constants preserves the tagged type information:
243
- vitable_connect.employers.update_settings(
244
- pay_frequency: VitableConnect::EmployerUpdateSettingsParams::PayFrequency::WEEKLY,
161
+ vitable_connect.employees.update(
162
+ compensation_type: VitableConnect::EmployeeUpdateParams::CompensationType::SALARY,
245
163
  # …
246
164
  )
247
165
 
248
166
  # Literal values are also permissible:
249
- vitable_connect.employers.update_settings(
250
- pay_frequency: :weekly,
167
+ vitable_connect.employees.update(
168
+ compensation_type: :Salary,
251
169
  # …
252
170
  )
253
171
  ```
@@ -262,6 +180,135 @@ This package considers improvements to the (non-runtime) `*.rbi` and `*.rbs` typ
262
180
 
263
181
  Ruby 3.2.0 or higher.
264
182
 
183
+ ## Environments
184
+
185
+ This SDK allows you to configure different environments or custom URLs for API requests. You can either use the predefined environments or specify your own custom URL.
186
+ ### Environments
187
+ ```ruby
188
+ require "VitableConnect"
189
+
190
+ VitableConnect = VitableConnect::Client.new(
191
+ base_url: VitableConnect::Environment::PRODUCTION
192
+ )
193
+ ```
194
+
195
+ ### Custom URL
196
+ ```ruby
197
+ require "VitableConnect"
198
+
199
+ client = VitableConnect::Client.new(
200
+ base_url: "https://example.com"
201
+ )
202
+ ```
203
+
204
+ ## Errors
205
+
206
+ Failed API calls will raise errors that can be rescued from granularly.
207
+
208
+ ```ruby
209
+ require "VitableConnect"
210
+
211
+ client = VitableConnect::Client.new(
212
+ base_url: "https://example.com"
213
+ )
214
+
215
+ begin
216
+ result = client.auth.issue_access_token
217
+ rescue VitableConnect::Errors::TimeoutError
218
+ puts "API didn't respond before our timeout elapsed"
219
+ rescue VitableConnect::Errors::ServiceUnavailableError
220
+ puts "API returned status 503, is probably overloaded, try again later"
221
+ rescue VitableConnect::Errors::ServerError
222
+ puts "API returned some other 5xx status, this is probably a bug"
223
+ rescue VitableConnect::Errors::ResponseError => e
224
+ puts "API returned an unexpected status other than 5xx: #{e.code} #{e.message}"
225
+ rescue VitableConnect::Errors::ApiError => e
226
+ puts "Some other error occurred when calling the API: #{e.message}"
227
+ end
228
+ ```
229
+
230
+ ## Advanced
231
+
232
+ ### Retries
233
+
234
+ The SDK is instrumented with automatic retries. A request will be retried as long as the request is deemed
235
+ retryable and the number of retry attempts has not grown larger than the configured retry limit (default: 2).
236
+
237
+ A request is deemed retryable when any of the following HTTP status codes is returned:
238
+
239
+ - [408](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408) (Timeout)
240
+ - [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) (Too Many Requests)
241
+ - [5XX](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#server_error_responses) (Internal Server Error)
242
+
243
+ The `retryStatusCodes` configuration controls which [5XX](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#server_error_responses) status codes are retried:
244
+
245
+ - `legacy` (default): Retries `408`, `429`, `500`, `502`, `503`, `504`, `521`, `522`, `524`
246
+ - `recommended`: Retries `408`, `429`, `502`, `503`, `504` only (excludes `500 Internal Server Error` to avoid retrying non-idempotent failures)
247
+
248
+ Use the `max_retries` option to configure this behavior.
249
+
250
+ ```ruby
251
+ require "VitableConnect"
252
+
253
+ client = VitableConnect::Client.new(
254
+ base_url: "https://example.com",
255
+ max_retries: 3 # Configure max retries (default is 2)
256
+ )
257
+ ```
258
+
259
+ ### Timeouts
260
+
261
+ The SDK defaults to a 60 second timeout. Use the `timeout` option to configure this behavior.
262
+
263
+ ```ruby
264
+ require "VitableConnect"
265
+
266
+ response = client.auth.issue_access_token(
267
+ ...,
268
+ timeout: 30 # 30 second timeout
269
+ )
270
+ ```
271
+
272
+ ### Additional Headers
273
+
274
+ If you would like to send additional headers as part of the request, use the `additional_headers` request option.
275
+
276
+ ```ruby
277
+ require "VitableConnect"
278
+
279
+ response = client.auth.issue_access_token(
280
+ ...,
281
+ request_options: {
282
+ additional_headers: {
283
+ "X-Custom-Header" => "custom-value"
284
+ }
285
+ }
286
+ )
287
+ ```
288
+
289
+ ### Additional Query Parameters
290
+
291
+ If you would like to send additional query parameters as part of the request, use the `additional_query_parameters` request option.
292
+
293
+ ```ruby
294
+ require "VitableConnect"
295
+
296
+ response = client.auth.issue_access_token(
297
+ ...,
298
+ request_options: {
299
+ additional_query_parameters: {
300
+ "custom_param" => "custom-value"
301
+ }
302
+ }
303
+ )
304
+ ```
305
+
265
306
  ## Contributing
266
307
 
267
- See [the contributing documentation](https://github.com/Vitable-Inc/vitable-connect-ruby/tree/main/CONTRIBUTING.md).
308
+ While we value open-source contributions to this SDK, this library is generated programmatically.
309
+ Additions made directly to this library would have to be moved over to our generation code,
310
+ otherwise they would be overwritten upon the next generated release. Feel free to open a PR as
311
+ a proof of concept, but know that we will not be able to merge it as-is. We suggest opening
312
+ an issue first to discuss with us!
313
+
314
+ On the other hand, contributions to the README are always very welcome!
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "minitest/test_task"
5
+
6
+ Minitest::TestTask.create
7
+
8
+ require "rubocop/rake_task"
9
+
10
+ RuboCop::RakeTask.new
11
+
12
+ task default: %i[test]
13
+
14
+ task lint: %i[rubocop]
15
+
16
+ # Run only the custom test file
17
+ Minitest::TestTask.create(:customtest) do |t|
18
+ t.libs << "test"
19
+ t.test_globs = ["test/custom.test.rb"]
20
+ end
data/custom.gemspec.rb ADDED
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Custom gemspec configuration file
4
+ # This file is automatically loaded by the main gemspec file. The 'spec' variable is available
5
+ # in this context from the main gemspec file. You can modify this file to add custom metadata,
6
+ # dependencies, or other gemspec configurations. If you do make changes to this file, you will
7
+ # need to add it to the .fernignore file to prevent your changes from being overwritten.
8
+
9
+ def add_custom_gemspec_data(spec)
10
+ # Example custom configurations (uncomment and modify as needed)
11
+
12
+ # spec.authors = ["Your name"]
13
+ # spec.email = ["your.email@example.com"]
14
+ # spec.homepage = "https://github.com/your-org/vitableconnect-ruby"
15
+ # spec.license = "Your license"
16
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Auth
5
+ class Client
6
+ # @param client [VitableConnect::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # Issues a short-lived access token from the authenticated API key. Access tokens can optionally be bound to a
14
+ # specific employer or employee for scoped access. Tokens expire after 15 minutes.
15
+ #
16
+ # @param request_options [Hash]
17
+ # @param params [VitableConnect::Auth::Types::IssueAccessTokenRequest]
18
+ # @option request_options [String] :base_url
19
+ # @option request_options [Hash{String => Object}] :additional_headers
20
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
21
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
22
+ # @option request_options [Integer] :timeout_in_seconds
23
+ #
24
+ # @example
25
+ # client.auth.issue_access_token(grant_type: "client_credentials")
26
+ #
27
+ # @return [VitableConnect::Types::AccessTokenResponse]
28
+ def issue_access_token(request_options: {}, **params)
29
+ params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
30
+ request = VitableConnect::Internal::JSON::Request.new(
31
+ base_url: request_options[:base_url],
32
+ method: "POST",
33
+ path: "v1/auth/access-tokens",
34
+ body: VitableConnect::Auth::Types::IssueAccessTokenRequest.new(params).to_h,
35
+ request_options: request_options
36
+ )
37
+ begin
38
+ response = @client.send(request)
39
+ rescue Net::HTTPRequestTimeout
40
+ raise VitableConnect::Errors::TimeoutError
41
+ end
42
+ code = response.code.to_i
43
+ if code.between?(200, 299)
44
+ VitableConnect::Types::AccessTokenResponse.load(response.body)
45
+ else
46
+ error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
47
+ raise error_class.new(response.body, code: code)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Auth
5
+ module Types
6
+ class IssueAccessTokenRequest < Internal::Types::Model
7
+ field :grant_type, -> { VitableConnect::Types::GrantType }, optional: false, nullable: false
8
+
9
+ field :bound_entity, -> { VitableConnect::Types::BoundEntity }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ class Client
5
+ # @param base_url [String, nil]
6
+ # @param api_key [String]
7
+ # @param max_retries [Integer]
8
+ #
9
+ # @return [void]
10
+ def initialize(base_url: nil, api_key: ENV.fetch("VITABLE_CONNECT_API_KEY", nil), max_retries: 2)
11
+ @raw_client = VitableConnect::Internal::Http::RawClient.new(
12
+ base_url: base_url || VitableConnect::Environment::PRODUCTION,
13
+ headers: {
14
+ "User-Agent" => "vitable-connect/1.0.0",
15
+ "X-Fern-Language" => "Ruby",
16
+ Authorization: "Bearer #{api_key}"
17
+ },
18
+ max_retries: max_retries
19
+ )
20
+ end
21
+
22
+ # @return [VitableConnect::Auth::Client]
23
+ def auth
24
+ @auth ||= VitableConnect::Auth::Client.new(client: @raw_client)
25
+ end
26
+
27
+ # @return [VitableConnect::Employees::Client]
28
+ def employees
29
+ @employees ||= VitableConnect::Employees::Client.new(client: @raw_client)
30
+ end
31
+
32
+ # @return [VitableConnect::Employers::Client]
33
+ def employers
34
+ @employers ||= VitableConnect::Employers::Client.new(client: @raw_client)
35
+ end
36
+
37
+ # @return [VitableConnect::Enrollments::Client]
38
+ def enrollments
39
+ @enrollments ||= VitableConnect::Enrollments::Client.new(client: @raw_client)
40
+ end
41
+
42
+ # @return [VitableConnect::Groups::Client]
43
+ def groups
44
+ @groups ||= VitableConnect::Groups::Client.new(client: @raw_client)
45
+ end
46
+
47
+ # @return [VitableConnect::Members::Client]
48
+ def members
49
+ @members ||= VitableConnect::Members::Client.new(client: @raw_client)
50
+ end
51
+
52
+ # @return [VitableConnect::Organizations::Client]
53
+ def organizations
54
+ @organizations ||= VitableConnect::Organizations::Client.new(client: @raw_client)
55
+ end
56
+
57
+ # @return [VitableConnect::Plans::Client]
58
+ def plans
59
+ @plans ||= VitableConnect::Plans::Client.new(client: @raw_client)
60
+ end
61
+
62
+ # @return [VitableConnect::WebhookEvents::Client]
63
+ def webhook_events
64
+ @webhook_events ||= VitableConnect::WebhookEvents::Client.new(client: @raw_client)
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,161 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Employees
5
+ class Client
6
+ # @param client [VitableConnect::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # Retrieves detailed information for a specific employee by ID. Returns employee details including personal
14
+ # information, employment status, classification and compensation-type effective dates, compensation type, and
15
+ # payroll deductions from the most recent statement period. Deductions reflect a snapshot of the current period
16
+ # and are replaced when a new statement is generated.
17
+ #
18
+ # @param request_options [Hash]
19
+ # @param params [Hash]
20
+ # @option request_options [String] :base_url
21
+ # @option request_options [Hash{String => Object}] :additional_headers
22
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
23
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
24
+ # @option request_options [Integer] :timeout_in_seconds
25
+ # @option params [VitableConnect::Types::EmployeeID] :employee_id
26
+ #
27
+ # @example
28
+ # client.employees.get(employee_id: "empl_abc123def456")
29
+ #
30
+ # @return [VitableConnect::Types::EmployeeResponse]
31
+ def get(request_options: {}, **params)
32
+ params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
33
+ request = VitableConnect::Internal::JSON::Request.new(
34
+ base_url: request_options[:base_url],
35
+ method: "GET",
36
+ path: "v1/employees/#{URI.encode_uri_component(params[:employee_id].to_s)}",
37
+ request_options: request_options
38
+ )
39
+ begin
40
+ response = @client.send(request)
41
+ rescue Net::HTTPRequestTimeout
42
+ raise VitableConnect::Errors::TimeoutError
43
+ end
44
+ code = response.code.to_i
45
+ if code.between?(200, 299)
46
+ VitableConnect::Types::EmployeeResponse.load(response.body)
47
+ else
48
+ error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
49
+ raise error_class.new(response.body, code: code)
50
+ end
51
+ end
52
+
53
+ # Updates employee personal, contact, address, and employment fields. This endpoint currently supports email,
54
+ # phone, gender, address, employee_class, start_date, and compensation_type. effective_date is required and
55
+ # applies to employee_class and compensation_type when those fields are included in the request.
56
+ #
57
+ # @param request_options [Hash]
58
+ # @param params [VitableConnect::Employees::Types::PatchedUpdateEmployeeRequest]
59
+ # @option request_options [String] :base_url
60
+ # @option request_options [Hash{String => Object}] :additional_headers
61
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
62
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
63
+ # @option request_options [Integer] :timeout_in_seconds
64
+ # @option params [VitableConnect::Types::EmployeeID] :employee_id
65
+ #
66
+ # @example
67
+ # client.employees.update(
68
+ # employee_id: "empl_abc123def456",
69
+ # employee_class: "Full Time",
70
+ # start_date: "2023-01-15",
71
+ # compensation_type: "Salary",
72
+ # effective_date: "2023-03-01"
73
+ # )
74
+ #
75
+ # @return [VitableConnect::Types::EmployeeResponse]
76
+ def update(request_options: {}, **params)
77
+ params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
78
+ request_data = VitableConnect::Employees::Types::PatchedUpdateEmployeeRequest.new(params).to_h
79
+ non_body_param_names = %w[employee_id]
80
+ body = request_data.except(*non_body_param_names)
81
+
82
+ request = VitableConnect::Internal::JSON::Request.new(
83
+ base_url: request_options[:base_url],
84
+ method: "PATCH",
85
+ path: "v1/employees/#{URI.encode_uri_component(params[:employee_id].to_s)}",
86
+ body: body,
87
+ request_options: request_options
88
+ )
89
+ begin
90
+ response = @client.send(request)
91
+ rescue Net::HTTPRequestTimeout
92
+ raise VitableConnect::Errors::TimeoutError
93
+ end
94
+ code = response.code.to_i
95
+ if code.between?(200, 299)
96
+ VitableConnect::Types::EmployeeResponse.load(response.body)
97
+ else
98
+ error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
99
+ raise error_class.new(response.body, code: code)
100
+ end
101
+ end
102
+
103
+ # Retrieves a paginated list of benefit enrollments for an employee.
104
+ #
105
+ # @param request_options [Hash]
106
+ # @param params [Hash]
107
+ # @option request_options [String] :base_url
108
+ # @option request_options [Hash{String => Object}] :additional_headers
109
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
110
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
111
+ # @option request_options [Integer] :timeout_in_seconds
112
+ # @option params [VitableConnect::Types::EmployeeID] :employee_id
113
+ # @option params [Integer, nil] :limit
114
+ # @option params [Integer, nil] :page
115
+ #
116
+ # @example
117
+ # client.employees.list_enrollments(
118
+ # employee_id: "empl_abc123def456",
119
+ # limit: 20,
120
+ # page: 1
121
+ # )
122
+ #
123
+ # @return [VitableConnect::Types::EnrollmentListResponse]
124
+ def list_enrollments(request_options: {}, **params)
125
+ params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
126
+ query_params = {}
127
+ query_params["limit"] = params[:limit] if params.key?(:limit)
128
+ query_params["page"] = params[:page] if params.key?(:page)
129
+
130
+ VitableConnect::Internal::OffsetItemIterator.new(
131
+ initial_page: query_params["page"],
132
+ item_field: :data,
133
+ has_next_field: nil,
134
+ step: false
135
+ ) do |next_page|
136
+ query_params["page"] = next_page
137
+ request = VitableConnect::Internal::JSON::Request.new(
138
+ base_url: request_options[:base_url],
139
+ method: "GET",
140
+ path: "v1/employees/#{URI.encode_uri_component(params[:employee_id].to_s)}/enrollments",
141
+ query: query_params,
142
+ request_options: request_options
143
+ )
144
+ begin
145
+ response = @client.send(request)
146
+ rescue Net::HTTPRequestTimeout
147
+ raise VitableConnect::Errors::TimeoutError
148
+ end
149
+ code = response.code.to_i
150
+ if code.between?(200, 299)
151
+ parsed_response = VitableConnect::Types::EnrollmentListResponse.load(response.body)
152
+ [parsed_response, response]
153
+ else
154
+ error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
155
+ raise error_class.new(response.body, code: code)
156
+ end
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Employees
5
+ module Types
6
+ class GetEmployeesRequest < Internal::Types::Model
7
+ field :employee_id, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end