vitable-connect 2.0.0 → 2.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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +2 -2
  3. data/changelog.md +7 -0
  4. data/lib/VitableConnect/client.rb +1 -1
  5. data/lib/VitableConnect/employers/client.rb +96 -6
  6. data/lib/VitableConnect/employers/types/create_employer_request.rb +2 -0
  7. data/lib/VitableConnect/employers/types/ensure_payroll_integration_email_employers_request.rb +2 -0
  8. data/lib/VitableConnect/employers/types/get_benefit_plan_year_employers_request.rb +2 -0
  9. data/lib/VitableConnect/employers/types/get_employers_request.rb +2 -0
  10. data/lib/VitableConnect/employers/types/get_hris_employers_request.rb +2 -0
  11. data/lib/VitableConnect/employers/types/get_invoice_pdf_employers_request.rb +2 -0
  12. data/lib/VitableConnect/employers/types/get_payroll_access_setup_employers_request.rb +2 -0
  13. data/lib/VitableConnect/employers/types/list_benefit_plan_year_enrollments_employers_request.rb +2 -0
  14. data/lib/VitableConnect/employers/types/list_benefit_plan_years_employers_request.rb +2 -0
  15. data/lib/VitableConnect/employers/types/list_employees_employers_request.rb +2 -0
  16. data/lib/VitableConnect/employers/types/list_employers_request.rb +2 -0
  17. data/lib/VitableConnect/employers/types/list_hris_providers_employers_request.rb +11 -0
  18. data/lib/VitableConnect/employers/types/list_invoices_employers_request.rb +2 -0
  19. data/lib/VitableConnect/employers/types/list_payroll_deduction_statements_employers_request.rb +2 -0
  20. data/lib/VitableConnect/employers/types/submit_payroll_access_setup_request.rb +2 -0
  21. data/lib/VitableConnect/employers/types/update_employer_request.rb +2 -0
  22. data/lib/VitableConnect/employers/types/update_employer_settings_request.rb +2 -0
  23. data/lib/VitableConnect/enrollments/client.rb +17 -2
  24. data/lib/VitableConnect/enrollments/types/get_enrollments_request.rb +2 -0
  25. data/lib/VitableConnect/enrollments/types/reissue_enrollment_request.rb +2 -0
  26. data/lib/VitableConnect/enrollments/types/terminate_enrollment_request.rb +2 -0
  27. data/lib/VitableConnect/members/client.rb +40 -0
  28. data/lib/VitableConnect/members/types/get_household_members_request.rb +2 -0
  29. data/lib/VitableConnect/members/types/get_members_request.rb +2 -0
  30. data/lib/VitableConnect/members/types/list_dependents_members_request.rb +2 -0
  31. data/lib/VitableConnect/members/types/list_employments_members_request.rb +2 -0
  32. data/lib/VitableConnect/members/types/list_enrollments_members_request.rb +2 -0
  33. data/lib/VitableConnect/members/types/list_id_cards_members_request.rb +2 -0
  34. data/lib/VitableConnect/members/types/list_members_request.rb +2 -0
  35. data/lib/VitableConnect/members/types/list_qualifying_life_events_members_request.rb +2 -0
  36. data/lib/VitableConnect/organizations/client.rb +4 -2
  37. data/lib/VitableConnect/types/x_vitable_organization.rb +23 -0
  38. data/lib/VitableConnect/version.rb +1 -1
  39. data/lib/VitableConnect.rb +2 -0
  40. data/reference.md +225 -1
  41. metadata +3 -1
@@ -23,6 +23,7 @@ module VitableConnect
23
23
  # @option request_options [Hash{String => Object}] :additional_body_parameters
24
24
  # @option request_options [Integer] :timeout_in_seconds
25
25
  # @option params [VitableConnect::Types::EnrollmentID] :enrollment_id
26
+ # @option params [String, nil] :vitable_organization
26
27
  #
27
28
  # @example
28
29
  # client.enrollments.get(enrollment_id: "enrl_AAAAAAAAAAAAAAAAAAAAAQ")
@@ -30,10 +31,14 @@ module VitableConnect
30
31
  # @return [VitableConnect::Types::EnrollmentResponse]
31
32
  def get(request_options: {}, **params)
32
33
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
34
+ headers = {}
35
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
36
+
33
37
  request = VitableConnect::Internal::JSON::Request.new(
34
38
  base_url: request_options[:base_url],
35
39
  method: "GET",
36
40
  path: "v1/enrollments/#{URI.encode_uri_component(params[:enrollment_id].to_s)}",
41
+ headers: headers,
37
42
  request_options: request_options
38
43
  )
39
44
  begin
@@ -63,6 +68,7 @@ module VitableConnect
63
68
  # @option request_options [Hash{String => Object}] :additional_body_parameters
64
69
  # @option request_options [Integer] :timeout_in_seconds
65
70
  # @option params [VitableConnect::Types::EnrollmentID] :enrollment_id
71
+ # @option params [String, nil] :vitable_organization
66
72
  #
67
73
  # @example
68
74
  # client.enrollments.reissue(
@@ -76,13 +82,17 @@ module VitableConnect
76
82
  def reissue(request_options: {}, **params)
77
83
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
78
84
  request_data = VitableConnect::Enrollments::Types::ReissueEnrollmentRequest.new(params).to_h
79
- non_body_param_names = %w[enrollment_id]
85
+ non_body_param_names = %w[enrollment_id X-Vitable-Organization]
80
86
  body = request_data.except(*non_body_param_names)
81
87
 
88
+ headers = {}
89
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
90
+
82
91
  request = VitableConnect::Internal::JSON::Request.new(
83
92
  base_url: request_options[:base_url],
84
93
  method: "POST",
85
94
  path: "v1/enrollments/#{URI.encode_uri_component(params[:enrollment_id].to_s)}/reissue",
95
+ headers: headers,
86
96
  body: body,
87
97
  request_options: request_options
88
98
  )
@@ -113,6 +123,7 @@ module VitableConnect
113
123
  # @option request_options [Hash{String => Object}] :additional_body_parameters
114
124
  # @option request_options [Integer] :timeout_in_seconds
115
125
  # @option params [VitableConnect::Types::EnrollmentID] :enrollment_id
126
+ # @option params [String, nil] :vitable_organization
116
127
  #
117
128
  # @example
118
129
  # client.enrollments.terminate(
@@ -126,13 +137,17 @@ module VitableConnect
126
137
  def terminate(request_options: {}, **params)
127
138
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
128
139
  request_data = VitableConnect::Enrollments::Types::TerminateEnrollmentRequest.new(params).to_h
129
- non_body_param_names = %w[enrollment_id]
140
+ non_body_param_names = %w[enrollment_id X-Vitable-Organization]
130
141
  body = request_data.except(*non_body_param_names)
131
142
 
143
+ headers = {}
144
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
145
+
132
146
  request = VitableConnect::Internal::JSON::Request.new(
133
147
  base_url: request_options[:base_url],
134
148
  method: "POST",
135
149
  path: "v1/enrollments/#{URI.encode_uri_component(params[:enrollment_id].to_s)}/terminate",
150
+ headers: headers,
136
151
  body: body,
137
152
  request_options: request_options
138
153
  )
@@ -5,6 +5,8 @@ module VitableConnect
5
5
  module Types
6
6
  class GetEnrollmentsRequest < Internal::Types::Model
7
7
  field :enrollment_id, -> { String }, optional: false, nullable: false
8
+
9
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
8
10
  end
9
11
  end
10
12
  end
@@ -6,6 +6,8 @@ module VitableConnect
6
6
  class ReissueEnrollmentRequest < Internal::Types::Model
7
7
  field :enrollment_id, -> { String }, optional: false, nullable: false
8
8
 
9
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
10
+
9
11
  field :reason, -> { String }, optional: true, nullable: false
10
12
 
11
13
  field :ticket_number, -> { String }, optional: true, nullable: false
@@ -6,6 +6,8 @@ module VitableConnect
6
6
  class TerminateEnrollmentRequest < Internal::Types::Model
7
7
  field :enrollment_id, -> { String }, optional: false, nullable: false
8
8
 
9
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
10
+
9
11
  field :reason, -> { String }, optional: true, nullable: false
10
12
 
11
13
  field :ticket_number, -> { String }, optional: true, nullable: false
@@ -22,6 +22,7 @@ module VitableConnect
22
22
  # @option request_options [Hash{String => Object}] :additional_body_parameters
23
23
  # @option request_options [Integer] :timeout_in_seconds
24
24
  # @option params [VitableConnect::Types::MemberID] :member_id
25
+ # @option params [String, nil] :vitable_organization
25
26
  #
26
27
  # @example
27
28
  # client.members.get(member_id: "mbr_abc123def456")
@@ -29,10 +30,14 @@ module VitableConnect
29
30
  # @return [VitableConnect::Types::MemberResponse]
30
31
  def get(request_options: {}, **params)
31
32
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
33
+ headers = {}
34
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
35
+
32
36
  request = VitableConnect::Internal::JSON::Request.new(
33
37
  base_url: request_options[:base_url],
34
38
  method: "GET",
35
39
  path: "v1/members/#{URI.encode_uri_component(params[:member_id].to_s)}",
40
+ headers: headers,
36
41
  request_options: request_options
37
42
  )
38
43
  begin
@@ -60,6 +65,7 @@ module VitableConnect
60
65
  # @option request_options [Hash{String => Object}] :additional_body_parameters
61
66
  # @option request_options [Integer] :timeout_in_seconds
62
67
  # @option params [VitableConnect::Types::MemberID] :member_id
68
+ # @option params [String, nil] :vitable_organization
63
69
  #
64
70
  # @example
65
71
  # client.members.list_dependents(member_id: "mbr_abc123def456")
@@ -67,10 +73,14 @@ module VitableConnect
67
73
  # @return [VitableConnect::Types::MemberDependentsResponse]
68
74
  def list_dependents(request_options: {}, **params)
69
75
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
76
+ headers = {}
77
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
78
+
70
79
  request = VitableConnect::Internal::JSON::Request.new(
71
80
  base_url: request_options[:base_url],
72
81
  method: "GET",
73
82
  path: "v1/members/#{URI.encode_uri_component(params[:member_id].to_s)}/dependents",
83
+ headers: headers,
74
84
  request_options: request_options
75
85
  )
76
86
  begin
@@ -100,6 +110,7 @@ module VitableConnect
100
110
  # @option request_options [Hash{String => Object}] :additional_body_parameters
101
111
  # @option request_options [Integer] :timeout_in_seconds
102
112
  # @option params [VitableConnect::Types::MemberID] :member_id
113
+ # @option params [String, nil] :vitable_organization
103
114
  #
104
115
  # @example
105
116
  # client.members.list_employments(member_id: "mbr_abc123def456")
@@ -107,10 +118,14 @@ module VitableConnect
107
118
  # @return [VitableConnect::Types::MemberEmploymentsResponse]
108
119
  def list_employments(request_options: {}, **params)
109
120
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
121
+ headers = {}
122
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
123
+
110
124
  request = VitableConnect::Internal::JSON::Request.new(
111
125
  base_url: request_options[:base_url],
112
126
  method: "GET",
113
127
  path: "v1/members/#{URI.encode_uri_component(params[:member_id].to_s)}/employments",
128
+ headers: headers,
114
129
  request_options: request_options
115
130
  )
116
131
  begin
@@ -150,6 +165,7 @@ module VitableConnect
150
165
  # @option request_options [Hash{String => Object}] :additional_body_parameters
151
166
  # @option request_options [Integer] :timeout_in_seconds
152
167
  # @option params [VitableConnect::Types::MemberID] :member_id
168
+ # @option params [String, nil] :vitable_organization
153
169
  #
154
170
  # @example
155
171
  # client.members.list_enrollments(member_id: "mbr_abc123def456")
@@ -157,10 +173,14 @@ module VitableConnect
157
173
  # @return [VitableConnect::Types::MemberEnrollmentsResponse]
158
174
  def list_enrollments(request_options: {}, **params)
159
175
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
176
+ headers = {}
177
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
178
+
160
179
  request = VitableConnect::Internal::JSON::Request.new(
161
180
  base_url: request_options[:base_url],
162
181
  method: "GET",
163
182
  path: "v1/members/#{URI.encode_uri_component(params[:member_id].to_s)}/enrollments",
183
+ headers: headers,
164
184
  request_options: request_options
165
185
  )
166
186
  begin
@@ -189,6 +209,7 @@ module VitableConnect
189
209
  # @option request_options [Hash{String => Object}] :additional_body_parameters
190
210
  # @option request_options [Integer] :timeout_in_seconds
191
211
  # @option params [VitableConnect::Types::MemberID] :member_id
212
+ # @option params [String, nil] :vitable_organization
192
213
  #
193
214
  # @example
194
215
  # client.members.get_household(member_id: "mbr_abc123def456")
@@ -196,10 +217,14 @@ module VitableConnect
196
217
  # @return [VitableConnect::Types::HouseholdMembersResponse]
197
218
  def get_household(request_options: {}, **params)
198
219
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
220
+ headers = {}
221
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
222
+
199
223
  request = VitableConnect::Internal::JSON::Request.new(
200
224
  base_url: request_options[:base_url],
201
225
  method: "GET",
202
226
  path: "v1/members/#{URI.encode_uri_component(params[:member_id].to_s)}/household",
227
+ headers: headers,
203
228
  request_options: request_options
204
229
  )
205
230
  begin
@@ -231,6 +256,7 @@ module VitableConnect
231
256
  # @option request_options [Hash{String => Object}] :additional_body_parameters
232
257
  # @option request_options [Integer] :timeout_in_seconds
233
258
  # @option params [VitableConnect::Types::MemberID] :member_id
259
+ # @option params [String, nil] :vitable_organization
234
260
  #
235
261
  # @example
236
262
  # client.members.list_id_cards(member_id: "mbr_abc123def456")
@@ -238,10 +264,14 @@ module VitableConnect
238
264
  # @return [VitableConnect::Types::MemberDigitalBenefitCardsResponse]
239
265
  def list_id_cards(request_options: {}, **params)
240
266
  params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
267
+ headers = {}
268
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
269
+
241
270
  request = VitableConnect::Internal::JSON::Request.new(
242
271
  base_url: request_options[:base_url],
243
272
  method: "GET",
244
273
  path: "v1/members/#{URI.encode_uri_component(params[:member_id].to_s)}/id-cards",
274
+ headers: headers,
245
275
  request_options: request_options
246
276
  )
247
277
  begin
@@ -276,6 +306,7 @@ module VitableConnect
276
306
  # @option params [Integer, nil] :limit
277
307
  # @option params [Integer, nil] :page
278
308
  # @option params [VitableConnect::Types::Status, nil] :status
309
+ # @option params [String, nil] :vitable_organization
279
310
  #
280
311
  # @example
281
312
  # client.members.list_qualifying_life_events(
@@ -292,6 +323,9 @@ module VitableConnect
292
323
  query_params["page"] = params[:page] if params.key?(:page)
293
324
  query_params["status"] = params[:status] if params.key?(:status)
294
325
 
326
+ headers = {}
327
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
328
+
295
329
  VitableConnect::Internal::OffsetItemIterator.new(
296
330
  initial_page: query_params["page"],
297
331
  item_field: :data,
@@ -303,6 +337,7 @@ module VitableConnect
303
337
  base_url: request_options[:base_url],
304
338
  method: "GET",
305
339
  path: "v1/members/#{URI.encode_uri_component(params[:member_id].to_s)}/qualifying-life-events",
340
+ headers: headers,
306
341
  query: query_params,
307
342
  request_options: request_options
308
343
  )
@@ -336,6 +371,7 @@ module VitableConnect
336
371
  # @option params [Integer, nil] :limit
337
372
  # @option params [Integer, nil] :page
338
373
  # @option params [String, nil] :search
374
+ # @option params [String, nil] :vitable_organization
339
375
  #
340
376
  # @example
341
377
  # client.members.list(
@@ -351,6 +387,9 @@ module VitableConnect
351
387
  query_params["page"] = params[:page] if params.key?(:page)
352
388
  query_params["search"] = params[:search] if params.key?(:search)
353
389
 
390
+ headers = {}
391
+ headers["X-Vitable-Organization"] = params[:vitable_organization] if params[:vitable_organization]
392
+
354
393
  VitableConnect::Internal::OffsetItemIterator.new(
355
394
  initial_page: query_params["page"],
356
395
  item_field: :data,
@@ -362,6 +401,7 @@ module VitableConnect
362
401
  base_url: request_options[:base_url],
363
402
  method: "GET",
364
403
  path: "v2/members",
404
+ headers: headers,
365
405
  query: query_params,
366
406
  request_options: request_options
367
407
  )
@@ -5,6 +5,8 @@ module VitableConnect
5
5
  module Types
6
6
  class GetHouseholdMembersRequest < Internal::Types::Model
7
7
  field :member_id, -> { String }, optional: false, nullable: false
8
+
9
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
8
10
  end
9
11
  end
10
12
  end
@@ -5,6 +5,8 @@ module VitableConnect
5
5
  module Types
6
6
  class GetMembersRequest < Internal::Types::Model
7
7
  field :member_id, -> { String }, optional: false, nullable: false
8
+
9
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
8
10
  end
9
11
  end
10
12
  end
@@ -5,6 +5,8 @@ module VitableConnect
5
5
  module Types
6
6
  class ListDependentsMembersRequest < Internal::Types::Model
7
7
  field :member_id, -> { String }, optional: false, nullable: false
8
+
9
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
8
10
  end
9
11
  end
10
12
  end
@@ -5,6 +5,8 @@ module VitableConnect
5
5
  module Types
6
6
  class ListEmploymentsMembersRequest < Internal::Types::Model
7
7
  field :member_id, -> { String }, optional: false, nullable: false
8
+
9
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
8
10
  end
9
11
  end
10
12
  end
@@ -5,6 +5,8 @@ module VitableConnect
5
5
  module Types
6
6
  class ListEnrollmentsMembersRequest < Internal::Types::Model
7
7
  field :member_id, -> { String }, optional: false, nullable: false
8
+
9
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
8
10
  end
9
11
  end
10
12
  end
@@ -5,6 +5,8 @@ module VitableConnect
5
5
  module Types
6
6
  class ListIDCardsMembersRequest < Internal::Types::Model
7
7
  field :member_id, -> { String }, optional: false, nullable: false
8
+
9
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
8
10
  end
9
11
  end
10
12
  end
@@ -9,6 +9,8 @@ module VitableConnect
9
9
  field :page, -> { Integer }, optional: true, nullable: false
10
10
 
11
11
  field :search, -> { String }, optional: true, nullable: false
12
+
13
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
12
14
  end
13
15
  end
14
16
  end
@@ -11,6 +11,8 @@ module VitableConnect
11
11
  field :page, -> { Integer }, optional: true, nullable: false
12
12
 
13
13
  field :status, -> { VitableConnect::Types::Status }, optional: true, nullable: false
14
+
15
+ field :vitable_organization, -> { String }, optional: true, nullable: false, api_name: "X-Vitable-Organization"
14
16
  end
15
17
  end
16
18
  end
@@ -47,8 +47,10 @@ module VitableConnect
47
47
  end
48
48
 
49
49
  # Onboards the authenticated user's partner Organization: creates the local Organization + the creator's admin
50
- # membership atomically, then mirrors it to WorkOS (creates the WorkOS org and binds the creator as admin). 409
51
- # `organization_already_exists` when the user already has an organization (v0: one organization per user).
50
+ # membership atomically, then mirrors it to WorkOS (creates the WorkOS org and binds the creator as admin). A user
51
+ # may hold several organizations and selects which one a request acts as with the `X-Vitable-Organization` header.
52
+ # The founder's email domain is claimed only when no other organization holds it, so a taken domain is left with
53
+ # its owner rather than rejected.
52
54
  #
53
55
  # @param request_options [Hash]
54
56
  # @param params [VitableConnect::Organizations::Types::CreateOrganizationRequest]
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Types
5
+ module XVitableOrganization
6
+ # XVitableOrganization is an alias for String
7
+
8
+ # @option str [String]
9
+ #
10
+ # @return [untyped]
11
+ def self.load(str)
12
+ ::JSON.parse(str)
13
+ end
14
+
15
+ # @option value [untyped]
16
+ #
17
+ # @return [String]
18
+ def self.dump(value)
19
+ ::JSON.generate(value)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module VitableConnect
4
- VERSION = "2.0.0"
4
+ VERSION = "2.1.0"
5
5
  end
@@ -190,6 +190,7 @@ require_relative "VitableConnect/types/webhook_event_response"
190
190
  require_relative "VitableConnect/types/employee_id"
191
191
  require_relative "VitableConnect/types/limit"
192
192
  require_relative "VitableConnect/types/page"
193
+ require_relative "VitableConnect/types/x_vitable_organization"
193
194
  require_relative "VitableConnect/types/include_cancelled"
194
195
  require_relative "VitableConnect/types/search"
195
196
  require_relative "VitableConnect/types/employer_id"
@@ -235,6 +236,7 @@ require_relative "VitableConnect/employers/types/submit_payroll_access_setup_req
235
236
  require_relative "VitableConnect/employers/types/list_payroll_deduction_statements_employers_request"
236
237
  require_relative "VitableConnect/employers/types/ensure_payroll_integration_email_employers_request"
237
238
  require_relative "VitableConnect/employers/types/update_employer_settings_request"
239
+ require_relative "VitableConnect/employers/types/list_hris_providers_employers_request"
238
240
  require_relative "VitableConnect/enrollments/client"
239
241
  require_relative "VitableConnect/enrollments/types/get_enrollments_request"
240
242
  require_relative "VitableConnect/enrollments/types/reissue_enrollment_request"