vitable-connect 0.4.0 → 0.6.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 (229) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +52 -0
  3. data/README.md +9 -9
  4. data/lib/vitable_connect/client.rb +19 -6
  5. data/lib/vitable_connect/internal/transport/base_client.rb +28 -4
  6. data/lib/vitable_connect/internal/type/enum.rb +13 -9
  7. data/lib/vitable_connect/models/auth_issue_access_token_params.rb +17 -3
  8. data/lib/vitable_connect/models/auth_issue_access_token_response.rb +17 -3
  9. data/lib/vitable_connect/models/employee.rb +98 -30
  10. data/lib/vitable_connect/models/employee_update_params.rb +185 -0
  11. data/lib/vitable_connect/models/employee_update_response.rb +18 -0
  12. data/lib/vitable_connect/models/employer.rb +36 -10
  13. data/lib/vitable_connect/models/employer_ensure_payroll_integration_email_params.rb +22 -0
  14. data/lib/vitable_connect/models/employer_ensure_payroll_integration_email_response.rb +29 -0
  15. data/lib/vitable_connect/models/employer_list_benefit_plan_year_enrollments_params.rb +80 -0
  16. data/lib/vitable_connect/models/employer_list_benefit_plan_year_enrollments_response.rb +175 -0
  17. data/lib/vitable_connect/models/employer_list_benefit_plan_years_params.rb +22 -0
  18. data/lib/vitable_connect/models/employer_list_benefit_plan_years_response.rb +301 -0
  19. data/lib/vitable_connect/models/employer_list_employees_params.rb +28 -1
  20. data/lib/vitable_connect/models/employer_list_hris_providers_params.rb +14 -0
  21. data/lib/vitable_connect/models/employer_list_hris_providers_response.rb +30 -0
  22. data/lib/vitable_connect/models/employer_list_invoices_params.rb +38 -0
  23. data/lib/vitable_connect/models/employer_list_invoices_response.rb +77 -0
  24. data/lib/vitable_connect/models/employer_list_params.rb +118 -5
  25. data/lib/vitable_connect/models/employer_list_payroll_deduction_statements_params.rb +38 -0
  26. data/lib/vitable_connect/models/employer_list_payroll_deduction_statements_response.rb +113 -0
  27. data/lib/vitable_connect/models/employer_list_response.rb +283 -0
  28. data/lib/vitable_connect/models/employer_retrieve_benefit_plan_year_params.rb +30 -0
  29. data/lib/vitable_connect/models/employer_retrieve_benefit_plan_year_response.rb +813 -0
  30. data/lib/vitable_connect/models/employer_retrieve_hris_params.rb +22 -0
  31. data/lib/vitable_connect/models/employer_retrieve_hris_response.rb +55 -0
  32. data/lib/vitable_connect/models/employer_retrieve_invoice_pdf_params.rb +30 -0
  33. data/lib/vitable_connect/models/employer_retrieve_invoice_pdf_response.rb +17 -0
  34. data/lib/vitable_connect/models/employer_retrieve_payroll_access_setup_params.rb +22 -0
  35. data/lib/vitable_connect/models/employer_retrieve_payroll_access_setup_response.rb +35 -0
  36. data/lib/vitable_connect/models/employer_submit_census_sync_params.rb +9 -8
  37. data/lib/vitable_connect/models/employer_submit_payroll_access_setup_params.rb +267 -0
  38. data/lib/vitable_connect/models/employer_submit_payroll_access_setup_response.rb +35 -0
  39. data/lib/vitable_connect/models/employer_update_params.rb +99 -0
  40. data/lib/vitable_connect/models/employer_update_settings_params.rb +9 -9
  41. data/lib/vitable_connect/models/employer_update_settings_response.rb +4 -4
  42. data/lib/vitable_connect/models/enrollment_reissue_params.rb +50 -0
  43. data/lib/vitable_connect/models/enrollment_reissue_response.rb +30 -0
  44. data/lib/vitable_connect/models/enrollment_terminate_params.rb +50 -0
  45. data/lib/vitable_connect/models/group.rb +17 -6
  46. data/lib/vitable_connect/models/groups/members/sync_retrieve_response.rb +74 -3
  47. data/lib/vitable_connect/models/groups/members/sync_submit_params.rb +7 -7
  48. data/lib/vitable_connect/models/member_list_dependents_params.rb +20 -0
  49. data/lib/vitable_connect/models/member_list_dependents_response.rb +132 -0
  50. data/lib/vitable_connect/models/member_list_employments_params.rb +20 -0
  51. data/lib/vitable_connect/models/member_list_employments_response.rb +18 -0
  52. data/lib/vitable_connect/models/member_list_enrollments_params.rb +20 -0
  53. data/lib/vitable_connect/models/member_list_enrollments_response.rb +319 -0
  54. data/lib/vitable_connect/models/member_list_id_cards_params.rb +20 -0
  55. data/lib/vitable_connect/models/member_list_id_cards_response.rb +368 -0
  56. data/lib/vitable_connect/models/member_list_params.rb +38 -0
  57. data/lib/vitable_connect/models/member_list_qualifying_life_events_params.rb +57 -0
  58. data/lib/vitable_connect/models/member_list_qualifying_life_events_response.rb +96 -0
  59. data/lib/vitable_connect/models/member_list_response.rb +108 -0
  60. data/lib/vitable_connect/models/member_retrieve_household_params.rb +20 -0
  61. data/lib/vitable_connect/models/member_retrieve_household_response.rb +128 -0
  62. data/lib/vitable_connect/models/member_retrieve_params.rb +20 -0
  63. data/lib/vitable_connect/models/member_retrieve_response.rb +195 -0
  64. data/lib/vitable_connect/models/organization_create_params.rb +57 -0
  65. data/lib/vitable_connect/models/organization_create_response.rb +104 -0
  66. data/lib/vitable_connect/models/organization_list_params.rb +14 -0
  67. data/lib/vitable_connect/models/organization_list_response.rb +128 -0
  68. data/lib/vitable_connect/models/webhook_event_list_params.rb +3 -3
  69. data/lib/vitable_connect/models.rb +54 -11
  70. data/lib/vitable_connect/resources/employees.rb +49 -3
  71. data/lib/vitable_connect/resources/employers.rb +402 -28
  72. data/lib/vitable_connect/resources/enrollments.rb +75 -0
  73. data/lib/vitable_connect/resources/members.rb +231 -0
  74. data/lib/vitable_connect/resources/organizations.rb +66 -0
  75. data/lib/vitable_connect/version.rb +1 -1
  76. data/lib/vitable_connect.rb +51 -6
  77. data/rbi/vitable_connect/client.rbi +18 -6
  78. data/rbi/vitable_connect/internal/transport/base_client.rbi +4 -1
  79. data/rbi/vitable_connect/models/auth_issue_access_token_params.rbi +53 -5
  80. data/rbi/vitable_connect/models/auth_issue_access_token_response.rbi +51 -5
  81. data/rbi/vitable_connect/models/employee.rbi +138 -37
  82. data/rbi/vitable_connect/models/employee_update_params.rbi +323 -0
  83. data/rbi/vitable_connect/models/employee_update_response.rbi +32 -0
  84. data/rbi/vitable_connect/models/employer.rbi +58 -8
  85. data/rbi/vitable_connect/models/employer_ensure_payroll_integration_email_params.rbi +46 -0
  86. data/rbi/vitable_connect/models/employer_ensure_payroll_integration_email_response.rbi +72 -0
  87. data/rbi/vitable_connect/models/employer_list_benefit_plan_year_enrollments_params.rbi +165 -0
  88. data/rbi/vitable_connect/models/employer_list_benefit_plan_year_enrollments_response.rbi +278 -0
  89. data/rbi/vitable_connect/models/{benefit_eligibility_policy_retrieve_params.rbi → employer_list_benefit_plan_years_params.rbi} +11 -8
  90. data/rbi/vitable_connect/models/employer_list_benefit_plan_years_response.rbi +539 -0
  91. data/rbi/vitable_connect/models/employer_list_employees_params.rbi +70 -0
  92. data/rbi/vitable_connect/models/employer_list_hris_providers_params.rbi +32 -0
  93. data/rbi/vitable_connect/models/employer_list_hris_providers_response.rbi +74 -0
  94. data/rbi/vitable_connect/models/employer_list_invoices_params.rbi +65 -0
  95. data/rbi/vitable_connect/models/employer_list_invoices_response.rbi +151 -0
  96. data/rbi/vitable_connect/models/employer_list_params.rbi +292 -4
  97. data/rbi/vitable_connect/models/{employer_create_benefit_eligibility_policy_params.rbi → employer_list_payroll_deduction_statements_params.rbi} +22 -18
  98. data/rbi/vitable_connect/models/employer_list_payroll_deduction_statements_response.rbi +169 -0
  99. data/rbi/vitable_connect/models/employer_list_response.rbi +426 -0
  100. data/rbi/vitable_connect/models/employer_retrieve_benefit_plan_year_params.rbi +54 -0
  101. data/rbi/vitable_connect/models/employer_retrieve_benefit_plan_year_response.rbi +1574 -0
  102. data/rbi/vitable_connect/models/employer_retrieve_hris_params.rbi +46 -0
  103. data/rbi/vitable_connect/models/employer_retrieve_hris_response.rbi +120 -0
  104. data/rbi/vitable_connect/models/employer_retrieve_invoice_pdf_params.rbi +54 -0
  105. data/rbi/vitable_connect/models/employer_retrieve_invoice_pdf_response.rbi +30 -0
  106. data/rbi/vitable_connect/models/employer_retrieve_payroll_access_setup_params.rbi +46 -0
  107. data/rbi/vitable_connect/models/employer_retrieve_payroll_access_setup_response.rbi +83 -0
  108. data/rbi/vitable_connect/models/employer_submit_census_sync_params.rbi +8 -6
  109. data/rbi/vitable_connect/models/employer_submit_payroll_access_setup_params.rbi +441 -0
  110. data/rbi/vitable_connect/models/employer_submit_payroll_access_setup_response.rbi +83 -0
  111. data/rbi/vitable_connect/models/employer_update_params.rbi +155 -0
  112. data/rbi/vitable_connect/models/employer_update_settings_params.rbi +12 -12
  113. data/rbi/vitable_connect/models/employer_update_settings_response.rbi +6 -6
  114. data/rbi/vitable_connect/models/enrollment_reissue_params.rbi +72 -0
  115. data/rbi/vitable_connect/models/enrollment_reissue_response.rbi +67 -0
  116. data/rbi/vitable_connect/models/enrollment_terminate_params.rbi +72 -0
  117. data/rbi/vitable_connect/models/group.rbi +12 -0
  118. data/rbi/vitable_connect/models/groups/members/sync_retrieve_response.rbi +174 -4
  119. data/rbi/vitable_connect/models/groups/members/sync_submit_params.rbi +9 -9
  120. data/rbi/vitable_connect/models/member_list_dependents_params.rbi +38 -0
  121. data/rbi/vitable_connect/models/member_list_dependents_response.rbi +249 -0
  122. data/rbi/vitable_connect/models/member_list_employments_params.rbi +38 -0
  123. data/rbi/vitable_connect/models/member_list_employments_response.rbi +31 -0
  124. data/rbi/vitable_connect/models/member_list_enrollments_params.rbi +38 -0
  125. data/rbi/vitable_connect/models/member_list_enrollments_response.rbi +579 -0
  126. data/rbi/vitable_connect/models/member_list_id_cards_params.rbi +38 -0
  127. data/rbi/vitable_connect/models/member_list_id_cards_response.rbi +624 -0
  128. data/rbi/vitable_connect/models/member_list_params.rbi +71 -0
  129. data/rbi/vitable_connect/models/member_list_qualifying_life_events_params.rbi +130 -0
  130. data/rbi/vitable_connect/models/member_list_qualifying_life_events_response.rbi +192 -0
  131. data/rbi/vitable_connect/models/member_list_response.rbi +166 -0
  132. data/rbi/vitable_connect/models/member_retrieve_household_params.rbi +38 -0
  133. data/rbi/vitable_connect/models/member_retrieve_household_response.rbi +251 -0
  134. data/rbi/vitable_connect/models/member_retrieve_params.rbi +38 -0
  135. data/rbi/vitable_connect/models/member_retrieve_response.rbi +312 -0
  136. data/rbi/vitable_connect/models/organization_create_params.rbi +127 -0
  137. data/rbi/vitable_connect/models/organization_create_response.rbi +212 -0
  138. data/rbi/vitable_connect/models/organization_list_params.rbi +32 -0
  139. data/rbi/vitable_connect/models/organization_list_response.rbi +266 -0
  140. data/rbi/vitable_connect/models/webhook_event_list_params.rbi +8 -8
  141. data/rbi/vitable_connect/models.rbi +66 -13
  142. data/rbi/vitable_connect/resources/employees.rbi +62 -3
  143. data/rbi/vitable_connect/resources/employers.rbi +373 -24
  144. data/rbi/vitable_connect/resources/enrollments.rbi +61 -0
  145. data/rbi/vitable_connect/resources/members.rbi +169 -0
  146. data/rbi/vitable_connect/resources/organizations.rbi +48 -0
  147. data/rbi/vitable_connect/resources/webhook_events.rbi +1 -1
  148. data/sig/vitable_connect/client.rbs +9 -3
  149. data/sig/vitable_connect/internal/transport/base_client.rbs +2 -0
  150. data/sig/vitable_connect/models/auth_issue_access_token_params.rbs +22 -4
  151. data/sig/vitable_connect/models/auth_issue_access_token_response.rbs +22 -4
  152. data/sig/vitable_connect/models/employee.rbs +65 -18
  153. data/sig/vitable_connect/models/employee_update_params.rbs +140 -0
  154. data/sig/vitable_connect/models/employee_update_response.rbs +13 -0
  155. data/sig/vitable_connect/models/employer.rbs +17 -5
  156. data/sig/vitable_connect/models/employer_ensure_payroll_integration_email_params.rbs +24 -0
  157. data/sig/vitable_connect/models/employer_ensure_payroll_integration_email_response.rbs +30 -0
  158. data/sig/vitable_connect/models/employer_list_benefit_plan_year_enrollments_params.rbs +74 -0
  159. data/sig/vitable_connect/models/employer_list_benefit_plan_year_enrollments_response.rbs +111 -0
  160. data/sig/vitable_connect/models/employer_list_benefit_plan_years_params.rbs +24 -0
  161. data/sig/vitable_connect/models/employer_list_benefit_plan_years_response.rbs +197 -0
  162. data/sig/vitable_connect/models/employer_list_employees_params.rbs +32 -1
  163. data/sig/vitable_connect/models/employer_list_hris_providers_params.rbs +15 -0
  164. data/sig/vitable_connect/models/employer_list_hris_providers_response.rbs +30 -0
  165. data/sig/vitable_connect/models/employer_list_invoices_params.rbs +34 -0
  166. data/sig/vitable_connect/models/employer_list_invoices_response.rbs +62 -0
  167. data/sig/vitable_connect/models/employer_list_params.rbs +94 -1
  168. data/sig/vitable_connect/models/{employer_create_benefit_eligibility_policy_params.rbs → employer_list_payroll_deduction_statements_params.rbs} +13 -9
  169. data/sig/vitable_connect/models/employer_list_payroll_deduction_statements_response.rbs +73 -0
  170. data/sig/vitable_connect/models/employer_list_response.rbs +179 -0
  171. data/sig/vitable_connect/models/employer_retrieve_benefit_plan_year_params.rbs +28 -0
  172. data/sig/vitable_connect/models/employer_retrieve_benefit_plan_year_response.rbs +540 -0
  173. data/sig/vitable_connect/models/employer_retrieve_hris_params.rbs +24 -0
  174. data/sig/vitable_connect/models/employer_retrieve_hris_response.rbs +50 -0
  175. data/sig/vitable_connect/models/employer_retrieve_invoice_pdf_params.rbs +28 -0
  176. data/sig/vitable_connect/models/employer_retrieve_invoice_pdf_response.rbs +13 -0
  177. data/sig/vitable_connect/models/employer_retrieve_payroll_access_setup_params.rbs +24 -0
  178. data/sig/vitable_connect/models/employer_retrieve_payroll_access_setup_response.rbs +32 -0
  179. data/sig/vitable_connect/models/employer_submit_census_sync_params.rbs +5 -5
  180. data/sig/vitable_connect/models/employer_submit_payroll_access_setup_params.rbs +198 -0
  181. data/sig/vitable_connect/models/employer_submit_payroll_access_setup_response.rbs +32 -0
  182. data/sig/vitable_connect/models/employer_update_params.rbs +83 -0
  183. data/sig/vitable_connect/models/enrollment_reissue_params.rbs +41 -0
  184. data/sig/vitable_connect/models/enrollment_reissue_response.rbs +28 -0
  185. data/sig/vitable_connect/models/enrollment_terminate_params.rbs +41 -0
  186. data/sig/vitable_connect/models/groups/members/sync_retrieve_response.rbs +69 -4
  187. data/sig/vitable_connect/models/groups/members/sync_submit_params.rbs +8 -8
  188. data/sig/vitable_connect/models/{benefit_eligibility_policy_retrieve_params.rbs → member_list_dependents_params.rbs} +6 -6
  189. data/sig/vitable_connect/models/member_list_dependents_response.rbs +96 -0
  190. data/sig/vitable_connect/models/member_list_employments_params.rbs +23 -0
  191. data/sig/vitable_connect/models/member_list_employments_response.rbs +14 -0
  192. data/sig/vitable_connect/models/member_list_enrollments_params.rbs +23 -0
  193. data/sig/vitable_connect/models/member_list_enrollments_response.rbs +215 -0
  194. data/sig/vitable_connect/models/member_list_id_cards_params.rbs +23 -0
  195. data/sig/vitable_connect/models/member_list_id_cards_response.rbs +256 -0
  196. data/sig/vitable_connect/models/member_list_params.rbs +38 -0
  197. data/sig/vitable_connect/models/member_list_qualifying_life_events_params.rbs +61 -0
  198. data/sig/vitable_connect/models/member_list_qualifying_life_events_response.rbs +67 -0
  199. data/sig/vitable_connect/models/member_list_response.rbs +82 -0
  200. data/sig/vitable_connect/models/member_retrieve_household_params.rbs +23 -0
  201. data/sig/vitable_connect/models/member_retrieve_household_response.rbs +92 -0
  202. data/sig/vitable_connect/models/member_retrieve_params.rbs +23 -0
  203. data/sig/vitable_connect/models/member_retrieve_response.rbs +143 -0
  204. data/sig/vitable_connect/models/organization_create_params.rbs +52 -0
  205. data/sig/vitable_connect/models/organization_create_response.rbs +77 -0
  206. data/sig/vitable_connect/models/organization_list_params.rbs +15 -0
  207. data/sig/vitable_connect/models/organization_list_response.rbs +99 -0
  208. data/sig/vitable_connect/models/webhook_event_list_params.rbs +2 -2
  209. data/sig/vitable_connect/models.rbs +50 -10
  210. data/sig/vitable_connect/resources/employees.rbs +13 -0
  211. data/sig/vitable_connect/resources/employers.rbs +103 -5
  212. data/sig/vitable_connect/resources/enrollments.rbs +16 -0
  213. data/sig/vitable_connect/resources/members.rbs +52 -0
  214. data/sig/vitable_connect/resources/organizations.rbs +17 -0
  215. metadata +155 -20
  216. data/lib/vitable_connect/models/benefit_eligibility_policy.rb +0 -53
  217. data/lib/vitable_connect/models/benefit_eligibility_policy_response.rb +0 -18
  218. data/lib/vitable_connect/models/benefit_eligibility_policy_retrieve_params.rb +0 -22
  219. data/lib/vitable_connect/models/employer_create_benefit_eligibility_policy_params.rb +0 -43
  220. data/lib/vitable_connect/models/type.rb +0 -17
  221. data/lib/vitable_connect/resources/benefit_eligibility_policies.rb +0 -35
  222. data/rbi/vitable_connect/models/benefit_eligibility_policy.rbi +0 -74
  223. data/rbi/vitable_connect/models/benefit_eligibility_policy_response.rbi +0 -38
  224. data/rbi/vitable_connect/models/type.rbi +0 -21
  225. data/rbi/vitable_connect/resources/benefit_eligibility_policies.rbi +0 -27
  226. data/sig/vitable_connect/models/benefit_eligibility_policy.rbs +0 -50
  227. data/sig/vitable_connect/models/benefit_eligibility_policy_response.rbs +0 -14
  228. data/sig/vitable_connect/models/type.rbs +0 -14
  229. data/sig/vitable_connect/resources/benefit_eligibility_policies.rbs +0 -12
@@ -0,0 +1,1574 @@
1
+ # typed: strong
2
+
3
+ module VitableConnect
4
+ module Models
5
+ class EmployerRetrieveBenefitPlanYearResponse < VitableConnect::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse,
10
+ VitableConnect::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # One plan year, detail view.
15
+ #
16
+ # Standalone (no shared base) so the exact detail payload is readable in one
17
+ # place; the list serializer is a separate class even where fields overlap. Detail
18
+ # carries the SPD link and omits the list-only `is_current` flag.
19
+ sig do
20
+ returns(
21
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data
22
+ )
23
+ end
24
+ attr_reader :data
25
+
26
+ sig do
27
+ params(
28
+ data:
29
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::OrHash
30
+ ).void
31
+ end
32
+ attr_writer :data
33
+
34
+ # Response containing a single employer benefit plan year resource.
35
+ sig do
36
+ params(
37
+ data:
38
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::OrHash
39
+ ).returns(T.attached_class)
40
+ end
41
+ def self.new(
42
+ # One plan year, detail view.
43
+ #
44
+ # Standalone (no shared base) so the exact detail payload is readable in one
45
+ # place; the list serializer is a separate class even where fields overlap. Detail
46
+ # carries the SPD link and omits the list-only `is_current` flag.
47
+ data:
48
+ )
49
+ end
50
+
51
+ sig do
52
+ override.returns(
53
+ {
54
+ data:
55
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data
56
+ }
57
+ )
58
+ end
59
+ def to_hash
60
+ end
61
+
62
+ class Data < VitableConnect::Internal::Type::BaseModel
63
+ OrHash =
64
+ T.type_alias do
65
+ T.any(
66
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data,
67
+ VitableConnect::Internal::AnyHash
68
+ )
69
+ end
70
+
71
+ # Prefixed benefit identifier (`bprd_*`).
72
+ sig { returns(String) }
73
+ attr_accessor :benefit_id
74
+
75
+ # Prefixed plan-year identifier (`plyr_*`).
76
+ sig { returns(String) }
77
+ attr_accessor :benefit_plan_year_id
78
+
79
+ # Carrier name, or null (e.g. ICHRA).
80
+ sig { returns(T.nilable(String)) }
81
+ attr_accessor :carrier
82
+
83
+ # How the plan year prices contributions: exactly one collection is populated,
84
+ # determined by the plan year's `family` (ICHRA vs tier-priced).
85
+ sig do
86
+ returns(
87
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy
88
+ )
89
+ end
90
+ attr_reader :contribution_strategy
91
+
92
+ sig do
93
+ params(
94
+ contribution_strategy:
95
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::OrHash
96
+ ).void
97
+ end
98
+ attr_writer :contribution_strategy
99
+
100
+ # Coverage end.
101
+ sig { returns(T.nilable(Date)) }
102
+ attr_accessor :coverage_end
103
+
104
+ # Coverage start.
105
+ sig { returns(Date) }
106
+ attr_accessor :coverage_start
107
+
108
+ # The plan year's active eligibility policy. Mirrors the internal
109
+ # `PlanYearEligibilityPolicyDTO` but exposes only the public subset (no raw ids,
110
+ # `active_in`, or timestamps).
111
+ sig do
112
+ returns(
113
+ T.nilable(
114
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy
115
+ )
116
+ )
117
+ end
118
+ attr_reader :eligibility_policy
119
+
120
+ sig do
121
+ params(
122
+ eligibility_policy:
123
+ T.nilable(
124
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::OrHash
125
+ )
126
+ ).void
127
+ end
128
+ attr_writer :eligibility_policy
129
+
130
+ # Employee contribution range.
131
+ sig do
132
+ returns(
133
+ T.nilable(
134
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EmployeeContribution
135
+ )
136
+ )
137
+ end
138
+ attr_reader :employee_contribution
139
+
140
+ sig do
141
+ params(
142
+ employee_contribution:
143
+ T.nilable(
144
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EmployeeContribution::OrHash
145
+ )
146
+ ).void
147
+ end
148
+ attr_writer :employee_contribution
149
+
150
+ # Employer contribution range.
151
+ sig do
152
+ returns(
153
+ T.nilable(
154
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EmployerContribution
155
+ )
156
+ )
157
+ end
158
+ attr_reader :employer_contribution
159
+
160
+ sig do
161
+ params(
162
+ employer_contribution:
163
+ T.nilable(
164
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EmployerContribution::OrHash
165
+ )
166
+ ).void
167
+ end
168
+ attr_writer :employer_contribution
169
+
170
+ # Enrolled/eligible rate for this plan year.
171
+ sig do
172
+ returns(
173
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EnrollmentRate
174
+ )
175
+ end
176
+ attr_reader :enrollment_rate
177
+
178
+ sig do
179
+ params(
180
+ enrollment_rate:
181
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EnrollmentRate::OrHash
182
+ ).void
183
+ end
184
+ attr_writer :enrollment_rate
185
+
186
+ # - `mec` - Mec
187
+ # - `mvp` - Mvp
188
+ # - `ichra` - Ichra
189
+ # - `vpc` - Vpc
190
+ # - `dental` - Dental
191
+ # - `vision` - Vision
192
+ sig do
193
+ returns(
194
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family::TaggedSymbol
195
+ )
196
+ end
197
+ attr_accessor :family
198
+
199
+ # Displayed networks: ["multi"] for ICHRA, otherwise the plan year's distinct
200
+ # network names.
201
+ sig { returns(T::Array[String]) }
202
+ attr_accessor :network_names
203
+
204
+ # Distinct offered state codes.
205
+ sig { returns(T::Array[String]) }
206
+ attr_accessor :offered_states
207
+
208
+ # Open-enrollment end.
209
+ sig { returns(T.nilable(Date)) }
210
+ attr_accessor :open_enrollment_end
211
+
212
+ # Open-enrollment start.
213
+ sig { returns(Date) }
214
+ attr_accessor :open_enrollment_start
215
+
216
+ # Monthly premium in cents; only for an ICHRA benefit with effective coverage.
217
+ sig { returns(T.nilable(Integer)) }
218
+ attr_accessor :premium_in_cents
219
+
220
+ # Benefit/product display name.
221
+ sig { returns(String) }
222
+ attr_accessor :product_name
223
+
224
+ # Summary Plan Description (SPD) link, or null.
225
+ sig { returns(T.nilable(String)) }
226
+ attr_accessor :spd_file_url
227
+
228
+ # - `active` - Active
229
+ # - `upcoming` - Upcoming
230
+ # - `open_enrollment` - Open Enrollment
231
+ # - `inactive` - Inactive
232
+ sig do
233
+ returns(
234
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Status::TaggedSymbol
235
+ )
236
+ end
237
+ attr_accessor :status
238
+
239
+ # Calendar coverage year.
240
+ sig { returns(Integer) }
241
+ attr_accessor :year
242
+
243
+ # One plan year, detail view.
244
+ #
245
+ # Standalone (no shared base) so the exact detail payload is readable in one
246
+ # place; the list serializer is a separate class even where fields overlap. Detail
247
+ # carries the SPD link and omits the list-only `is_current` flag.
248
+ sig do
249
+ params(
250
+ benefit_id: String,
251
+ benefit_plan_year_id: String,
252
+ carrier: T.nilable(String),
253
+ contribution_strategy:
254
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::OrHash,
255
+ coverage_end: T.nilable(Date),
256
+ coverage_start: Date,
257
+ eligibility_policy:
258
+ T.nilable(
259
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::OrHash
260
+ ),
261
+ employee_contribution:
262
+ T.nilable(
263
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EmployeeContribution::OrHash
264
+ ),
265
+ employer_contribution:
266
+ T.nilable(
267
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EmployerContribution::OrHash
268
+ ),
269
+ enrollment_rate:
270
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EnrollmentRate::OrHash,
271
+ family:
272
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family::OrSymbol,
273
+ network_names: T::Array[String],
274
+ offered_states: T::Array[String],
275
+ open_enrollment_end: T.nilable(Date),
276
+ open_enrollment_start: Date,
277
+ premium_in_cents: T.nilable(Integer),
278
+ product_name: String,
279
+ spd_file_url: T.nilable(String),
280
+ status:
281
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Status::OrSymbol,
282
+ year: Integer
283
+ ).returns(T.attached_class)
284
+ end
285
+ def self.new(
286
+ # Prefixed benefit identifier (`bprd_*`).
287
+ benefit_id:,
288
+ # Prefixed plan-year identifier (`plyr_*`).
289
+ benefit_plan_year_id:,
290
+ # Carrier name, or null (e.g. ICHRA).
291
+ carrier:,
292
+ # How the plan year prices contributions: exactly one collection is populated,
293
+ # determined by the plan year's `family` (ICHRA vs tier-priced).
294
+ contribution_strategy:,
295
+ # Coverage end.
296
+ coverage_end:,
297
+ # Coverage start.
298
+ coverage_start:,
299
+ # The plan year's active eligibility policy. Mirrors the internal
300
+ # `PlanYearEligibilityPolicyDTO` but exposes only the public subset (no raw ids,
301
+ # `active_in`, or timestamps).
302
+ eligibility_policy:,
303
+ # Employee contribution range.
304
+ employee_contribution:,
305
+ # Employer contribution range.
306
+ employer_contribution:,
307
+ # Enrolled/eligible rate for this plan year.
308
+ enrollment_rate:,
309
+ # - `mec` - Mec
310
+ # - `mvp` - Mvp
311
+ # - `ichra` - Ichra
312
+ # - `vpc` - Vpc
313
+ # - `dental` - Dental
314
+ # - `vision` - Vision
315
+ family:,
316
+ # Displayed networks: ["multi"] for ICHRA, otherwise the plan year's distinct
317
+ # network names.
318
+ network_names:,
319
+ # Distinct offered state codes.
320
+ offered_states:,
321
+ # Open-enrollment end.
322
+ open_enrollment_end:,
323
+ # Open-enrollment start.
324
+ open_enrollment_start:,
325
+ # Monthly premium in cents; only for an ICHRA benefit with effective coverage.
326
+ premium_in_cents:,
327
+ # Benefit/product display name.
328
+ product_name:,
329
+ # Summary Plan Description (SPD) link, or null.
330
+ spd_file_url:,
331
+ # - `active` - Active
332
+ # - `upcoming` - Upcoming
333
+ # - `open_enrollment` - Open Enrollment
334
+ # - `inactive` - Inactive
335
+ status:,
336
+ # Calendar coverage year.
337
+ year:
338
+ )
339
+ end
340
+
341
+ sig do
342
+ override.returns(
343
+ {
344
+ benefit_id: String,
345
+ benefit_plan_year_id: String,
346
+ carrier: T.nilable(String),
347
+ contribution_strategy:
348
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy,
349
+ coverage_end: T.nilable(Date),
350
+ coverage_start: Date,
351
+ eligibility_policy:
352
+ T.nilable(
353
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy
354
+ ),
355
+ employee_contribution:
356
+ T.nilable(
357
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EmployeeContribution
358
+ ),
359
+ employer_contribution:
360
+ T.nilable(
361
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EmployerContribution
362
+ ),
363
+ enrollment_rate:
364
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EnrollmentRate,
365
+ family:
366
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family::TaggedSymbol,
367
+ network_names: T::Array[String],
368
+ offered_states: T::Array[String],
369
+ open_enrollment_end: T.nilable(Date),
370
+ open_enrollment_start: Date,
371
+ premium_in_cents: T.nilable(Integer),
372
+ product_name: String,
373
+ spd_file_url: T.nilable(String),
374
+ status:
375
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Status::TaggedSymbol,
376
+ year: Integer
377
+ }
378
+ )
379
+ end
380
+ def to_hash
381
+ end
382
+
383
+ class ContributionStrategy < VitableConnect::Internal::Type::BaseModel
384
+ OrHash =
385
+ T.type_alias do
386
+ T.any(
387
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy,
388
+ VitableConnect::Internal::AnyHash
389
+ )
390
+ end
391
+
392
+ # Coverage tiers and their costs; empty for ICHRA benefits.
393
+ sig do
394
+ returns(
395
+ T::Array[
396
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::ContributionTier
397
+ ]
398
+ )
399
+ end
400
+ attr_accessor :contribution_tiers
401
+
402
+ # ICHRA contribution classes; empty for tier-priced benefits.
403
+ sig do
404
+ returns(
405
+ T::Array[
406
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass
407
+ ]
408
+ )
409
+ end
410
+ attr_accessor :ichra_contribution_classes
411
+
412
+ # How the plan year prices contributions: exactly one collection is populated,
413
+ # determined by the plan year's `family` (ICHRA vs tier-priced).
414
+ sig do
415
+ params(
416
+ contribution_tiers:
417
+ T::Array[
418
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::ContributionTier::OrHash
419
+ ],
420
+ ichra_contribution_classes:
421
+ T::Array[
422
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::OrHash
423
+ ]
424
+ ).returns(T.attached_class)
425
+ end
426
+ def self.new(
427
+ # Coverage tiers and their costs; empty for ICHRA benefits.
428
+ contribution_tiers:,
429
+ # ICHRA contribution classes; empty for tier-priced benefits.
430
+ ichra_contribution_classes:
431
+ )
432
+ end
433
+
434
+ sig do
435
+ override.returns(
436
+ {
437
+ contribution_tiers:
438
+ T::Array[
439
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::ContributionTier
440
+ ],
441
+ ichra_contribution_classes:
442
+ T::Array[
443
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass
444
+ ]
445
+ }
446
+ )
447
+ end
448
+ def to_hash
449
+ end
450
+
451
+ class ContributionTier < VitableConnect::Internal::Type::BaseModel
452
+ OrHash =
453
+ T.type_alias do
454
+ T.any(
455
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::ContributionTier,
456
+ VitableConnect::Internal::AnyHash
457
+ )
458
+ end
459
+
460
+ # Prefixed benefit-plan identifier (`bpln_*`).
461
+ sig { returns(String) }
462
+ attr_accessor :benefit_plan_id
463
+
464
+ # Benefit plan name.
465
+ sig { returns(String) }
466
+ attr_accessor :benefit_plan_name
467
+
468
+ # Coverage-tier name.
469
+ sig { returns(String) }
470
+ attr_accessor :benefit_plan_tier_name
471
+
472
+ # Monthly employee deduction in cents.
473
+ sig { returns(Integer) }
474
+ attr_accessor :cost
475
+
476
+ # Monthly employee deduction per dependent, in cents.
477
+ sig { returns(Integer) }
478
+ attr_accessor :cost_per_dependent
479
+
480
+ # Whether dependents are required for this tier.
481
+ sig { returns(T::Boolean) }
482
+ attr_accessor :dependents_required_in
483
+
484
+ # Whether a spouse is required for this tier.
485
+ sig { returns(T::Boolean) }
486
+ attr_accessor :spouse_required_in
487
+
488
+ # One non-ICHRA coverage tier, mirroring the internal configuration
489
+ # `CompanyBenefitPlanTierCostDTO` minus the tier-cost id, `pepm` and
490
+ # `pepm_per_dependent`; `benefit_plan_id` is the prefixed `bpln_*` form rather
491
+ # than a raw UUID.
492
+ sig do
493
+ params(
494
+ benefit_plan_id: String,
495
+ benefit_plan_name: String,
496
+ benefit_plan_tier_name: String,
497
+ cost: Integer,
498
+ cost_per_dependent: Integer,
499
+ dependents_required_in: T::Boolean,
500
+ spouse_required_in: T::Boolean
501
+ ).returns(T.attached_class)
502
+ end
503
+ def self.new(
504
+ # Prefixed benefit-plan identifier (`bpln_*`).
505
+ benefit_plan_id:,
506
+ # Benefit plan name.
507
+ benefit_plan_name:,
508
+ # Coverage-tier name.
509
+ benefit_plan_tier_name:,
510
+ # Monthly employee deduction in cents.
511
+ cost:,
512
+ # Monthly employee deduction per dependent, in cents.
513
+ cost_per_dependent:,
514
+ # Whether dependents are required for this tier.
515
+ dependents_required_in:,
516
+ # Whether a spouse is required for this tier.
517
+ spouse_required_in:
518
+ )
519
+ end
520
+
521
+ sig do
522
+ override.returns(
523
+ {
524
+ benefit_plan_id: String,
525
+ benefit_plan_name: String,
526
+ benefit_plan_tier_name: String,
527
+ cost: Integer,
528
+ cost_per_dependent: Integer,
529
+ dependents_required_in: T::Boolean,
530
+ spouse_required_in: T::Boolean
531
+ }
532
+ )
533
+ end
534
+ def to_hash
535
+ end
536
+ end
537
+
538
+ class IchraContributionClass < VitableConnect::Internal::Type::BaseModel
539
+ OrHash =
540
+ T.type_alias do
541
+ T.any(
542
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass,
543
+ VitableConnect::Internal::AnyHash
544
+ )
545
+ end
546
+
547
+ # Monthly allowance in cents.
548
+ sig { returns(Integer) }
549
+ attr_accessor :amount_in_cents
550
+
551
+ # - `Unspecified` - Unspecified
552
+ # - `Salary` - Salary
553
+ # - `Hourly` - Hourly
554
+ sig do
555
+ returns(
556
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Compensation::TaggedSymbol
557
+ )
558
+ end
559
+ attr_accessor :compensation
560
+
561
+ # Prefixed contribution-class identifier (`iccl_*`).
562
+ sig { returns(String) }
563
+ attr_accessor :contribution_class_id
564
+
565
+ # - `Unspecified` - Unspecified
566
+ # - `Full Time` - Full Time
567
+ # - `Part Time` - Part Time
568
+ # - `Temporary` - Temporary
569
+ # - `Seasonal` - Seasonal
570
+ sig do
571
+ returns(
572
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Employment::TaggedSymbol
573
+ )
574
+ end
575
+ attr_accessor :employment
576
+
577
+ # - `Unspecified` - Unspecified
578
+ # - `EE` - Ee
579
+ # - `ES` - Es
580
+ # - `EC` - Ec
581
+ # - `EF` - Ef
582
+ sig do
583
+ returns(
584
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::FamilyStatus::TaggedSymbol
585
+ )
586
+ end
587
+ attr_accessor :family_status
588
+
589
+ # - `Unspecified` - Unspecified
590
+ # - `State` - State
591
+ sig do
592
+ returns(
593
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Location::TaggedSymbol
594
+ )
595
+ end
596
+ attr_accessor :location
597
+
598
+ # Location matcher value (CSV of state codes), or null.
599
+ sig { returns(T.nilable(String)) }
600
+ attr_accessor :location_value
601
+
602
+ # Age-band upper bound, or null.
603
+ sig { returns(T.nilable(Integer)) }
604
+ attr_accessor :max_age
605
+
606
+ # Age-band lower bound, or null.
607
+ sig { returns(T.nilable(Integer)) }
608
+ attr_accessor :min_age
609
+
610
+ # One ICHRA contribution class, mirroring the internal configuration endpoint's
611
+ # `IchraContributionClassConfigurationEntitySerializer` field-for-field. Two
612
+ # deliberate differences for the public surface: the identifier is the opaque
613
+ # prefixed `iccl_*` form rather than a raw UUID, and the matcher choices come from
614
+ # the domain enums rather than the model's.
615
+ sig do
616
+ params(
617
+ amount_in_cents: Integer,
618
+ compensation:
619
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Compensation::OrSymbol,
620
+ contribution_class_id: String,
621
+ employment:
622
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Employment::OrSymbol,
623
+ family_status:
624
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::FamilyStatus::OrSymbol,
625
+ location:
626
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Location::OrSymbol,
627
+ location_value: T.nilable(String),
628
+ max_age: T.nilable(Integer),
629
+ min_age: T.nilable(Integer)
630
+ ).returns(T.attached_class)
631
+ end
632
+ def self.new(
633
+ # Monthly allowance in cents.
634
+ amount_in_cents:,
635
+ # - `Unspecified` - Unspecified
636
+ # - `Salary` - Salary
637
+ # - `Hourly` - Hourly
638
+ compensation:,
639
+ # Prefixed contribution-class identifier (`iccl_*`).
640
+ contribution_class_id:,
641
+ # - `Unspecified` - Unspecified
642
+ # - `Full Time` - Full Time
643
+ # - `Part Time` - Part Time
644
+ # - `Temporary` - Temporary
645
+ # - `Seasonal` - Seasonal
646
+ employment:,
647
+ # - `Unspecified` - Unspecified
648
+ # - `EE` - Ee
649
+ # - `ES` - Es
650
+ # - `EC` - Ec
651
+ # - `EF` - Ef
652
+ family_status:,
653
+ # - `Unspecified` - Unspecified
654
+ # - `State` - State
655
+ location:,
656
+ # Location matcher value (CSV of state codes), or null.
657
+ location_value:,
658
+ # Age-band upper bound, or null.
659
+ max_age:,
660
+ # Age-band lower bound, or null.
661
+ min_age:
662
+ )
663
+ end
664
+
665
+ sig do
666
+ override.returns(
667
+ {
668
+ amount_in_cents: Integer,
669
+ compensation:
670
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Compensation::TaggedSymbol,
671
+ contribution_class_id: String,
672
+ employment:
673
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Employment::TaggedSymbol,
674
+ family_status:
675
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::FamilyStatus::TaggedSymbol,
676
+ location:
677
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Location::TaggedSymbol,
678
+ location_value: T.nilable(String),
679
+ max_age: T.nilable(Integer),
680
+ min_age: T.nilable(Integer)
681
+ }
682
+ )
683
+ end
684
+ def to_hash
685
+ end
686
+
687
+ # - `Unspecified` - Unspecified
688
+ # - `Salary` - Salary
689
+ # - `Hourly` - Hourly
690
+ module Compensation
691
+ extend VitableConnect::Internal::Type::Enum
692
+
693
+ TaggedSymbol =
694
+ T.type_alias do
695
+ T.all(
696
+ Symbol,
697
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Compensation
698
+ )
699
+ end
700
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
701
+
702
+ UNSPECIFIED =
703
+ T.let(
704
+ :Unspecified,
705
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Compensation::TaggedSymbol
706
+ )
707
+ SALARY =
708
+ T.let(
709
+ :Salary,
710
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Compensation::TaggedSymbol
711
+ )
712
+ HOURLY =
713
+ T.let(
714
+ :Hourly,
715
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Compensation::TaggedSymbol
716
+ )
717
+
718
+ sig do
719
+ override.returns(
720
+ T::Array[
721
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Compensation::TaggedSymbol
722
+ ]
723
+ )
724
+ end
725
+ def self.values
726
+ end
727
+ end
728
+
729
+ # - `Unspecified` - Unspecified
730
+ # - `Full Time` - Full Time
731
+ # - `Part Time` - Part Time
732
+ # - `Temporary` - Temporary
733
+ # - `Seasonal` - Seasonal
734
+ module Employment
735
+ extend VitableConnect::Internal::Type::Enum
736
+
737
+ TaggedSymbol =
738
+ T.type_alias do
739
+ T.all(
740
+ Symbol,
741
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Employment
742
+ )
743
+ end
744
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
745
+
746
+ UNSPECIFIED =
747
+ T.let(
748
+ :Unspecified,
749
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Employment::TaggedSymbol
750
+ )
751
+ FULL_TIME =
752
+ T.let(
753
+ :"Full Time",
754
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Employment::TaggedSymbol
755
+ )
756
+ PART_TIME =
757
+ T.let(
758
+ :"Part Time",
759
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Employment::TaggedSymbol
760
+ )
761
+ TEMPORARY =
762
+ T.let(
763
+ :Temporary,
764
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Employment::TaggedSymbol
765
+ )
766
+ SEASONAL =
767
+ T.let(
768
+ :Seasonal,
769
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Employment::TaggedSymbol
770
+ )
771
+
772
+ sig do
773
+ override.returns(
774
+ T::Array[
775
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Employment::TaggedSymbol
776
+ ]
777
+ )
778
+ end
779
+ def self.values
780
+ end
781
+ end
782
+
783
+ # - `Unspecified` - Unspecified
784
+ # - `EE` - Ee
785
+ # - `ES` - Es
786
+ # - `EC` - Ec
787
+ # - `EF` - Ef
788
+ module FamilyStatus
789
+ extend VitableConnect::Internal::Type::Enum
790
+
791
+ TaggedSymbol =
792
+ T.type_alias do
793
+ T.all(
794
+ Symbol,
795
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::FamilyStatus
796
+ )
797
+ end
798
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
799
+
800
+ UNSPECIFIED =
801
+ T.let(
802
+ :Unspecified,
803
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::FamilyStatus::TaggedSymbol
804
+ )
805
+ EE =
806
+ T.let(
807
+ :EE,
808
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::FamilyStatus::TaggedSymbol
809
+ )
810
+ ES =
811
+ T.let(
812
+ :ES,
813
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::FamilyStatus::TaggedSymbol
814
+ )
815
+ EC =
816
+ T.let(
817
+ :EC,
818
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::FamilyStatus::TaggedSymbol
819
+ )
820
+ EF =
821
+ T.let(
822
+ :EF,
823
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::FamilyStatus::TaggedSymbol
824
+ )
825
+
826
+ sig do
827
+ override.returns(
828
+ T::Array[
829
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::FamilyStatus::TaggedSymbol
830
+ ]
831
+ )
832
+ end
833
+ def self.values
834
+ end
835
+ end
836
+
837
+ # - `Unspecified` - Unspecified
838
+ # - `State` - State
839
+ module Location
840
+ extend VitableConnect::Internal::Type::Enum
841
+
842
+ TaggedSymbol =
843
+ T.type_alias do
844
+ T.all(
845
+ Symbol,
846
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Location
847
+ )
848
+ end
849
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
850
+
851
+ UNSPECIFIED =
852
+ T.let(
853
+ :Unspecified,
854
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Location::TaggedSymbol
855
+ )
856
+ STATE =
857
+ T.let(
858
+ :State,
859
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Location::TaggedSymbol
860
+ )
861
+
862
+ sig do
863
+ override.returns(
864
+ T::Array[
865
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::ContributionStrategy::IchraContributionClass::Location::TaggedSymbol
866
+ ]
867
+ )
868
+ end
869
+ def self.values
870
+ end
871
+ end
872
+ end
873
+ end
874
+
875
+ class EligibilityPolicy < VitableConnect::Internal::Type::BaseModel
876
+ OrHash =
877
+ T.type_alias do
878
+ T.any(
879
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy,
880
+ VitableConnect::Internal::AnyHash
881
+ )
882
+ end
883
+
884
+ # Eligibility rules; never empty for a valid policy.
885
+ sig do
886
+ returns(
887
+ T::Array[
888
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule
889
+ ]
890
+ )
891
+ end
892
+ attr_accessor :rules
893
+
894
+ # Months of continued coverage; set only when `termination_rule` is
895
+ # `END_OF_N_MONTHS`.
896
+ sig { returns(T.nilable(Integer)) }
897
+ attr_accessor :termination_n_months
898
+
899
+ # - `END_OF_N_MONTHS` - End Of N Months
900
+ # - `END_OF_PLAN_YEAR` - End Of Plan Year
901
+ sig do
902
+ returns(
903
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::TerminationRule::TaggedSymbol
904
+ )
905
+ end
906
+ attr_accessor :termination_rule
907
+
908
+ # - `FIRST_OF_FOLLOWING_MONTH` - First Of Following Month
909
+ # - `THIRTY_DAYS` - Thirty Days
910
+ # - `SIXTY_DAYS` - Sixty Days
911
+ sig do
912
+ returns(
913
+ T.nilable(
914
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::WaitingPeriod::TaggedSymbol
915
+ )
916
+ )
917
+ end
918
+ attr_accessor :waiting_period
919
+
920
+ # The plan year's active eligibility policy. Mirrors the internal
921
+ # `PlanYearEligibilityPolicyDTO` but exposes only the public subset (no raw ids,
922
+ # `active_in`, or timestamps).
923
+ sig do
924
+ params(
925
+ rules:
926
+ T::Array[
927
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::OrHash
928
+ ],
929
+ termination_n_months: T.nilable(Integer),
930
+ termination_rule:
931
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::TerminationRule::OrSymbol,
932
+ waiting_period:
933
+ T.nilable(
934
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::WaitingPeriod::OrSymbol
935
+ )
936
+ ).returns(T.attached_class)
937
+ end
938
+ def self.new(
939
+ # Eligibility rules; never empty for a valid policy.
940
+ rules:,
941
+ # Months of continued coverage; set only when `termination_rule` is
942
+ # `END_OF_N_MONTHS`.
943
+ termination_n_months:,
944
+ # - `END_OF_N_MONTHS` - End Of N Months
945
+ # - `END_OF_PLAN_YEAR` - End Of Plan Year
946
+ termination_rule:,
947
+ # - `FIRST_OF_FOLLOWING_MONTH` - First Of Following Month
948
+ # - `THIRTY_DAYS` - Thirty Days
949
+ # - `SIXTY_DAYS` - Sixty Days
950
+ waiting_period:
951
+ )
952
+ end
953
+
954
+ sig do
955
+ override.returns(
956
+ {
957
+ rules:
958
+ T::Array[
959
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule
960
+ ],
961
+ termination_n_months: T.nilable(Integer),
962
+ termination_rule:
963
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::TerminationRule::TaggedSymbol,
964
+ waiting_period:
965
+ T.nilable(
966
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::WaitingPeriod::TaggedSymbol
967
+ )
968
+ }
969
+ )
970
+ end
971
+ def to_hash
972
+ end
973
+
974
+ class Rule < VitableConnect::Internal::Type::BaseModel
975
+ OrHash =
976
+ T.type_alias do
977
+ T.any(
978
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule,
979
+ VitableConnect::Internal::AnyHash
980
+ )
981
+ end
982
+
983
+ # - `Salary` - Salary
984
+ # - `Hourly` - Hourly
985
+ # - `All` - All
986
+ sig do
987
+ returns(
988
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::CompensationType::TaggedSymbol
989
+ )
990
+ end
991
+ attr_accessor :compensation_type
992
+
993
+ # Geographic matcher.
994
+ sig do
995
+ returns(
996
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation
997
+ )
998
+ end
999
+ attr_reader :eligible_geographical_location
1000
+
1001
+ sig do
1002
+ params(
1003
+ eligible_geographical_location:
1004
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation::OrHash
1005
+ ).void
1006
+ end
1007
+ attr_writer :eligible_geographical_location
1008
+
1009
+ # - `Full Time` - Full Time
1010
+ # - `Part Time` - Part Time
1011
+ # - `Temporary` - Temporary
1012
+ # - `Intern` - Intern
1013
+ # - `Seasonal` - Seasonal
1014
+ # - `Individual Contractor` - Individual Contractor
1015
+ # - `All` - All
1016
+ sig do
1017
+ returns(
1018
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::TaggedSymbol
1019
+ )
1020
+ end
1021
+ attr_accessor :employee_class
1022
+
1023
+ # One eligibility rule — the workforce slice it makes eligible. Mirrors the
1024
+ # internal `PlanYearEligibilityPolicyRuleDTO` minus the raw ids and timestamps.
1025
+ sig do
1026
+ params(
1027
+ compensation_type:
1028
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::CompensationType::OrSymbol,
1029
+ eligible_geographical_location:
1030
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation::OrHash,
1031
+ employee_class:
1032
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::OrSymbol
1033
+ ).returns(T.attached_class)
1034
+ end
1035
+ def self.new(
1036
+ # - `Salary` - Salary
1037
+ # - `Hourly` - Hourly
1038
+ # - `All` - All
1039
+ compensation_type:,
1040
+ # Geographic matcher.
1041
+ eligible_geographical_location:,
1042
+ # - `Full Time` - Full Time
1043
+ # - `Part Time` - Part Time
1044
+ # - `Temporary` - Temporary
1045
+ # - `Intern` - Intern
1046
+ # - `Seasonal` - Seasonal
1047
+ # - `Individual Contractor` - Individual Contractor
1048
+ # - `All` - All
1049
+ employee_class:
1050
+ )
1051
+ end
1052
+
1053
+ sig do
1054
+ override.returns(
1055
+ {
1056
+ compensation_type:
1057
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::CompensationType::TaggedSymbol,
1058
+ eligible_geographical_location:
1059
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation,
1060
+ employee_class:
1061
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::TaggedSymbol
1062
+ }
1063
+ )
1064
+ end
1065
+ def to_hash
1066
+ end
1067
+
1068
+ # - `Salary` - Salary
1069
+ # - `Hourly` - Hourly
1070
+ # - `All` - All
1071
+ module CompensationType
1072
+ extend VitableConnect::Internal::Type::Enum
1073
+
1074
+ TaggedSymbol =
1075
+ T.type_alias do
1076
+ T.all(
1077
+ Symbol,
1078
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::CompensationType
1079
+ )
1080
+ end
1081
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1082
+
1083
+ SALARY =
1084
+ T.let(
1085
+ :Salary,
1086
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::CompensationType::TaggedSymbol
1087
+ )
1088
+ HOURLY =
1089
+ T.let(
1090
+ :Hourly,
1091
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::CompensationType::TaggedSymbol
1092
+ )
1093
+ ALL =
1094
+ T.let(
1095
+ :All,
1096
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::CompensationType::TaggedSymbol
1097
+ )
1098
+
1099
+ sig do
1100
+ override.returns(
1101
+ T::Array[
1102
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::CompensationType::TaggedSymbol
1103
+ ]
1104
+ )
1105
+ end
1106
+ def self.values
1107
+ end
1108
+ end
1109
+
1110
+ class EligibleGeographicalLocation < VitableConnect::Internal::Type::BaseModel
1111
+ OrHash =
1112
+ T.type_alias do
1113
+ T.any(
1114
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation,
1115
+ VitableConnect::Internal::AnyHash
1116
+ )
1117
+ end
1118
+
1119
+ # States the rule is restricted to; empty when `type` is `All`.
1120
+ sig { returns(T::Array[String]) }
1121
+ attr_accessor :state_codes
1122
+
1123
+ # - `All` - All
1124
+ # - `StateCodes` - State Codes
1125
+ sig do
1126
+ returns(
1127
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation::Type::TaggedSymbol
1128
+ )
1129
+ end
1130
+ attr_accessor :type
1131
+
1132
+ # Geographic matcher.
1133
+ sig do
1134
+ params(
1135
+ state_codes: T::Array[String],
1136
+ type:
1137
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation::Type::OrSymbol
1138
+ ).returns(T.attached_class)
1139
+ end
1140
+ def self.new(
1141
+ # States the rule is restricted to; empty when `type` is `All`.
1142
+ state_codes:,
1143
+ # - `All` - All
1144
+ # - `StateCodes` - State Codes
1145
+ type:
1146
+ )
1147
+ end
1148
+
1149
+ sig do
1150
+ override.returns(
1151
+ {
1152
+ state_codes: T::Array[String],
1153
+ type:
1154
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation::Type::TaggedSymbol
1155
+ }
1156
+ )
1157
+ end
1158
+ def to_hash
1159
+ end
1160
+
1161
+ # - `All` - All
1162
+ # - `StateCodes` - State Codes
1163
+ module Type
1164
+ extend VitableConnect::Internal::Type::Enum
1165
+
1166
+ TaggedSymbol =
1167
+ T.type_alias do
1168
+ T.all(
1169
+ Symbol,
1170
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation::Type
1171
+ )
1172
+ end
1173
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1174
+
1175
+ ALL =
1176
+ T.let(
1177
+ :All,
1178
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation::Type::TaggedSymbol
1179
+ )
1180
+ STATE_CODES =
1181
+ T.let(
1182
+ :StateCodes,
1183
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation::Type::TaggedSymbol
1184
+ )
1185
+
1186
+ sig do
1187
+ override.returns(
1188
+ T::Array[
1189
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EligibleGeographicalLocation::Type::TaggedSymbol
1190
+ ]
1191
+ )
1192
+ end
1193
+ def self.values
1194
+ end
1195
+ end
1196
+ end
1197
+
1198
+ # - `Full Time` - Full Time
1199
+ # - `Part Time` - Part Time
1200
+ # - `Temporary` - Temporary
1201
+ # - `Intern` - Intern
1202
+ # - `Seasonal` - Seasonal
1203
+ # - `Individual Contractor` - Individual Contractor
1204
+ # - `All` - All
1205
+ module EmployeeClass
1206
+ extend VitableConnect::Internal::Type::Enum
1207
+
1208
+ TaggedSymbol =
1209
+ T.type_alias do
1210
+ T.all(
1211
+ Symbol,
1212
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass
1213
+ )
1214
+ end
1215
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1216
+
1217
+ FULL_TIME =
1218
+ T.let(
1219
+ :"Full Time",
1220
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::TaggedSymbol
1221
+ )
1222
+ PART_TIME =
1223
+ T.let(
1224
+ :"Part Time",
1225
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::TaggedSymbol
1226
+ )
1227
+ TEMPORARY =
1228
+ T.let(
1229
+ :Temporary,
1230
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::TaggedSymbol
1231
+ )
1232
+ INTERN =
1233
+ T.let(
1234
+ :Intern,
1235
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::TaggedSymbol
1236
+ )
1237
+ SEASONAL =
1238
+ T.let(
1239
+ :Seasonal,
1240
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::TaggedSymbol
1241
+ )
1242
+ INDIVIDUAL_CONTRACTOR =
1243
+ T.let(
1244
+ :"Individual Contractor",
1245
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::TaggedSymbol
1246
+ )
1247
+ ALL =
1248
+ T.let(
1249
+ :All,
1250
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::TaggedSymbol
1251
+ )
1252
+
1253
+ sig do
1254
+ override.returns(
1255
+ T::Array[
1256
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::Rule::EmployeeClass::TaggedSymbol
1257
+ ]
1258
+ )
1259
+ end
1260
+ def self.values
1261
+ end
1262
+ end
1263
+ end
1264
+
1265
+ # - `END_OF_N_MONTHS` - End Of N Months
1266
+ # - `END_OF_PLAN_YEAR` - End Of Plan Year
1267
+ module TerminationRule
1268
+ extend VitableConnect::Internal::Type::Enum
1269
+
1270
+ TaggedSymbol =
1271
+ T.type_alias do
1272
+ T.all(
1273
+ Symbol,
1274
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::TerminationRule
1275
+ )
1276
+ end
1277
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1278
+
1279
+ END_OF_N_MONTHS =
1280
+ T.let(
1281
+ :END_OF_N_MONTHS,
1282
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::TerminationRule::TaggedSymbol
1283
+ )
1284
+ END_OF_PLAN_YEAR =
1285
+ T.let(
1286
+ :END_OF_PLAN_YEAR,
1287
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::TerminationRule::TaggedSymbol
1288
+ )
1289
+
1290
+ sig do
1291
+ override.returns(
1292
+ T::Array[
1293
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::TerminationRule::TaggedSymbol
1294
+ ]
1295
+ )
1296
+ end
1297
+ def self.values
1298
+ end
1299
+ end
1300
+
1301
+ # - `FIRST_OF_FOLLOWING_MONTH` - First Of Following Month
1302
+ # - `THIRTY_DAYS` - Thirty Days
1303
+ # - `SIXTY_DAYS` - Sixty Days
1304
+ module WaitingPeriod
1305
+ extend VitableConnect::Internal::Type::Enum
1306
+
1307
+ TaggedSymbol =
1308
+ T.type_alias do
1309
+ T.all(
1310
+ Symbol,
1311
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::WaitingPeriod
1312
+ )
1313
+ end
1314
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1315
+
1316
+ FIRST_OF_FOLLOWING_MONTH =
1317
+ T.let(
1318
+ :FIRST_OF_FOLLOWING_MONTH,
1319
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::WaitingPeriod::TaggedSymbol
1320
+ )
1321
+ THIRTY_DAYS =
1322
+ T.let(
1323
+ :THIRTY_DAYS,
1324
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::WaitingPeriod::TaggedSymbol
1325
+ )
1326
+ SIXTY_DAYS =
1327
+ T.let(
1328
+ :SIXTY_DAYS,
1329
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::WaitingPeriod::TaggedSymbol
1330
+ )
1331
+
1332
+ sig do
1333
+ override.returns(
1334
+ T::Array[
1335
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EligibilityPolicy::WaitingPeriod::TaggedSymbol
1336
+ ]
1337
+ )
1338
+ end
1339
+ def self.values
1340
+ end
1341
+ end
1342
+ end
1343
+
1344
+ class EmployeeContribution < VitableConnect::Internal::Type::BaseModel
1345
+ OrHash =
1346
+ T.type_alias do
1347
+ T.any(
1348
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EmployeeContribution,
1349
+ VitableConnect::Internal::AnyHash
1350
+ )
1351
+ end
1352
+
1353
+ # Highest per-tier contribution in cents.
1354
+ sig { returns(Integer) }
1355
+ attr_accessor :max_cents
1356
+
1357
+ # Lowest per-tier contribution in cents.
1358
+ sig { returns(Integer) }
1359
+ attr_accessor :min_cents
1360
+
1361
+ # Employee contribution range.
1362
+ sig do
1363
+ params(max_cents: Integer, min_cents: Integer).returns(
1364
+ T.attached_class
1365
+ )
1366
+ end
1367
+ def self.new(
1368
+ # Highest per-tier contribution in cents.
1369
+ max_cents:,
1370
+ # Lowest per-tier contribution in cents.
1371
+ min_cents:
1372
+ )
1373
+ end
1374
+
1375
+ sig { override.returns({ max_cents: Integer, min_cents: Integer }) }
1376
+ def to_hash
1377
+ end
1378
+ end
1379
+
1380
+ class EmployerContribution < VitableConnect::Internal::Type::BaseModel
1381
+ OrHash =
1382
+ T.type_alias do
1383
+ T.any(
1384
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EmployerContribution,
1385
+ VitableConnect::Internal::AnyHash
1386
+ )
1387
+ end
1388
+
1389
+ # Highest per-tier contribution in cents.
1390
+ sig { returns(Integer) }
1391
+ attr_accessor :max_cents
1392
+
1393
+ # Lowest per-tier contribution in cents.
1394
+ sig { returns(Integer) }
1395
+ attr_accessor :min_cents
1396
+
1397
+ # Employer contribution range.
1398
+ sig do
1399
+ params(max_cents: Integer, min_cents: Integer).returns(
1400
+ T.attached_class
1401
+ )
1402
+ end
1403
+ def self.new(
1404
+ # Highest per-tier contribution in cents.
1405
+ max_cents:,
1406
+ # Lowest per-tier contribution in cents.
1407
+ min_cents:
1408
+ )
1409
+ end
1410
+
1411
+ sig { override.returns({ max_cents: Integer, min_cents: Integer }) }
1412
+ def to_hash
1413
+ end
1414
+ end
1415
+
1416
+ class EnrollmentRate < VitableConnect::Internal::Type::BaseModel
1417
+ OrHash =
1418
+ T.type_alias do
1419
+ T.any(
1420
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::EnrollmentRate,
1421
+ VitableConnect::Internal::AnyHash
1422
+ )
1423
+ end
1424
+
1425
+ # Employees eligible for this plan year.
1426
+ sig { returns(Integer) }
1427
+ attr_accessor :eligible
1428
+
1429
+ # Employees enrolled in this plan year.
1430
+ sig { returns(Integer) }
1431
+ attr_accessor :enrolled
1432
+
1433
+ # `enrolled / eligible` whole-number percent (0 when none).
1434
+ sig { returns(Integer) }
1435
+ attr_accessor :percentage
1436
+
1437
+ # Enrolled/eligible rate for this plan year.
1438
+ sig do
1439
+ params(
1440
+ eligible: Integer,
1441
+ enrolled: Integer,
1442
+ percentage: Integer
1443
+ ).returns(T.attached_class)
1444
+ end
1445
+ def self.new(
1446
+ # Employees eligible for this plan year.
1447
+ eligible:,
1448
+ # Employees enrolled in this plan year.
1449
+ enrolled:,
1450
+ # `enrolled / eligible` whole-number percent (0 when none).
1451
+ percentage:
1452
+ )
1453
+ end
1454
+
1455
+ sig do
1456
+ override.returns(
1457
+ { eligible: Integer, enrolled: Integer, percentage: Integer }
1458
+ )
1459
+ end
1460
+ def to_hash
1461
+ end
1462
+ end
1463
+
1464
+ # - `mec` - Mec
1465
+ # - `mvp` - Mvp
1466
+ # - `ichra` - Ichra
1467
+ # - `vpc` - Vpc
1468
+ # - `dental` - Dental
1469
+ # - `vision` - Vision
1470
+ module Family
1471
+ extend VitableConnect::Internal::Type::Enum
1472
+
1473
+ TaggedSymbol =
1474
+ T.type_alias do
1475
+ T.all(
1476
+ Symbol,
1477
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family
1478
+ )
1479
+ end
1480
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1481
+
1482
+ MEC =
1483
+ T.let(
1484
+ :mec,
1485
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family::TaggedSymbol
1486
+ )
1487
+ MVP =
1488
+ T.let(
1489
+ :mvp,
1490
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family::TaggedSymbol
1491
+ )
1492
+ ICHRA =
1493
+ T.let(
1494
+ :ichra,
1495
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family::TaggedSymbol
1496
+ )
1497
+ VPC =
1498
+ T.let(
1499
+ :vpc,
1500
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family::TaggedSymbol
1501
+ )
1502
+ DENTAL =
1503
+ T.let(
1504
+ :dental,
1505
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family::TaggedSymbol
1506
+ )
1507
+ VISION =
1508
+ T.let(
1509
+ :vision,
1510
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family::TaggedSymbol
1511
+ )
1512
+
1513
+ sig do
1514
+ override.returns(
1515
+ T::Array[
1516
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Family::TaggedSymbol
1517
+ ]
1518
+ )
1519
+ end
1520
+ def self.values
1521
+ end
1522
+ end
1523
+
1524
+ # - `active` - Active
1525
+ # - `upcoming` - Upcoming
1526
+ # - `open_enrollment` - Open Enrollment
1527
+ # - `inactive` - Inactive
1528
+ module Status
1529
+ extend VitableConnect::Internal::Type::Enum
1530
+
1531
+ TaggedSymbol =
1532
+ T.type_alias do
1533
+ T.all(
1534
+ Symbol,
1535
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Status
1536
+ )
1537
+ end
1538
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1539
+
1540
+ ACTIVE =
1541
+ T.let(
1542
+ :active,
1543
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Status::TaggedSymbol
1544
+ )
1545
+ UPCOMING =
1546
+ T.let(
1547
+ :upcoming,
1548
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Status::TaggedSymbol
1549
+ )
1550
+ OPEN_ENROLLMENT =
1551
+ T.let(
1552
+ :open_enrollment,
1553
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Status::TaggedSymbol
1554
+ )
1555
+ INACTIVE =
1556
+ T.let(
1557
+ :inactive,
1558
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Status::TaggedSymbol
1559
+ )
1560
+
1561
+ sig do
1562
+ override.returns(
1563
+ T::Array[
1564
+ VitableConnect::Models::EmployerRetrieveBenefitPlanYearResponse::Data::Status::TaggedSymbol
1565
+ ]
1566
+ )
1567
+ end
1568
+ def self.values
1569
+ end
1570
+ end
1571
+ end
1572
+ end
1573
+ end
1574
+ end