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