vitable-connect 0.2.2 → 0.4.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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -0
  3. data/README.md +9 -9
  4. data/lib/vitable_connect/client.rb +23 -1
  5. data/lib/vitable_connect/internal/transport/base_client.rb +2 -0
  6. data/lib/vitable_connect/internal/util.rb +3 -1
  7. data/lib/vitable_connect/models/employee.rb +11 -46
  8. data/lib/vitable_connect/models/employer_update_settings_params.rb +52 -0
  9. data/lib/vitable_connect/models/employer_update_settings_response.rb +56 -0
  10. data/lib/vitable_connect/models/group.rb +46 -0
  11. data/lib/vitable_connect/models/group_create_params.rb +26 -0
  12. data/lib/vitable_connect/models/group_list_params.rb +30 -0
  13. data/lib/vitable_connect/models/group_response.rb +18 -0
  14. data/lib/vitable_connect/models/group_retrieve_params.rb +22 -0
  15. data/lib/vitable_connect/models/group_update_params.rb +36 -0
  16. data/lib/vitable_connect/models/groups/members/sync_retrieve_params.rb +33 -0
  17. data/lib/vitable_connect/models/groups/members/sync_retrieve_response.rb +57 -0
  18. data/lib/vitable_connect/models/groups/members/sync_submit_params.rb +121 -0
  19. data/lib/vitable_connect/models/groups/members/sync_submit_response.rb +45 -0
  20. data/lib/vitable_connect/models/plan_list_params.rb +30 -0
  21. data/lib/vitable_connect/models/plan_list_response.rb +22 -0
  22. data/lib/vitable_connect/models.rb +18 -0
  23. data/lib/vitable_connect/resources/employers.rb +28 -0
  24. data/lib/vitable_connect/resources/groups/members/sync.rb +74 -0
  25. data/lib/vitable_connect/resources/groups/members.rb +20 -0
  26. data/lib/vitable_connect/resources/groups.rb +114 -0
  27. data/lib/vitable_connect/resources/plans.rb +41 -0
  28. data/lib/vitable_connect/version.rb +1 -1
  29. data/lib/vitable_connect.rb +18 -0
  30. data/rbi/vitable_connect/client.rbi +6 -0
  31. data/rbi/vitable_connect/models/employee.rbi +24 -65
  32. data/rbi/vitable_connect/models/employer_update_settings_params.rbi +114 -0
  33. data/rbi/vitable_connect/models/employer_update_settings_response.rbi +147 -0
  34. data/rbi/vitable_connect/models/group.rbi +65 -0
  35. data/rbi/vitable_connect/models/group_create_params.rbi +46 -0
  36. data/rbi/vitable_connect/models/group_list_params.rbi +60 -0
  37. data/rbi/vitable_connect/models/group_response.rbi +32 -0
  38. data/rbi/vitable_connect/models/group_retrieve_params.rbi +43 -0
  39. data/rbi/vitable_connect/models/group_update_params.rbi +58 -0
  40. data/rbi/vitable_connect/models/groups/members/sync_retrieve_params.rbi +56 -0
  41. data/rbi/vitable_connect/models/groups/members/sync_retrieve_response.rbi +112 -0
  42. data/rbi/vitable_connect/models/groups/members/sync_submit_params.rbi +214 -0
  43. data/rbi/vitable_connect/models/groups/members/sync_submit_response.rbi +92 -0
  44. data/rbi/vitable_connect/models/plan_list_params.rbi +60 -0
  45. data/rbi/vitable_connect/models/plan_list_response.rbi +29 -0
  46. data/rbi/vitable_connect/models.rbi +19 -0
  47. data/rbi/vitable_connect/resources/employers.rbi +22 -0
  48. data/rbi/vitable_connect/resources/groups/members/sync.rbi +62 -0
  49. data/rbi/vitable_connect/resources/groups/members.rbi +17 -0
  50. data/rbi/vitable_connect/resources/groups.rbi +79 -0
  51. data/rbi/vitable_connect/resources/plans.rbi +34 -0
  52. data/sig/vitable_connect/client.rbs +4 -0
  53. data/sig/vitable_connect/models/employee.rbs +4 -33
  54. data/sig/vitable_connect/models/employer_update_settings_params.rbs +44 -0
  55. data/sig/vitable_connect/models/employer_update_settings_response.rbs +48 -0
  56. data/sig/vitable_connect/models/group.rbs +45 -0
  57. data/sig/vitable_connect/models/group_create_params.rbs +28 -0
  58. data/sig/vitable_connect/models/group_list_params.rbs +32 -0
  59. data/sig/vitable_connect/models/group_response.rbs +13 -0
  60. data/sig/vitable_connect/models/group_retrieve_params.rbs +23 -0
  61. data/sig/vitable_connect/models/group_update_params.rbs +32 -0
  62. data/sig/vitable_connect/models/groups/members/sync_retrieve_params.rbs +32 -0
  63. data/sig/vitable_connect/models/groups/members/sync_retrieve_response.rbs +61 -0
  64. data/sig/vitable_connect/models/groups/members/sync_submit_params.rbs +124 -0
  65. data/sig/vitable_connect/models/groups/members/sync_submit_response.rbs +47 -0
  66. data/sig/vitable_connect/models/plan_list_params.rbs +32 -0
  67. data/sig/vitable_connect/models/plan_list_response.rbs +15 -0
  68. data/sig/vitable_connect/models.rbs +18 -0
  69. data/sig/vitable_connect/resources/employers.rbs +6 -0
  70. data/sig/vitable_connect/resources/groups/members/sync.rbs +23 -0
  71. data/sig/vitable_connect/resources/groups/members.rbs +11 -0
  72. data/sig/vitable_connect/resources/groups.rbs +33 -0
  73. data/sig/vitable_connect/resources/plans.rbs +13 -0
  74. metadata +56 -2
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Models
5
+ module Groups
6
+ module Members
7
+ # @see VitableConnect::Resources::Groups::Members::Sync#retrieve
8
+ class SyncRetrieveResponse < VitableConnect::Internal::Type::BaseModel
9
+ # @!attribute data
10
+ #
11
+ # @return [VitableConnect::Models::Groups::Members::SyncRetrieveResponse::Data]
12
+ required :data, -> { VitableConnect::Models::Groups::Members::SyncRetrieveResponse::Data }
13
+
14
+ # @!method initialize(data:)
15
+ # Response containing a single group member sync request detail resource.
16
+ #
17
+ # @param data [VitableConnect::Models::Groups::Members::SyncRetrieveResponse::Data]
18
+
19
+ # @see VitableConnect::Models::Groups::Members::SyncRetrieveResponse#data
20
+ class Data < VitableConnect::Internal::Type::BaseModel
21
+ # @!attribute accepted_at
22
+ #
23
+ # @return [Time]
24
+ required :accepted_at, Time
25
+
26
+ # @!attribute completed_at
27
+ #
28
+ # @return [Time, nil]
29
+ required :completed_at, Time, nil?: true
30
+
31
+ # @!attribute group_id
32
+ #
33
+ # @return [String]
34
+ required :group_id, String
35
+
36
+ # @!attribute request_id
37
+ #
38
+ # @return [String]
39
+ required :request_id, String
40
+
41
+ # @!attribute results
42
+ #
43
+ # @return [Object]
44
+ required :results, VitableConnect::Internal::Type::Unknown
45
+
46
+ # @!method initialize(accepted_at:, completed_at:, group_id:, request_id:, results:)
47
+ # @param accepted_at [Time]
48
+ # @param completed_at [Time, nil]
49
+ # @param group_id [String]
50
+ # @param request_id [String]
51
+ # @param results [Object]
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,121 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Models
5
+ module Groups
6
+ module Members
7
+ # @see VitableConnect::Resources::Groups::Members::Sync#submit
8
+ class SyncSubmitParams < VitableConnect::Internal::Type::BaseModel
9
+ extend VitableConnect::Internal::Type::RequestParameters::Converter
10
+ include VitableConnect::Internal::Type::RequestParameters
11
+
12
+ # @!attribute group_id
13
+ # Unique group identifier (grp\_\*)
14
+ #
15
+ # @return [String]
16
+ required :group_id, String
17
+
18
+ # @!attribute members
19
+ #
20
+ # @return [Array<VitableConnect::Models::Groups::Members::SyncSubmitParams::Member>]
21
+ required :members,
22
+ -> { VitableConnect::Internal::Type::ArrayOf[VitableConnect::Groups::Members::SyncSubmitParams::Member] }
23
+
24
+ # @!method initialize(group_id:, members:, request_options: {})
25
+ # @param group_id [String] Unique group identifier (grp\_\*)
26
+ #
27
+ # @param members [Array<VitableConnect::Models::Groups::Members::SyncSubmitParams::Member>]
28
+ #
29
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}]
30
+
31
+ class Member < VitableConnect::Internal::Type::BaseModel
32
+ # @!attribute address
33
+ #
34
+ # @return [VitableConnect::Models::Groups::Members::SyncSubmitParams::Member::Address]
35
+ required :address, -> { VitableConnect::Groups::Members::SyncSubmitParams::Member::Address }
36
+
37
+ # @!attribute date_of_birth
38
+ #
39
+ # @return [Date]
40
+ required :date_of_birth, Date
41
+
42
+ # @!attribute first_name
43
+ #
44
+ # @return [String]
45
+ required :first_name, String
46
+
47
+ # @!attribute last_name
48
+ #
49
+ # @return [String]
50
+ required :last_name, String
51
+
52
+ # @!attribute phone
53
+ #
54
+ # @return [String]
55
+ required :phone, String
56
+
57
+ # @!attribute plan_id
58
+ #
59
+ # @return [String]
60
+ required :plan_id, String
61
+
62
+ # @!attribute reference_id
63
+ #
64
+ # @return [String]
65
+ required :reference_id, String
66
+
67
+ # @!attribute email
68
+ #
69
+ # @return [String, nil]
70
+ optional :email, String, nil?: true
71
+
72
+ # @!method initialize(address:, date_of_birth:, first_name:, last_name:, phone:, plan_id:, reference_id:, email: nil)
73
+ # @param address [VitableConnect::Models::Groups::Members::SyncSubmitParams::Member::Address]
74
+ # @param date_of_birth [Date]
75
+ # @param first_name [String]
76
+ # @param last_name [String]
77
+ # @param phone [String]
78
+ # @param plan_id [String]
79
+ # @param reference_id [String]
80
+ # @param email [String, nil]
81
+
82
+ # @see VitableConnect::Models::Groups::Members::SyncSubmitParams::Member#address
83
+ class Address < VitableConnect::Internal::Type::BaseModel
84
+ # @!attribute address_line_1
85
+ #
86
+ # @return [String]
87
+ required :address_line_1, String
88
+
89
+ # @!attribute city
90
+ #
91
+ # @return [String]
92
+ required :city, String
93
+
94
+ # @!attribute state
95
+ #
96
+ # @return [String]
97
+ required :state, String
98
+
99
+ # @!attribute zipcode
100
+ #
101
+ # @return [String]
102
+ required :zipcode, String
103
+
104
+ # @!attribute address_line_2
105
+ #
106
+ # @return [String, nil]
107
+ optional :address_line_2, String, nil?: true
108
+
109
+ # @!method initialize(address_line_1:, city:, state:, zipcode:, address_line_2: nil)
110
+ # @param address_line_1 [String]
111
+ # @param city [String]
112
+ # @param state [String]
113
+ # @param zipcode [String]
114
+ # @param address_line_2 [String, nil]
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Models
5
+ module Groups
6
+ module Members
7
+ # @see VitableConnect::Resources::Groups::Members::Sync#submit
8
+ class SyncSubmitResponse < VitableConnect::Internal::Type::BaseModel
9
+ # @!attribute data
10
+ #
11
+ # @return [VitableConnect::Models::Groups::Members::SyncSubmitResponse::Data]
12
+ required :data, -> { VitableConnect::Models::Groups::Members::SyncSubmitResponse::Data }
13
+
14
+ # @!method initialize(data:)
15
+ # Response containing a single group member sync detail resource.
16
+ #
17
+ # @param data [VitableConnect::Models::Groups::Members::SyncSubmitResponse::Data]
18
+
19
+ # @see VitableConnect::Models::Groups::Members::SyncSubmitResponse#data
20
+ class Data < VitableConnect::Internal::Type::BaseModel
21
+ # @!attribute accepted_at
22
+ #
23
+ # @return [Time]
24
+ required :accepted_at, Time
25
+
26
+ # @!attribute group_id
27
+ #
28
+ # @return [String]
29
+ required :group_id, String
30
+
31
+ # @!attribute request_id
32
+ #
33
+ # @return [String]
34
+ required :request_id, String
35
+
36
+ # @!method initialize(accepted_at:, group_id:, request_id:)
37
+ # @param accepted_at [Time]
38
+ # @param group_id [String]
39
+ # @param request_id [String]
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Models
5
+ # @see VitableConnect::Resources::Plans#list
6
+ class PlanListParams < VitableConnect::Internal::Type::BaseModel
7
+ extend VitableConnect::Internal::Type::RequestParameters::Converter
8
+ include VitableConnect::Internal::Type::RequestParameters
9
+
10
+ # @!attribute limit
11
+ # Items per page (default: 20, max: 100)
12
+ #
13
+ # @return [Integer, nil]
14
+ optional :limit, Integer
15
+
16
+ # @!attribute page
17
+ # Page number (default: 1)
18
+ #
19
+ # @return [Integer, nil]
20
+ optional :page, Integer
21
+
22
+ # @!method initialize(limit: nil, page: nil, request_options: {})
23
+ # @param limit [Integer] Items per page (default: 20, max: 100)
24
+ #
25
+ # @param page [Integer] Page number (default: 1)
26
+ #
27
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Models
5
+ # @see VitableConnect::Resources::Plans#list
6
+ class PlanListResponse < VitableConnect::Internal::Type::BaseModel
7
+ # @!attribute id
8
+ #
9
+ # @return [String]
10
+ required :id, String
11
+
12
+ # @!attribute name
13
+ #
14
+ # @return [String]
15
+ required :name, String
16
+
17
+ # @!method initialize(id:, name:)
18
+ # @param id [String]
19
+ # @param name [String]
20
+ end
21
+ end
22
+ end
@@ -75,14 +75,32 @@ module VitableConnect
75
75
 
76
76
  EmployerSubmitCensusSyncParams = VitableConnect::Models::EmployerSubmitCensusSyncParams
77
77
 
78
+ EmployerUpdateSettingsParams = VitableConnect::Models::EmployerUpdateSettingsParams
79
+
78
80
  Enrollment = VitableConnect::Models::Enrollment
79
81
 
80
82
  EnrollmentRetrieveParams = VitableConnect::Models::EnrollmentRetrieveParams
81
83
 
82
84
  EnrollmentStatus = VitableConnect::Models::EnrollmentStatus
83
85
 
86
+ Group = VitableConnect::Models::Group
87
+
88
+ GroupCreateParams = VitableConnect::Models::GroupCreateParams
89
+
90
+ GroupListParams = VitableConnect::Models::GroupListParams
91
+
92
+ GroupResponse = VitableConnect::Models::GroupResponse
93
+
94
+ GroupRetrieveParams = VitableConnect::Models::GroupRetrieveParams
95
+
96
+ Groups = VitableConnect::Models::Groups
97
+
98
+ GroupUpdateParams = VitableConnect::Models::GroupUpdateParams
99
+
84
100
  Pagination = VitableConnect::Models::Pagination
85
101
 
102
+ PlanListParams = VitableConnect::Models::PlanListParams
103
+
86
104
  Type = VitableConnect::Models::Type
87
105
 
88
106
  WebhookEvent = VitableConnect::Models::WebhookEvent
@@ -175,6 +175,34 @@ module VitableConnect
175
175
  )
176
176
  end
177
177
 
178
+ # Some parameter documentations has been truncated, see
179
+ # {VitableConnect::Models::EmployerUpdateSettingsParams} for more details.
180
+ #
181
+ # Updates configuration settings for a specific employer. The employer must belong
182
+ # to the authenticated organization.
183
+ #
184
+ # @overload update_settings(employer_id, pay_frequency:, request_options: {})
185
+ #
186
+ # @param employer_id [String] Unique employer identifier (empr\_\*)
187
+ #
188
+ # @param pay_frequency [Symbol, VitableConnect::Models::EmployerUpdateSettingsParams::PayFrequency] - `weekly` - weekly
189
+ #
190
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
191
+ #
192
+ # @return [VitableConnect::Models::EmployerUpdateSettingsResponse]
193
+ #
194
+ # @see VitableConnect::Models::EmployerUpdateSettingsParams
195
+ def update_settings(employer_id, params)
196
+ parsed, options = VitableConnect::EmployerUpdateSettingsParams.dump_request(params)
197
+ @client.request(
198
+ method: :put,
199
+ path: ["v1/employers/%1$s/settings", employer_id],
200
+ body: parsed,
201
+ model: VitableConnect::Models::EmployerUpdateSettingsResponse,
202
+ options: options
203
+ )
204
+ end
205
+
178
206
  # @api private
179
207
  #
180
208
  # @param client [VitableConnect::Client]
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Resources
5
+ class Groups
6
+ class Members
7
+ class Sync
8
+ # Retrieves a previously-submitted group member sync request by its `grpmsr_` ID.
9
+ # Returns the acceptance timestamp, completion timestamp (if processing has
10
+ # finished), and the per-member `results` once available. While processing is in
11
+ # flight, `completed_at` and `results` are `null`.
12
+ #
13
+ # @overload retrieve(request_id, group_id:, request_options: {})
14
+ #
15
+ # @param request_id [String]
16
+ #
17
+ # @param group_id [String] Unique group identifier (grp\_\*)
18
+ #
19
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
20
+ #
21
+ # @return [VitableConnect::Models::Groups::Members::SyncRetrieveResponse]
22
+ #
23
+ # @see VitableConnect::Models::Groups::Members::SyncRetrieveParams
24
+ def retrieve(request_id, params)
25
+ parsed, options = VitableConnect::Groups::Members::SyncRetrieveParams.dump_request(params)
26
+ group_id =
27
+ parsed.delete(:group_id) do
28
+ raise ArgumentError.new("missing required path argument #{_1}")
29
+ end
30
+ @client.request(
31
+ method: :get,
32
+ path: ["v1/groups/%1$s/members/sync/%2$s", group_id, request_id],
33
+ model: VitableConnect::Models::Groups::Members::SyncRetrieveResponse,
34
+ options: options
35
+ )
36
+ end
37
+
38
+ # Submits a member sync payload for the specified group. Members in the payload
39
+ # will be queued for processing asynchronously. Returns HTTP 202 with the batch ID
40
+ # and acceptance timestamp.
41
+ #
42
+ # @overload submit(group_id, members:, request_options: {})
43
+ #
44
+ # @param group_id [String] Unique group identifier (grp\_\*)
45
+ #
46
+ # @param members [Array<VitableConnect::Models::Groups::Members::SyncSubmitParams::Member>]
47
+ #
48
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
49
+ #
50
+ # @return [VitableConnect::Models::Groups::Members::SyncSubmitResponse]
51
+ #
52
+ # @see VitableConnect::Models::Groups::Members::SyncSubmitParams
53
+ def submit(group_id, params)
54
+ parsed, options = VitableConnect::Groups::Members::SyncSubmitParams.dump_request(params)
55
+ @client.request(
56
+ method: :post,
57
+ path: ["v1/groups/%1$s/members/sync", group_id],
58
+ body: parsed,
59
+ model: VitableConnect::Models::Groups::Members::SyncSubmitResponse,
60
+ options: options
61
+ )
62
+ end
63
+
64
+ # @api private
65
+ #
66
+ # @param client [VitableConnect::Client]
67
+ def initialize(client:)
68
+ @client = client
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Resources
5
+ class Groups
6
+ class Members
7
+ # @return [VitableConnect::Resources::Groups::Members::Sync]
8
+ attr_reader :sync
9
+
10
+ # @api private
11
+ #
12
+ # @param client [VitableConnect::Client]
13
+ def initialize(client:)
14
+ @client = client
15
+ @sync = VitableConnect::Resources::Groups::Members::Sync.new(client: client)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Resources
5
+ class Groups
6
+ # @return [VitableConnect::Resources::Groups::Members]
7
+ attr_reader :members
8
+
9
+ # Creates a new group scoped to the authenticated organization.
10
+ #
11
+ # @overload create(external_reference_id:, name:, request_options: {})
12
+ #
13
+ # @param external_reference_id [String]
14
+ # @param name [String]
15
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
16
+ #
17
+ # @return [VitableConnect::Models::GroupResponse]
18
+ #
19
+ # @see VitableConnect::Models::GroupCreateParams
20
+ def create(params)
21
+ parsed, options = VitableConnect::GroupCreateParams.dump_request(params)
22
+ @client.request(
23
+ method: :post,
24
+ path: "v1/groups",
25
+ body: parsed,
26
+ model: VitableConnect::GroupResponse,
27
+ options: options
28
+ )
29
+ end
30
+
31
+ # Retrieves a single group by its prefixed ID. Returns 404 if the group does not
32
+ # belong to the authenticated organization.
33
+ #
34
+ # @overload retrieve(group_id, request_options: {})
35
+ #
36
+ # @param group_id [String] Unique group identifier (grp\_\*)
37
+ #
38
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
39
+ #
40
+ # @return [VitableConnect::Models::GroupResponse]
41
+ #
42
+ # @see VitableConnect::Models::GroupRetrieveParams
43
+ def retrieve(group_id, params = {})
44
+ @client.request(
45
+ method: :get,
46
+ path: ["v1/groups/%1$s", group_id],
47
+ model: VitableConnect::GroupResponse,
48
+ options: params[:request_options]
49
+ )
50
+ end
51
+
52
+ # Partially updates a group's name or external reference ID. Returns 404 if the
53
+ # group does not belong to the authenticated organization.
54
+ #
55
+ # @overload update(group_id, external_reference_id: nil, name: nil, request_options: {})
56
+ #
57
+ # @param group_id [String] Unique group identifier (grp\_\*)
58
+ #
59
+ # @param external_reference_id [String, nil]
60
+ #
61
+ # @param name [String, nil]
62
+ #
63
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
64
+ #
65
+ # @return [VitableConnect::Models::GroupResponse]
66
+ #
67
+ # @see VitableConnect::Models::GroupUpdateParams
68
+ def update(group_id, params = {})
69
+ parsed, options = VitableConnect::GroupUpdateParams.dump_request(params)
70
+ @client.request(
71
+ method: :patch,
72
+ path: ["v1/groups/%1$s", group_id],
73
+ body: parsed,
74
+ model: VitableConnect::GroupResponse,
75
+ options: options
76
+ )
77
+ end
78
+
79
+ # Returns a paginated list of groups belonging to the authenticated organization.
80
+ #
81
+ # @overload list(limit: nil, page: nil, request_options: {})
82
+ #
83
+ # @param limit [Integer] Items per page (default: 20, max: 100)
84
+ #
85
+ # @param page [Integer] Page number (default: 1)
86
+ #
87
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
88
+ #
89
+ # @return [VitableConnect::Internal::PageNumberPage<VitableConnect::Models::Group>]
90
+ #
91
+ # @see VitableConnect::Models::GroupListParams
92
+ def list(params = {})
93
+ parsed, options = VitableConnect::GroupListParams.dump_request(params)
94
+ query = VitableConnect::Internal::Util.encode_query_params(parsed)
95
+ @client.request(
96
+ method: :get,
97
+ path: "v1/groups",
98
+ query: query,
99
+ page: VitableConnect::Internal::PageNumberPage,
100
+ model: VitableConnect::Group,
101
+ options: options
102
+ )
103
+ end
104
+
105
+ # @api private
106
+ #
107
+ # @param client [VitableConnect::Client]
108
+ def initialize(client:)
109
+ @client = client
110
+ @members = VitableConnect::Resources::Groups::Members.new(client: client)
111
+ end
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VitableConnect
4
+ module Resources
5
+ class Plans
6
+ # Returns a paginated list of benefit plans linked to the authenticated
7
+ # organization.
8
+ #
9
+ # @overload list(limit: nil, page: nil, request_options: {})
10
+ #
11
+ # @param limit [Integer] Items per page (default: 20, max: 100)
12
+ #
13
+ # @param page [Integer] Page number (default: 1)
14
+ #
15
+ # @param request_options [VitableConnect::RequestOptions, Hash{Symbol=>Object}, nil]
16
+ #
17
+ # @return [VitableConnect::Internal::PageNumberPage<VitableConnect::Models::PlanListResponse>]
18
+ #
19
+ # @see VitableConnect::Models::PlanListParams
20
+ def list(params = {})
21
+ parsed, options = VitableConnect::PlanListParams.dump_request(params)
22
+ query = VitableConnect::Internal::Util.encode_query_params(parsed)
23
+ @client.request(
24
+ method: :get,
25
+ path: "v1/plans",
26
+ query: query,
27
+ page: VitableConnect::Internal::PageNumberPage,
28
+ model: VitableConnect::Models::PlanListResponse,
29
+ options: options
30
+ )
31
+ end
32
+
33
+ # @api private
34
+ #
35
+ # @param client [VitableConnect::Client]
36
+ def initialize(client:)
37
+ @client = client
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module VitableConnect
4
- VERSION = "0.2.2"
4
+ VERSION = "0.4.0"
5
5
  end
@@ -72,11 +72,25 @@ require_relative "vitable_connect/models/employer_response"
72
72
  require_relative "vitable_connect/models/employer_retrieve_params"
73
73
  require_relative "vitable_connect/models/employer_submit_census_sync_params"
74
74
  require_relative "vitable_connect/models/employer_submit_census_sync_response"
75
+ require_relative "vitable_connect/models/employer_update_settings_params"
76
+ require_relative "vitable_connect/models/employer_update_settings_response"
75
77
  require_relative "vitable_connect/models/enrollment"
76
78
  require_relative "vitable_connect/models/enrollment_retrieve_params"
77
79
  require_relative "vitable_connect/models/enrollment_retrieve_response"
78
80
  require_relative "vitable_connect/models/enrollment_status"
81
+ require_relative "vitable_connect/models/group"
82
+ require_relative "vitable_connect/models/group_create_params"
83
+ require_relative "vitable_connect/models/group_list_params"
84
+ require_relative "vitable_connect/models/group_response"
85
+ require_relative "vitable_connect/models/group_retrieve_params"
86
+ require_relative "vitable_connect/models/groups/members/sync_retrieve_params"
87
+ require_relative "vitable_connect/models/groups/members/sync_retrieve_response"
88
+ require_relative "vitable_connect/models/groups/members/sync_submit_params"
89
+ require_relative "vitable_connect/models/groups/members/sync_submit_response"
90
+ require_relative "vitable_connect/models/group_update_params"
79
91
  require_relative "vitable_connect/models/pagination"
92
+ require_relative "vitable_connect/models/plan_list_params"
93
+ require_relative "vitable_connect/models/plan_list_response"
80
94
  require_relative "vitable_connect/models/type"
81
95
  require_relative "vitable_connect/models/webhook_event"
82
96
  require_relative "vitable_connect/models/webhook_event_list_deliveries_params"
@@ -90,4 +104,8 @@ require_relative "vitable_connect/resources/benefit_eligibility_policies"
90
104
  require_relative "vitable_connect/resources/employees"
91
105
  require_relative "vitable_connect/resources/employers"
92
106
  require_relative "vitable_connect/resources/enrollments"
107
+ require_relative "vitable_connect/resources/groups"
108
+ require_relative "vitable_connect/resources/groups/members"
109
+ require_relative "vitable_connect/resources/groups/members/sync"
110
+ require_relative "vitable_connect/resources/plans"
93
111
  require_relative "vitable_connect/resources/webhook_events"
@@ -45,6 +45,12 @@ module VitableConnect
45
45
  sig { returns(VitableConnect::Resources::WebhookEvents) }
46
46
  attr_reader :webhook_events
47
47
 
48
+ sig { returns(VitableConnect::Resources::Groups) }
49
+ attr_reader :groups
50
+
51
+ sig { returns(VitableConnect::Resources::Plans) }
52
+ attr_reader :plans
53
+
48
54
  # @api private
49
55
  sig { override.returns(T::Hash[String, String]) }
50
56
  private def auth_headers