vitable-connect 0.1.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 (185) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +39 -0
  4. data/README.md +267 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/vitable_connect/client.rb +118 -0
  7. data/lib/vitable_connect/errors.rb +228 -0
  8. data/lib/vitable_connect/file_part.rb +58 -0
  9. data/lib/vitable_connect/internal/page_number_page.rb +113 -0
  10. data/lib/vitable_connect/internal/transport/base_client.rb +577 -0
  11. data/lib/vitable_connect/internal/transport/pooled_net_requester.rb +210 -0
  12. data/lib/vitable_connect/internal/type/array_of.rb +168 -0
  13. data/lib/vitable_connect/internal/type/base_model.rb +534 -0
  14. data/lib/vitable_connect/internal/type/base_page.rb +55 -0
  15. data/lib/vitable_connect/internal/type/boolean.rb +77 -0
  16. data/lib/vitable_connect/internal/type/converter.rb +327 -0
  17. data/lib/vitable_connect/internal/type/enum.rb +152 -0
  18. data/lib/vitable_connect/internal/type/file_input.rb +111 -0
  19. data/lib/vitable_connect/internal/type/hash_of.rb +188 -0
  20. data/lib/vitable_connect/internal/type/request_parameters.rb +42 -0
  21. data/lib/vitable_connect/internal/type/union.rb +245 -0
  22. data/lib/vitable_connect/internal/type/unknown.rb +81 -0
  23. data/lib/vitable_connect/internal/util.rb +951 -0
  24. data/lib/vitable_connect/internal.rb +20 -0
  25. data/lib/vitable_connect/models/auth_issue_access_token_params.rb +68 -0
  26. data/lib/vitable_connect/models/auth_issue_access_token_response.rb +70 -0
  27. data/lib/vitable_connect/models/benefit_eligibility_policy.rb +53 -0
  28. data/lib/vitable_connect/models/benefit_eligibility_policy_response.rb +18 -0
  29. data/lib/vitable_connect/models/benefit_eligibility_policy_retrieve_params.rb +22 -0
  30. data/lib/vitable_connect/models/employee.rb +244 -0
  31. data/lib/vitable_connect/models/employee_class.rb +25 -0
  32. data/lib/vitable_connect/models/employee_list_enrollments_params.rb +38 -0
  33. data/lib/vitable_connect/models/employee_retrieve_params.rb +22 -0
  34. data/lib/vitable_connect/models/employee_retrieve_response.rb +18 -0
  35. data/lib/vitable_connect/models/employer.rb +163 -0
  36. data/lib/vitable_connect/models/employer_create_benefit_eligibility_policy_params.rb +43 -0
  37. data/lib/vitable_connect/models/employer_create_params.rb +115 -0
  38. data/lib/vitable_connect/models/employer_list_employees_params.rb +38 -0
  39. data/lib/vitable_connect/models/employer_list_params.rb +30 -0
  40. data/lib/vitable_connect/models/employer_response.rb +19 -0
  41. data/lib/vitable_connect/models/employer_retrieve_params.rb +22 -0
  42. data/lib/vitable_connect/models/employer_submit_census_sync_params.rb +374 -0
  43. data/lib/vitable_connect/models/employer_submit_census_sync_response.rb +35 -0
  44. data/lib/vitable_connect/models/enrollment.rb +234 -0
  45. data/lib/vitable_connect/models/enrollment_retrieve_params.rb +22 -0
  46. data/lib/vitable_connect/models/enrollment_retrieve_response.rb +18 -0
  47. data/lib/vitable_connect/models/enrollment_status.rb +21 -0
  48. data/lib/vitable_connect/models/pagination.rb +42 -0
  49. data/lib/vitable_connect/models/type.rb +17 -0
  50. data/lib/vitable_connect/models/webhook_event.rb +62 -0
  51. data/lib/vitable_connect/models/webhook_event_list_deliveries_params.rb +20 -0
  52. data/lib/vitable_connect/models/webhook_event_list_deliveries_response.rb +92 -0
  53. data/lib/vitable_connect/models/webhook_event_list_params.rb +135 -0
  54. data/lib/vitable_connect/models/webhook_event_retrieve_params.rb +20 -0
  55. data/lib/vitable_connect/models/webhook_event_retrieve_response.rb +18 -0
  56. data/lib/vitable_connect/models.rb +95 -0
  57. data/lib/vitable_connect/request_options.rb +78 -0
  58. data/lib/vitable_connect/resources/auth.rb +41 -0
  59. data/lib/vitable_connect/resources/benefit_eligibility_policies.rb +35 -0
  60. data/lib/vitable_connect/resources/employees.rb +63 -0
  61. data/lib/vitable_connect/resources/employers.rb +184 -0
  62. data/lib/vitable_connect/resources/enrollments.rb +35 -0
  63. data/lib/vitable_connect/resources/webhook_events.rb +95 -0
  64. data/lib/vitable_connect/version.rb +5 -0
  65. data/lib/vitable_connect.rb +93 -0
  66. data/manifest.yaml +17 -0
  67. data/rbi/vitable_connect/client.rbi +88 -0
  68. data/rbi/vitable_connect/errors.rbi +205 -0
  69. data/rbi/vitable_connect/file_part.rbi +37 -0
  70. data/rbi/vitable_connect/internal/page_number_page.rbi +49 -0
  71. data/rbi/vitable_connect/internal/transport/base_client.rbi +307 -0
  72. data/rbi/vitable_connect/internal/transport/pooled_net_requester.rbi +84 -0
  73. data/rbi/vitable_connect/internal/type/array_of.rbi +108 -0
  74. data/rbi/vitable_connect/internal/type/base_model.rbi +314 -0
  75. data/rbi/vitable_connect/internal/type/base_page.rbi +43 -0
  76. data/rbi/vitable_connect/internal/type/boolean.rbi +58 -0
  77. data/rbi/vitable_connect/internal/type/converter.rbi +225 -0
  78. data/rbi/vitable_connect/internal/type/enum.rbi +82 -0
  79. data/rbi/vitable_connect/internal/type/file_input.rbi +59 -0
  80. data/rbi/vitable_connect/internal/type/hash_of.rbi +108 -0
  81. data/rbi/vitable_connect/internal/type/request_parameters.rbi +31 -0
  82. data/rbi/vitable_connect/internal/type/union.rbi +130 -0
  83. data/rbi/vitable_connect/internal/type/unknown.rbi +58 -0
  84. data/rbi/vitable_connect/internal/util.rbi +507 -0
  85. data/rbi/vitable_connect/internal.rbi +18 -0
  86. data/rbi/vitable_connect/models/auth_issue_access_token_params.rbi +147 -0
  87. data/rbi/vitable_connect/models/auth_issue_access_token_response.rbi +128 -0
  88. data/rbi/vitable_connect/models/benefit_eligibility_policy.rbi +74 -0
  89. data/rbi/vitable_connect/models/benefit_eligibility_policy_response.rbi +38 -0
  90. data/rbi/vitable_connect/models/benefit_eligibility_policy_retrieve_params.rbi +43 -0
  91. data/rbi/vitable_connect/models/employee.rbi +316 -0
  92. data/rbi/vitable_connect/models/employee_class.rbi +38 -0
  93. data/rbi/vitable_connect/models/employee_list_enrollments_params.rbi +68 -0
  94. data/rbi/vitable_connect/models/employee_retrieve_params.rbi +46 -0
  95. data/rbi/vitable_connect/models/employee_retrieve_response.rbi +32 -0
  96. data/rbi/vitable_connect/models/employer.rbi +205 -0
  97. data/rbi/vitable_connect/models/employer_create_benefit_eligibility_policy_params.rbi +64 -0
  98. data/rbi/vitable_connect/models/employer_create_params.rbi +169 -0
  99. data/rbi/vitable_connect/models/employer_list_employees_params.rbi +68 -0
  100. data/rbi/vitable_connect/models/employer_list_params.rbi +60 -0
  101. data/rbi/vitable_connect/models/employer_response.rbi +36 -0
  102. data/rbi/vitable_connect/models/employer_retrieve_params.rbi +46 -0
  103. data/rbi/vitable_connect/models/employer_submit_census_sync_params.rbi +819 -0
  104. data/rbi/vitable_connect/models/employer_submit_census_sync_response.rbi +76 -0
  105. data/rbi/vitable_connect/models/enrollment.rbi +401 -0
  106. data/rbi/vitable_connect/models/enrollment_retrieve_params.rbi +46 -0
  107. data/rbi/vitable_connect/models/enrollment_retrieve_response.rbi +34 -0
  108. data/rbi/vitable_connect/models/enrollment_status.rbi +32 -0
  109. data/rbi/vitable_connect/models/pagination.rbi +62 -0
  110. data/rbi/vitable_connect/models/type.rbi +21 -0
  111. data/rbi/vitable_connect/models/webhook_event.rbi +81 -0
  112. data/rbi/vitable_connect/models/webhook_event_list_deliveries_params.rbi +38 -0
  113. data/rbi/vitable_connect/models/webhook_event_list_deliveries_response.rbi +147 -0
  114. data/rbi/vitable_connect/models/webhook_event_list_params.rbi +307 -0
  115. data/rbi/vitable_connect/models/webhook_event_retrieve_params.rbi +38 -0
  116. data/rbi/vitable_connect/models/webhook_event_retrieve_response.rbi +34 -0
  117. data/rbi/vitable_connect/models.rbi +62 -0
  118. data/rbi/vitable_connect/request_options.rbi +61 -0
  119. data/rbi/vitable_connect/resources/auth.rbi +36 -0
  120. data/rbi/vitable_connect/resources/benefit_eligibility_policies.rbi +27 -0
  121. data/rbi/vitable_connect/resources/employees.rbi +49 -0
  122. data/rbi/vitable_connect/resources/employers.rbi +147 -0
  123. data/rbi/vitable_connect/resources/enrollments.rbi +27 -0
  124. data/rbi/vitable_connect/resources/webhook_events.rbi +84 -0
  125. data/rbi/vitable_connect/version.rbi +5 -0
  126. data/sig/vitable_connect/client.rbs +42 -0
  127. data/sig/vitable_connect/errors.rbs +117 -0
  128. data/sig/vitable_connect/file_part.rbs +21 -0
  129. data/sig/vitable_connect/internal/page_number_page.rbs +28 -0
  130. data/sig/vitable_connect/internal/transport/base_client.rbs +133 -0
  131. data/sig/vitable_connect/internal/transport/pooled_net_requester.rbs +48 -0
  132. data/sig/vitable_connect/internal/type/array_of.rbs +48 -0
  133. data/sig/vitable_connect/internal/type/base_model.rbs +104 -0
  134. data/sig/vitable_connect/internal/type/base_page.rbs +24 -0
  135. data/sig/vitable_connect/internal/type/boolean.rbs +26 -0
  136. data/sig/vitable_connect/internal/type/converter.rbs +79 -0
  137. data/sig/vitable_connect/internal/type/enum.rbs +32 -0
  138. data/sig/vitable_connect/internal/type/file_input.rbs +25 -0
  139. data/sig/vitable_connect/internal/type/hash_of.rbs +48 -0
  140. data/sig/vitable_connect/internal/type/request_parameters.rbs +20 -0
  141. data/sig/vitable_connect/internal/type/union.rbs +52 -0
  142. data/sig/vitable_connect/internal/type/unknown.rbs +26 -0
  143. data/sig/vitable_connect/internal/util.rbs +195 -0
  144. data/sig/vitable_connect/internal.rbs +10 -0
  145. data/sig/vitable_connect/models/auth_issue_access_token_params.rbs +56 -0
  146. data/sig/vitable_connect/models/auth_issue_access_token_response.rbs +50 -0
  147. data/sig/vitable_connect/models/benefit_eligibility_policy.rbs +50 -0
  148. data/sig/vitable_connect/models/benefit_eligibility_policy_response.rbs +14 -0
  149. data/sig/vitable_connect/models/benefit_eligibility_policy_retrieve_params.rbs +23 -0
  150. data/sig/vitable_connect/models/employee.rbs +169 -0
  151. data/sig/vitable_connect/models/employee_class.rbs +24 -0
  152. data/sig/vitable_connect/models/employee_list_enrollments_params.rbs +36 -0
  153. data/sig/vitable_connect/models/employee_retrieve_params.rbs +24 -0
  154. data/sig/vitable_connect/models/employee_retrieve_response.rbs +13 -0
  155. data/sig/vitable_connect/models/employer.rbs +117 -0
  156. data/sig/vitable_connect/models/employer_create_benefit_eligibility_policy_params.rbs +32 -0
  157. data/sig/vitable_connect/models/employer_create_params.rbs +93 -0
  158. data/sig/vitable_connect/models/employer_list_employees_params.rbs +36 -0
  159. data/sig/vitable_connect/models/employer_list_params.rbs +32 -0
  160. data/sig/vitable_connect/models/employer_response.rbs +13 -0
  161. data/sig/vitable_connect/models/employer_retrieve_params.rbs +24 -0
  162. data/sig/vitable_connect/models/employer_submit_census_sync_params.rbs +274 -0
  163. data/sig/vitable_connect/models/employer_submit_census_sync_response.rbs +30 -0
  164. data/sig/vitable_connect/models/enrollment.rbs +164 -0
  165. data/sig/vitable_connect/models/enrollment_retrieve_params.rbs +24 -0
  166. data/sig/vitable_connect/models/enrollment_retrieve_response.rbs +13 -0
  167. data/sig/vitable_connect/models/enrollment_status.rbs +16 -0
  168. data/sig/vitable_connect/models/pagination.rbs +30 -0
  169. data/sig/vitable_connect/models/type.rbs +14 -0
  170. data/sig/vitable_connect/models/webhook_event.rbs +45 -0
  171. data/sig/vitable_connect/models/webhook_event_list_deliveries_params.rbs +23 -0
  172. data/sig/vitable_connect/models/webhook_event_list_deliveries_response.rbs +77 -0
  173. data/sig/vitable_connect/models/webhook_event_list_params.rbs +126 -0
  174. data/sig/vitable_connect/models/webhook_event_retrieve_params.rbs +23 -0
  175. data/sig/vitable_connect/models/webhook_event_retrieve_response.rbs +14 -0
  176. data/sig/vitable_connect/models.rbs +51 -0
  177. data/sig/vitable_connect/request_options.rbs +36 -0
  178. data/sig/vitable_connect/resources/auth.rbs +13 -0
  179. data/sig/vitable_connect/resources/benefit_eligibility_policies.rbs +12 -0
  180. data/sig/vitable_connect/resources/employees.rbs +19 -0
  181. data/sig/vitable_connect/resources/employers.rbs +49 -0
  182. data/sig/vitable_connect/resources/enrollments.rbs +12 -0
  183. data/sig/vitable_connect/resources/webhook_events.rbs +28 -0
  184. data/sig/vitable_connect/version.rbs +3 -0
  185. metadata +256 -0
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Resources
5
+ class Employees
6
+ # Retrieves detailed information for a specific employee by ID. Returns employee
7
+ # details including personal information and employment status.
8
+ #
9
+ # @overload retrieve(employee_id, request_options: {})
10
+ #
11
+ # @param employee_id [String] Unique employee identifier (empl\_\*)
12
+ #
13
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
14
+ #
15
+ # @return [VitableConnect::Models::EmployeeRetrieveResponse]
16
+ #
17
+ # @see VitableConnect::Models::EmployeeRetrieveParams
18
+ def retrieve(employee_id, params = {})
19
+ @client.request(
20
+ method: :get,
21
+ path: ["v1/employees/%1$s", employee_id],
22
+ model: VitableConnect::Models::EmployeeRetrieveResponse,
23
+ options: params[:request_options]
24
+ )
25
+ end
26
+
27
+ # Retrieves a paginated list of benefit enrollments for an employee.
28
+ #
29
+ # @overload list_enrollments(employee_id, limit: nil, page: nil, request_options: {})
30
+ #
31
+ # @param employee_id [String] Unique employee identifier (empl\_\*)
32
+ #
33
+ # @param limit [Integer] Items per page (default: 20, max: 100)
34
+ #
35
+ # @param page [Integer] Page number (default: 1)
36
+ #
37
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
38
+ #
39
+ # @return [VitableConnect::Internal::PageNumberPage<VitableConnect::Models::Enrollment>]
40
+ #
41
+ # @see VitableConnect::Models::EmployeeListEnrollmentsParams
42
+ def list_enrollments(employee_id, params = {})
43
+ parsed, options = VitableConnect::EmployeeListEnrollmentsParams.dump_request(params)
44
+ query = VitableConnect::Internal::Util.encode_query_params(parsed)
45
+ @client.request(
46
+ method: :get,
47
+ path: ["v1/employees/%1$s/enrollments", employee_id],
48
+ query: query,
49
+ page: VitableConnect::Internal::PageNumberPage,
50
+ model: VitableConnect::Enrollment,
51
+ options: options
52
+ )
53
+ end
54
+
55
+ # @api private
56
+ #
57
+ # @param client [VitableConnect::Client]
58
+ def initialize(client:)
59
+ @client = client
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,184 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Resources
5
+ class Employers
6
+ # Creates a new employer for the authenticated organization. Requires employer
7
+ # name, legal name, EIN, email, and address information. Returns the created
8
+ # employer with its assigned ID.
9
+ #
10
+ # @overload create(address:, ein:, email:, legal_name:, name:, phone_number: nil, reference_id: nil, request_options: {})
11
+ #
12
+ # @param address [VitableConnect::Models::EmployerCreateParams::Address] Employer address
13
+ #
14
+ # @param ein [String] Employer Identification Number (format: XX-XXXXXXX)
15
+ #
16
+ # @param email [String] Email address for billing and communications
17
+ #
18
+ # @param legal_name [String] Legal business name
19
+ #
20
+ # @param name [String] Employer display name
21
+ #
22
+ # @param phone_number [String, nil] Employer phone number (10-digit US format, e.g. 5551234567)
23
+ #
24
+ # @param reference_id [String, nil] External reference ID for this employer
25
+ #
26
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
27
+ #
28
+ # @return [VitableConnect::Models::EmployerResponse]
29
+ #
30
+ # @see VitableConnect::Models::EmployerCreateParams
31
+ def create(params)
32
+ parsed, options = VitableConnect::EmployerCreateParams.dump_request(params)
33
+ @client.request(
34
+ method: :post,
35
+ path: "v1/employers",
36
+ body: parsed,
37
+ model: VitableConnect::EmployerResponse,
38
+ options: options
39
+ )
40
+ end
41
+
42
+ # Retrieves detailed information for a specific employer by ID. The employer must
43
+ # belong to the authenticated organization.
44
+ #
45
+ # @overload retrieve(employer_id, request_options: {})
46
+ #
47
+ # @param employer_id [String] Unique employer identifier (empr\_\*)
48
+ #
49
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
50
+ #
51
+ # @return [VitableConnect::Models::EmployerResponse]
52
+ #
53
+ # @see VitableConnect::Models::EmployerRetrieveParams
54
+ def retrieve(employer_id, params = {})
55
+ @client.request(
56
+ method: :get,
57
+ path: ["v1/employers/%1$s", employer_id],
58
+ model: VitableConnect::EmployerResponse,
59
+ options: params[:request_options]
60
+ )
61
+ end
62
+
63
+ # Retrieves a paginated list of all employers belonging to the authenticated
64
+ # organization. Results are sorted by creation date (newest first) and paginated
65
+ # using page and limit parameters.
66
+ #
67
+ # @overload list(limit: nil, page: nil, request_options: {})
68
+ #
69
+ # @param limit [Integer] Items per page (default: 20, max: 100)
70
+ #
71
+ # @param page [Integer] Page number (default: 1)
72
+ #
73
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
74
+ #
75
+ # @return [VitableConnect::Internal::PageNumberPage<VitableConnect::Models::Employer>]
76
+ #
77
+ # @see VitableConnect::Models::EmployerListParams
78
+ def list(params = {})
79
+ parsed, options = VitableConnect::EmployerListParams.dump_request(params)
80
+ query = VitableConnect::Internal::Util.encode_query_params(parsed)
81
+ @client.request(
82
+ method: :get,
83
+ path: "v1/employers",
84
+ query: query,
85
+ page: VitableConnect::Internal::PageNumberPage,
86
+ model: VitableConnect::Employer,
87
+ options: options
88
+ )
89
+ end
90
+
91
+ # Some parameter documentations has been truncated, see
92
+ # {VitableConnect::Models::EmployerCreateBenefitEligibilityPolicyParams} for more
93
+ # details.
94
+ #
95
+ # Creates a benefit eligibility policy for the specified employer.
96
+ #
97
+ # @overload create_benefit_eligibility_policy(employer_id, classification:, waiting_period:, request_options: {})
98
+ #
99
+ # @param employer_id [String] Unique employer identifier (empr\_\*)
100
+ #
101
+ # @param classification [String] Which employee classifications are eligible. One of: full_time, part_time, all
102
+ #
103
+ # @param waiting_period [String] Waiting period before eligibility. One of: first_of_following_month, 30_days, 60
104
+ #
105
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
106
+ #
107
+ # @return [VitableConnect::Models::BenefitEligibilityPolicyResponse]
108
+ #
109
+ # @see VitableConnect::Models::EmployerCreateBenefitEligibilityPolicyParams
110
+ def create_benefit_eligibility_policy(employer_id, params)
111
+ parsed, options = VitableConnect::EmployerCreateBenefitEligibilityPolicyParams.dump_request(params)
112
+ @client.request(
113
+ method: :post,
114
+ path: ["v1/employers/%1$s/benefit-eligibility-policies", employer_id],
115
+ body: parsed,
116
+ model: VitableConnect::BenefitEligibilityPolicyResponse,
117
+ options: options
118
+ )
119
+ end
120
+
121
+ # Retrieves a paginated list of all employees for a specific employer. Results are
122
+ # paginated using page and limit parameters.
123
+ #
124
+ # @overload list_employees(employer_id, limit: nil, page: nil, request_options: {})
125
+ #
126
+ # @param employer_id [String] Unique employer identifier (empr\_\*)
127
+ #
128
+ # @param limit [Integer] Items per page (default: 20, max: 100)
129
+ #
130
+ # @param page [Integer] Page number (default: 1)
131
+ #
132
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
133
+ #
134
+ # @return [VitableConnect::Internal::PageNumberPage<VitableConnect::Models::Employee>]
135
+ #
136
+ # @see VitableConnect::Models::EmployerListEmployeesParams
137
+ def list_employees(employer_id, params = {})
138
+ parsed, options = VitableConnect::EmployerListEmployeesParams.dump_request(params)
139
+ query = VitableConnect::Internal::Util.encode_query_params(parsed)
140
+ @client.request(
141
+ method: :get,
142
+ path: ["v1/employers/%1$s/employees", employer_id],
143
+ query: query,
144
+ page: VitableConnect::Internal::PageNumberPage,
145
+ model: VitableConnect::Employee,
146
+ options: options
147
+ )
148
+ end
149
+
150
+ # Submits a census sync payload for the specified employer. The employees in the
151
+ # payload will be queued for processing. Returns an accepted response with the
152
+ # timestamp of acceptance.
153
+ #
154
+ # @overload submit_census_sync(employer_id, employees:, request_options: {})
155
+ #
156
+ # @param employer_id [String] Unique employer identifier (empr\_\*)
157
+ #
158
+ # @param employees [Array<VitableConnect::Models::EmployerSubmitCensusSyncParams::Employee>]
159
+ #
160
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
161
+ #
162
+ # @return [VitableConnect::Models::EmployerSubmitCensusSyncResponse]
163
+ #
164
+ # @see VitableConnect::Models::EmployerSubmitCensusSyncParams
165
+ def submit_census_sync(employer_id, params)
166
+ parsed, options = VitableConnect::EmployerSubmitCensusSyncParams.dump_request(params)
167
+ @client.request(
168
+ method: :post,
169
+ path: ["v1/employers/%1$s/census-sync", employer_id],
170
+ body: parsed,
171
+ model: VitableConnect::Models::EmployerSubmitCensusSyncResponse,
172
+ options: options
173
+ )
174
+ end
175
+
176
+ # @api private
177
+ #
178
+ # @param client [VitableConnect::Client]
179
+ def initialize(client:)
180
+ @client = client
181
+ end
182
+ end
183
+ end
184
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Resources
5
+ # Manage benefit enrollments and elections for employees
6
+ class Enrollments
7
+ # Retrieves detailed information for a specific enrollment by ID.
8
+ #
9
+ # @overload retrieve(enrollment_id, request_options: {})
10
+ #
11
+ # @param enrollment_id [String] Unique enrollment identifier (enrl\_\*)
12
+ #
13
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
14
+ #
15
+ # @return [VitableConnect::Models::EnrollmentRetrieveResponse]
16
+ #
17
+ # @see VitableConnect::Models::EnrollmentRetrieveParams
18
+ def retrieve(enrollment_id, params = {})
19
+ @client.request(
20
+ method: :get,
21
+ path: ["v1/enrollments/%1$s", enrollment_id],
22
+ model: VitableConnect::Models::EnrollmentRetrieveResponse,
23
+ options: params[:request_options]
24
+ )
25
+ end
26
+
27
+ # @api private
28
+ #
29
+ # @param client [VitableConnect::Client]
30
+ def initialize(client:)
31
+ @client = client
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Resources
5
+ class WebhookEvents
6
+ # Retrieves a single webhook event by its prefixed ID. Returns 404 if the event
7
+ # does not exist or belongs to a different organization.
8
+ #
9
+ # @overload retrieve(event_id, request_options: {})
10
+ #
11
+ # @param event_id [String]
12
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
13
+ #
14
+ # @return [VitableConnect::Models::WebhookEventRetrieveResponse]
15
+ #
16
+ # @see VitableConnect::Models::WebhookEventRetrieveParams
17
+ def retrieve(event_id, params = {})
18
+ @client.request(
19
+ method: :get,
20
+ path: ["v1/webhook-events/%1$s", event_id],
21
+ model: VitableConnect::Models::WebhookEventRetrieveResponse,
22
+ options: params[:request_options]
23
+ )
24
+ end
25
+
26
+ # Some parameter documentations has been truncated, see
27
+ # {VitableConnect::Models::WebhookEventListParams} for more details.
28
+ #
29
+ # Retrieves a paginated list of webhook events for the authenticated organization.
30
+ # Supports filtering by event name, resource type, resource ID, and date range.
31
+ #
32
+ # @overload list(created_after: nil, created_before: nil, event_name: nil, limit: nil, page: nil, resource_id: nil, resource_type: nil, request_options: {})
33
+ #
34
+ # @param created_after [Time]
35
+ #
36
+ # @param created_before [Time]
37
+ #
38
+ # @param event_name [Symbol, VitableConnect::Models::WebhookEventListParams::EventName] - `enrollment.accepted` - Enrollment Accepted
39
+ #
40
+ # @param limit [Integer] Items per page (default: 20, max: 100)
41
+ #
42
+ # @param page [Integer] Page number (default: 1)
43
+ #
44
+ # @param resource_id [String]
45
+ #
46
+ # @param resource_type [Symbol, VitableConnect::Models::WebhookEventListParams::ResourceType] - `enrollment` - Enrollment
47
+ #
48
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
49
+ #
50
+ # @return [VitableConnect::Internal::PageNumberPage<VitableConnect::Models::WebhookEvent>]
51
+ #
52
+ # @see VitableConnect::Models::WebhookEventListParams
53
+ def list(params = {})
54
+ parsed, options = VitableConnect::WebhookEventListParams.dump_request(params)
55
+ query = VitableConnect::Internal::Util.encode_query_params(parsed)
56
+ @client.request(
57
+ method: :get,
58
+ path: "v1/webhook-events",
59
+ query: query,
60
+ page: VitableConnect::Internal::PageNumberPage,
61
+ model: VitableConnect::WebhookEvent,
62
+ options: options
63
+ )
64
+ end
65
+
66
+ # Retrieves all delivery attempts for a webhook event. Returns up to 100
67
+ # deliveries. Each delivery includes a computed status field (Pending, In
68
+ # Progress, Delivered, or Failed).
69
+ #
70
+ # @overload list_deliveries(event_id, request_options: {})
71
+ #
72
+ # @param event_id [String]
73
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
74
+ #
75
+ # @return [VitableConnect::Models::WebhookEventListDeliveriesResponse]
76
+ #
77
+ # @see VitableConnect::Models::WebhookEventListDeliveriesParams
78
+ def list_deliveries(event_id, params = {})
79
+ @client.request(
80
+ method: :get,
81
+ path: ["v1/webhook-events/%1$s/deliveries", event_id],
82
+ model: VitableConnect::Models::WebhookEventListDeliveriesResponse,
83
+ options: params[:request_options]
84
+ )
85
+ end
86
+
87
+ # @api private
88
+ #
89
+ # @param client [VitableConnect::Client]
90
+ def initialize(client:)
91
+ @client = client
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Standard libraries.
4
+ # rubocop:disable Lint/RedundantRequireStatement
5
+ require "English"
6
+ require "base64"
7
+ require "cgi"
8
+ require "date"
9
+ require "erb"
10
+ require "etc"
11
+ require "json"
12
+ require "net/http"
13
+ require "openssl"
14
+ require "pathname"
15
+ require "rbconfig"
16
+ require "securerandom"
17
+ require "set"
18
+ require "stringio"
19
+ require "time"
20
+ require "uri"
21
+ # rubocop:enable Lint/RedundantRequireStatement
22
+
23
+ # We already ship the preferred sorbet manifests in the package itself.
24
+ # `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
25
+ if Object.const_defined?(:Tapioca) &&
26
+ caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
27
+ ARGV.none?(/dsl/)
28
+ return
29
+ end
30
+
31
+ # Gems.
32
+ require "connection_pool"
33
+
34
+ # Package files.
35
+ require_relative "vitable_connect/version"
36
+ require_relative "vitable_connect/internal/util"
37
+ require_relative "vitable_connect/internal/type/converter"
38
+ require_relative "vitable_connect/internal/type/unknown"
39
+ require_relative "vitable_connect/internal/type/boolean"
40
+ require_relative "vitable_connect/internal/type/file_input"
41
+ require_relative "vitable_connect/internal/type/enum"
42
+ require_relative "vitable_connect/internal/type/union"
43
+ require_relative "vitable_connect/internal/type/array_of"
44
+ require_relative "vitable_connect/internal/type/hash_of"
45
+ require_relative "vitable_connect/internal/type/base_model"
46
+ require_relative "vitable_connect/internal/type/base_page"
47
+ require_relative "vitable_connect/internal/type/request_parameters"
48
+ require_relative "vitable_connect/internal"
49
+ require_relative "vitable_connect/request_options"
50
+ require_relative "vitable_connect/file_part"
51
+ require_relative "vitable_connect/errors"
52
+ require_relative "vitable_connect/internal/transport/base_client"
53
+ require_relative "vitable_connect/internal/transport/pooled_net_requester"
54
+ require_relative "vitable_connect/client"
55
+ require_relative "vitable_connect/internal/page_number_page"
56
+ require_relative "vitable_connect/models/auth_issue_access_token_params"
57
+ require_relative "vitable_connect/models/auth_issue_access_token_response"
58
+ require_relative "vitable_connect/models/benefit_eligibility_policy"
59
+ require_relative "vitable_connect/models/benefit_eligibility_policy_response"
60
+ require_relative "vitable_connect/models/benefit_eligibility_policy_retrieve_params"
61
+ require_relative "vitable_connect/models/employee"
62
+ require_relative "vitable_connect/models/employee_class"
63
+ require_relative "vitable_connect/models/employee_list_enrollments_params"
64
+ require_relative "vitable_connect/models/employee_retrieve_params"
65
+ require_relative "vitable_connect/models/employee_retrieve_response"
66
+ require_relative "vitable_connect/models/employer"
67
+ require_relative "vitable_connect/models/employer_create_benefit_eligibility_policy_params"
68
+ require_relative "vitable_connect/models/employer_create_params"
69
+ require_relative "vitable_connect/models/employer_list_employees_params"
70
+ require_relative "vitable_connect/models/employer_list_params"
71
+ require_relative "vitable_connect/models/employer_response"
72
+ require_relative "vitable_connect/models/employer_retrieve_params"
73
+ require_relative "vitable_connect/models/employer_submit_census_sync_params"
74
+ require_relative "vitable_connect/models/employer_submit_census_sync_response"
75
+ require_relative "vitable_connect/models/enrollment"
76
+ require_relative "vitable_connect/models/enrollment_retrieve_params"
77
+ require_relative "vitable_connect/models/enrollment_retrieve_response"
78
+ require_relative "vitable_connect/models/enrollment_status"
79
+ require_relative "vitable_connect/models/pagination"
80
+ require_relative "vitable_connect/models/type"
81
+ require_relative "vitable_connect/models/webhook_event"
82
+ require_relative "vitable_connect/models/webhook_event_list_deliveries_params"
83
+ require_relative "vitable_connect/models/webhook_event_list_deliveries_response"
84
+ require_relative "vitable_connect/models/webhook_event_list_params"
85
+ require_relative "vitable_connect/models/webhook_event_retrieve_params"
86
+ require_relative "vitable_connect/models/webhook_event_retrieve_response"
87
+ require_relative "vitable_connect/models"
88
+ require_relative "vitable_connect/resources/auth"
89
+ require_relative "vitable_connect/resources/benefit_eligibility_policies"
90
+ require_relative "vitable_connect/resources/employees"
91
+ require_relative "vitable_connect/resources/employers"
92
+ require_relative "vitable_connect/resources/enrollments"
93
+ require_relative "vitable_connect/resources/webhook_events"
data/manifest.yaml ADDED
@@ -0,0 +1,17 @@
1
+ dependencies:
2
+ - English
3
+ - base64
4
+ - cgi
5
+ - date
6
+ - erb
7
+ - etc
8
+ - json
9
+ - net/http
10
+ - openssl
11
+ - pathname
12
+ - rbconfig
13
+ - securerandom
14
+ - set
15
+ - stringio
16
+ - time
17
+ - uri
@@ -0,0 +1,88 @@
1
+ # typed: strong
2
+
3
+ module VitableConnect
4
+ class Client < VitableConnect::Internal::Transport::BaseClient
5
+ DEFAULT_MAX_RETRIES = 2
6
+
7
+ DEFAULT_TIMEOUT_IN_SECONDS = T.let(60.0, Float)
8
+
9
+ DEFAULT_INITIAL_RETRY_DELAY = T.let(0.5, Float)
10
+
11
+ DEFAULT_MAX_RETRY_DELAY = T.let(8.0, Float)
12
+
13
+ ENVIRONMENTS =
14
+ T.let(
15
+ {
16
+ production: "https://api.vitablehealth.com",
17
+ environment_1: "https://api.uat.vitablehealth.com"
18
+ },
19
+ T::Hash[Symbol, String]
20
+ )
21
+
22
+ # API Key or Access Token authentication using Bearer token in Authorization
23
+ # header. API keys use the vit*apk* prefix, access tokens use the vit*at* prefix.
24
+ sig { returns(String) }
25
+ attr_reader :api_key
26
+
27
+ # Issue short-lived access tokens for scoped API access
28
+ sig { returns(VitableConnect::Resources::Auth) }
29
+ attr_reader :auth
30
+
31
+ # Define rules that determine which employees qualify for benefits
32
+ sig { returns(VitableConnect::Resources::BenefitEligibilityPolicies) }
33
+ attr_reader :benefit_eligibility_policies
34
+
35
+ sig { returns(VitableConnect::Resources::Employees) }
36
+ attr_reader :employees
37
+
38
+ sig { returns(VitableConnect::Resources::Employers) }
39
+ attr_reader :employers
40
+
41
+ # Manage benefit enrollments and elections for employees
42
+ sig { returns(VitableConnect::Resources::Enrollments) }
43
+ attr_reader :enrollments
44
+
45
+ sig { returns(VitableConnect::Resources::WebhookEvents) }
46
+ attr_reader :webhook_events
47
+
48
+ # @api private
49
+ sig { override.returns(T::Hash[String, String]) }
50
+ private def auth_headers
51
+ end
52
+
53
+ # Creates and returns a new client for interacting with the API.
54
+ sig do
55
+ params(
56
+ api_key: T.nilable(String),
57
+ environment: T.nilable(T.any(Symbol, String)),
58
+ base_url: T.nilable(String),
59
+ max_retries: Integer,
60
+ timeout: Float,
61
+ initial_retry_delay: Float,
62
+ max_retry_delay: Float
63
+ ).returns(T.attached_class)
64
+ end
65
+ def self.new(
66
+ # API Key or Access Token authentication using Bearer token in Authorization
67
+ # header. API keys use the vit*apk* prefix, access tokens use the vit*at* prefix.
68
+ # Defaults to `ENV["VITABLE_CONNECT_API_KEY"]`
69
+ api_key: ENV["VITABLE_CONNECT_API_KEY"],
70
+ # Specifies the environment to use for the API.
71
+ #
72
+ # Each environment maps to a different base URL:
73
+ #
74
+ # - `production` corresponds to `https://api.vitablehealth.com`
75
+ # - `environment_1` corresponds to `https://api.uat.vitablehealth.com`
76
+ environment: nil,
77
+ # Override the default base URL for the API, e.g.,
78
+ # `"https://api.example.com/v2/"`. Defaults to `ENV["VITABLE_CONNECT_BASE_URL"]`
79
+ base_url: ENV["VITABLE_CONNECT_BASE_URL"],
80
+ # Max number of retries to attempt after a failed retryable request.
81
+ max_retries: VitableConnect::Client::DEFAULT_MAX_RETRIES,
82
+ timeout: VitableConnect::Client::DEFAULT_TIMEOUT_IN_SECONDS,
83
+ initial_retry_delay: VitableConnect::Client::DEFAULT_INITIAL_RETRY_DELAY,
84
+ max_retry_delay: VitableConnect::Client::DEFAULT_MAX_RETRY_DELAY
85
+ )
86
+ end
87
+ end
88
+ end