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,61 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module VitableConnect
|
|
4
|
+
# Specify HTTP behaviour to use for a specific request. These options supplement
|
|
5
|
+
# or override those provided at the client level.
|
|
6
|
+
#
|
|
7
|
+
# When making a request, you can pass an actual {RequestOptions} instance, or
|
|
8
|
+
# simply pass a Hash with symbol keys matching the attributes on this class.
|
|
9
|
+
class RequestOptions < VitableConnect::Internal::Type::BaseModel
|
|
10
|
+
OrHash =
|
|
11
|
+
T.type_alias do
|
|
12
|
+
T.any(VitableConnect::RequestOptions, VitableConnect::Internal::AnyHash)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @api private
|
|
16
|
+
sig { params(opts: VitableConnect::RequestOptions::OrHash).void }
|
|
17
|
+
def self.validate!(opts)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Idempotency key to send with request and all associated retries. Will only be
|
|
21
|
+
# sent for write requests.
|
|
22
|
+
sig { returns(T.nilable(String)) }
|
|
23
|
+
attr_accessor :idempotency_key
|
|
24
|
+
|
|
25
|
+
# Extra query params to send with the request. These are `.merge`’d into any
|
|
26
|
+
# `query` given at the client level.
|
|
27
|
+
sig do
|
|
28
|
+
returns(
|
|
29
|
+
T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))])
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
attr_accessor :extra_query
|
|
33
|
+
|
|
34
|
+
# Extra headers to send with the request. These are `.merged`’d into any
|
|
35
|
+
# `extra_headers` given at the client level.
|
|
36
|
+
sig { returns(T.nilable(T::Hash[String, T.nilable(String)])) }
|
|
37
|
+
attr_accessor :extra_headers
|
|
38
|
+
|
|
39
|
+
# Extra data to send with the request. These are deep merged into any data
|
|
40
|
+
# generated as part of the normal request.
|
|
41
|
+
sig { returns(T.nilable(T.anything)) }
|
|
42
|
+
attr_accessor :extra_body
|
|
43
|
+
|
|
44
|
+
# Maximum number of retries to attempt after a failed initial request.
|
|
45
|
+
sig { returns(T.nilable(Integer)) }
|
|
46
|
+
attr_accessor :max_retries
|
|
47
|
+
|
|
48
|
+
# Request timeout in seconds.
|
|
49
|
+
sig { returns(T.nilable(Float)) }
|
|
50
|
+
attr_accessor :timeout
|
|
51
|
+
|
|
52
|
+
# Returns a new instance of RequestOptions.
|
|
53
|
+
sig do
|
|
54
|
+
params(values: VitableConnect::Internal::AnyHash).returns(
|
|
55
|
+
T.attached_class
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
def self.new(values = {})
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module VitableConnect
|
|
4
|
+
module Resources
|
|
5
|
+
# Issue short-lived access tokens for scoped API access
|
|
6
|
+
class Auth
|
|
7
|
+
# Issues a short-lived access token from the authenticated API key. Access tokens
|
|
8
|
+
# can optionally be bound to a specific employer or employee for scoped access.
|
|
9
|
+
# Tokens expire after 15 minutes.
|
|
10
|
+
sig do
|
|
11
|
+
params(
|
|
12
|
+
grant_type:
|
|
13
|
+
VitableConnect::AuthIssueAccessTokenParams::GrantType::OrSymbol,
|
|
14
|
+
bound_entity:
|
|
15
|
+
T.nilable(
|
|
16
|
+
VitableConnect::AuthIssueAccessTokenParams::BoundEntity::OrHash
|
|
17
|
+
),
|
|
18
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
19
|
+
).returns(VitableConnect::Models::AuthIssueAccessTokenResponse)
|
|
20
|
+
end
|
|
21
|
+
def issue_access_token(
|
|
22
|
+
# - `client_credentials` - client_credentials
|
|
23
|
+
grant_type:,
|
|
24
|
+
# Optional entity to bind the token to for scoped access
|
|
25
|
+
bound_entity: nil,
|
|
26
|
+
request_options: {}
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @api private
|
|
31
|
+
sig { params(client: VitableConnect::Client).returns(T.attached_class) }
|
|
32
|
+
def self.new(client:)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module VitableConnect
|
|
4
|
+
module Resources
|
|
5
|
+
# Define rules that determine which employees qualify for benefits
|
|
6
|
+
class BenefitEligibilityPolicies
|
|
7
|
+
# Retrieves a benefit eligibility policy by ID.
|
|
8
|
+
sig do
|
|
9
|
+
params(
|
|
10
|
+
policy_id: String,
|
|
11
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
12
|
+
).returns(VitableConnect::BenefitEligibilityPolicyResponse)
|
|
13
|
+
end
|
|
14
|
+
def retrieve(
|
|
15
|
+
# Unique benefit eligibility policy identifier (epol\_\*)
|
|
16
|
+
policy_id,
|
|
17
|
+
request_options: {}
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @api private
|
|
22
|
+
sig { params(client: VitableConnect::Client).returns(T.attached_class) }
|
|
23
|
+
def self.new(client:)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# typed: strong
|
|
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
|
+
sig do
|
|
9
|
+
params(
|
|
10
|
+
employee_id: String,
|
|
11
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
12
|
+
).returns(VitableConnect::Models::EmployeeRetrieveResponse)
|
|
13
|
+
end
|
|
14
|
+
def retrieve(
|
|
15
|
+
# Unique employee identifier (empl\_\*)
|
|
16
|
+
employee_id,
|
|
17
|
+
request_options: {}
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Retrieves a paginated list of benefit enrollments for an employee.
|
|
22
|
+
sig do
|
|
23
|
+
params(
|
|
24
|
+
employee_id: String,
|
|
25
|
+
limit: Integer,
|
|
26
|
+
page: Integer,
|
|
27
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
28
|
+
).returns(
|
|
29
|
+
VitableConnect::Internal::PageNumberPage[VitableConnect::Enrollment]
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
def list_enrollments(
|
|
33
|
+
# Unique employee identifier (empl\_\*)
|
|
34
|
+
employee_id,
|
|
35
|
+
# Items per page (default: 20, max: 100)
|
|
36
|
+
limit: nil,
|
|
37
|
+
# Page number (default: 1)
|
|
38
|
+
page: nil,
|
|
39
|
+
request_options: {}
|
|
40
|
+
)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @api private
|
|
44
|
+
sig { params(client: VitableConnect::Client).returns(T.attached_class) }
|
|
45
|
+
def self.new(client:)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# typed: strong
|
|
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
|
+
sig do
|
|
10
|
+
params(
|
|
11
|
+
address: VitableConnect::EmployerCreateParams::Address::OrHash,
|
|
12
|
+
ein: String,
|
|
13
|
+
email: String,
|
|
14
|
+
legal_name: String,
|
|
15
|
+
name: String,
|
|
16
|
+
phone_number: T.nilable(String),
|
|
17
|
+
reference_id: T.nilable(String),
|
|
18
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
19
|
+
).returns(VitableConnect::EmployerResponse)
|
|
20
|
+
end
|
|
21
|
+
def create(
|
|
22
|
+
# Employer address
|
|
23
|
+
address:,
|
|
24
|
+
# Employer Identification Number (format: XX-XXXXXXX)
|
|
25
|
+
ein:,
|
|
26
|
+
# Email address for billing and communications
|
|
27
|
+
email:,
|
|
28
|
+
# Legal business name
|
|
29
|
+
legal_name:,
|
|
30
|
+
# Employer display name
|
|
31
|
+
name:,
|
|
32
|
+
# Employer phone number (10-digit US format, e.g. 5551234567)
|
|
33
|
+
phone_number: nil,
|
|
34
|
+
# External reference ID for this employer
|
|
35
|
+
reference_id: nil,
|
|
36
|
+
request_options: {}
|
|
37
|
+
)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Retrieves detailed information for a specific employer by ID. The employer must
|
|
41
|
+
# belong to the authenticated organization.
|
|
42
|
+
sig do
|
|
43
|
+
params(
|
|
44
|
+
employer_id: String,
|
|
45
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
46
|
+
).returns(VitableConnect::EmployerResponse)
|
|
47
|
+
end
|
|
48
|
+
def retrieve(
|
|
49
|
+
# Unique employer identifier (empr\_\*)
|
|
50
|
+
employer_id,
|
|
51
|
+
request_options: {}
|
|
52
|
+
)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Retrieves a paginated list of all employers belonging to the authenticated
|
|
56
|
+
# organization. Results are sorted by creation date (newest first) and paginated
|
|
57
|
+
# using page and limit parameters.
|
|
58
|
+
sig do
|
|
59
|
+
params(
|
|
60
|
+
limit: Integer,
|
|
61
|
+
page: Integer,
|
|
62
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
63
|
+
).returns(
|
|
64
|
+
VitableConnect::Internal::PageNumberPage[VitableConnect::Employer]
|
|
65
|
+
)
|
|
66
|
+
end
|
|
67
|
+
def list(
|
|
68
|
+
# Items per page (default: 20, max: 100)
|
|
69
|
+
limit: nil,
|
|
70
|
+
# Page number (default: 1)
|
|
71
|
+
page: nil,
|
|
72
|
+
request_options: {}
|
|
73
|
+
)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Creates a benefit eligibility policy for the specified employer.
|
|
77
|
+
sig do
|
|
78
|
+
params(
|
|
79
|
+
employer_id: String,
|
|
80
|
+
classification: String,
|
|
81
|
+
waiting_period: String,
|
|
82
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
83
|
+
).returns(VitableConnect::BenefitEligibilityPolicyResponse)
|
|
84
|
+
end
|
|
85
|
+
def create_benefit_eligibility_policy(
|
|
86
|
+
# Unique employer identifier (empr\_\*)
|
|
87
|
+
employer_id,
|
|
88
|
+
# Which employee classifications are eligible. One of: full_time, part_time, all
|
|
89
|
+
classification:,
|
|
90
|
+
# Waiting period before eligibility. One of: first_of_following_month, 30_days,
|
|
91
|
+
# 60_days, none
|
|
92
|
+
waiting_period:,
|
|
93
|
+
request_options: {}
|
|
94
|
+
)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Retrieves a paginated list of all employees for a specific employer. Results are
|
|
98
|
+
# paginated using page and limit parameters.
|
|
99
|
+
sig do
|
|
100
|
+
params(
|
|
101
|
+
employer_id: String,
|
|
102
|
+
limit: Integer,
|
|
103
|
+
page: Integer,
|
|
104
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
105
|
+
).returns(
|
|
106
|
+
VitableConnect::Internal::PageNumberPage[VitableConnect::Employee]
|
|
107
|
+
)
|
|
108
|
+
end
|
|
109
|
+
def list_employees(
|
|
110
|
+
# Unique employer identifier (empr\_\*)
|
|
111
|
+
employer_id,
|
|
112
|
+
# Items per page (default: 20, max: 100)
|
|
113
|
+
limit: nil,
|
|
114
|
+
# Page number (default: 1)
|
|
115
|
+
page: nil,
|
|
116
|
+
request_options: {}
|
|
117
|
+
)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Submits a census sync payload for the specified employer. The employees in the
|
|
121
|
+
# payload will be queued for processing. Returns an accepted response with the
|
|
122
|
+
# timestamp of acceptance.
|
|
123
|
+
sig do
|
|
124
|
+
params(
|
|
125
|
+
employer_id: String,
|
|
126
|
+
employees:
|
|
127
|
+
T::Array[
|
|
128
|
+
VitableConnect::EmployerSubmitCensusSyncParams::Employee::OrHash
|
|
129
|
+
],
|
|
130
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
131
|
+
).returns(VitableConnect::Models::EmployerSubmitCensusSyncResponse)
|
|
132
|
+
end
|
|
133
|
+
def submit_census_sync(
|
|
134
|
+
# Unique employer identifier (empr\_\*)
|
|
135
|
+
employer_id,
|
|
136
|
+
employees:,
|
|
137
|
+
request_options: {}
|
|
138
|
+
)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# @api private
|
|
142
|
+
sig { params(client: VitableConnect::Client).returns(T.attached_class) }
|
|
143
|
+
def self.new(client:)
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# typed: strong
|
|
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
|
+
sig do
|
|
9
|
+
params(
|
|
10
|
+
enrollment_id: String,
|
|
11
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
12
|
+
).returns(VitableConnect::Models::EnrollmentRetrieveResponse)
|
|
13
|
+
end
|
|
14
|
+
def retrieve(
|
|
15
|
+
# Unique enrollment identifier (enrl\_\*)
|
|
16
|
+
enrollment_id,
|
|
17
|
+
request_options: {}
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @api private
|
|
22
|
+
sig { params(client: VitableConnect::Client).returns(T.attached_class) }
|
|
23
|
+
def self.new(client:)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# typed: strong
|
|
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
|
+
sig do
|
|
9
|
+
params(
|
|
10
|
+
event_id: String,
|
|
11
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
12
|
+
).returns(VitableConnect::Models::WebhookEventRetrieveResponse)
|
|
13
|
+
end
|
|
14
|
+
def retrieve(event_id, request_options: {})
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Retrieves a paginated list of webhook events for the authenticated organization.
|
|
18
|
+
# Supports filtering by event name, resource type, resource ID, and date range.
|
|
19
|
+
sig do
|
|
20
|
+
params(
|
|
21
|
+
created_after: Time,
|
|
22
|
+
created_before: Time,
|
|
23
|
+
event_name:
|
|
24
|
+
VitableConnect::WebhookEventListParams::EventName::OrSymbol,
|
|
25
|
+
limit: Integer,
|
|
26
|
+
page: Integer,
|
|
27
|
+
resource_id: String,
|
|
28
|
+
resource_type:
|
|
29
|
+
VitableConnect::WebhookEventListParams::ResourceType::OrSymbol,
|
|
30
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
31
|
+
).returns(
|
|
32
|
+
VitableConnect::Internal::PageNumberPage[VitableConnect::WebhookEvent]
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
def list(
|
|
36
|
+
created_after: nil,
|
|
37
|
+
created_before: nil,
|
|
38
|
+
# - `enrollment.accepted` - Enrollment Accepted
|
|
39
|
+
# - `enrollment.terminated` - Enrollment Terminated
|
|
40
|
+
# - `enrollment.elected` - Enrollment Elected
|
|
41
|
+
# - `enrollment.granted` - Enrollment Granted
|
|
42
|
+
# - `enrollment.waived` - Enrollment Waived
|
|
43
|
+
# - `enrollment.started` - Enrollment Started
|
|
44
|
+
# - `employee.eligibility_granted` - Employee Eligibility Granted
|
|
45
|
+
# - `employee.eligibility_terminated` - Employee Eligibility Terminated
|
|
46
|
+
# - `employee.deactivated` - Employee Deactivated
|
|
47
|
+
# - `payroll_deduction.created` - Payroll Deduction Created
|
|
48
|
+
# - `employer.eligibility_policy_created` - Employer Eligibility Policy Created
|
|
49
|
+
event_name: nil,
|
|
50
|
+
# Items per page (default: 20, max: 100)
|
|
51
|
+
limit: nil,
|
|
52
|
+
# Page number (default: 1)
|
|
53
|
+
page: nil,
|
|
54
|
+
resource_id: nil,
|
|
55
|
+
# - `enrollment` - Enrollment
|
|
56
|
+
# - `employee` - Employee
|
|
57
|
+
# - `employer` - Employer
|
|
58
|
+
# - `dependent` - Dependent
|
|
59
|
+
# - `plan_year` - Plan Year
|
|
60
|
+
# - `payroll_deduction` - Payroll Deduction
|
|
61
|
+
resource_type: nil,
|
|
62
|
+
request_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
|
+
sig do
|
|
70
|
+
params(
|
|
71
|
+
event_id: String,
|
|
72
|
+
request_options: VitableConnect::RequestOptions::OrHash
|
|
73
|
+
).returns(VitableConnect::Models::WebhookEventListDeliveriesResponse)
|
|
74
|
+
end
|
|
75
|
+
def list_deliveries(event_id, request_options: {})
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @api private
|
|
79
|
+
sig { params(client: VitableConnect::Client).returns(T.attached_class) }
|
|
80
|
+
def self.new(client:)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module VitableConnect
|
|
2
|
+
class Client < VitableConnect::Internal::Transport::BaseClient
|
|
3
|
+
DEFAULT_MAX_RETRIES: 2
|
|
4
|
+
|
|
5
|
+
DEFAULT_TIMEOUT_IN_SECONDS: Float
|
|
6
|
+
|
|
7
|
+
DEFAULT_INITIAL_RETRY_DELAY: Float
|
|
8
|
+
|
|
9
|
+
DEFAULT_MAX_RETRY_DELAY: Float
|
|
10
|
+
|
|
11
|
+
ENVIRONMENTS: {
|
|
12
|
+
production: "https://api.vitablehealth.com",
|
|
13
|
+
:environment_1 => "https://api.uat.vitablehealth.com"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
attr_reader api_key: String
|
|
17
|
+
|
|
18
|
+
attr_reader auth: VitableConnect::Resources::Auth
|
|
19
|
+
|
|
20
|
+
attr_reader benefit_eligibility_policies: VitableConnect::Resources::BenefitEligibilityPolicies
|
|
21
|
+
|
|
22
|
+
attr_reader employees: VitableConnect::Resources::Employees
|
|
23
|
+
|
|
24
|
+
attr_reader employers: VitableConnect::Resources::Employers
|
|
25
|
+
|
|
26
|
+
attr_reader enrollments: VitableConnect::Resources::Enrollments
|
|
27
|
+
|
|
28
|
+
attr_reader webhook_events: VitableConnect::Resources::WebhookEvents
|
|
29
|
+
|
|
30
|
+
private def auth_headers: -> ::Hash[String, String]
|
|
31
|
+
|
|
32
|
+
def initialize: (
|
|
33
|
+
?api_key: String?,
|
|
34
|
+
?environment: :production | :environment_1 | nil,
|
|
35
|
+
?base_url: String?,
|
|
36
|
+
?max_retries: Integer,
|
|
37
|
+
?timeout: Float,
|
|
38
|
+
?initial_retry_delay: Float,
|
|
39
|
+
?max_retry_delay: Float
|
|
40
|
+
) -> void
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
module VitableConnect
|
|
2
|
+
module Errors
|
|
3
|
+
class Error < StandardError
|
|
4
|
+
attr_accessor cause: StandardError?
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
class ConversionError < VitableConnect::Errors::Error
|
|
8
|
+
def cause: -> StandardError?
|
|
9
|
+
|
|
10
|
+
def initialize: (
|
|
11
|
+
on: Class,
|
|
12
|
+
method: Symbol,
|
|
13
|
+
target: top,
|
|
14
|
+
value: top,
|
|
15
|
+
?cause: StandardError?
|
|
16
|
+
) -> void
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class APIError < VitableConnect::Errors::Error
|
|
20
|
+
attr_accessor url: URI::Generic
|
|
21
|
+
|
|
22
|
+
attr_accessor status: Integer?
|
|
23
|
+
|
|
24
|
+
attr_accessor headers: ::Hash[String, String]?
|
|
25
|
+
|
|
26
|
+
attr_accessor body: top?
|
|
27
|
+
|
|
28
|
+
def initialize: (
|
|
29
|
+
url: URI::Generic,
|
|
30
|
+
?status: Integer?,
|
|
31
|
+
?headers: ::Hash[String, String]?,
|
|
32
|
+
?body: Object?,
|
|
33
|
+
?request: nil,
|
|
34
|
+
?response: nil,
|
|
35
|
+
?message: String?
|
|
36
|
+
) -> void
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
class APIConnectionError < VitableConnect::Errors::APIError
|
|
40
|
+
def initialize: (
|
|
41
|
+
url: URI::Generic,
|
|
42
|
+
?status: nil,
|
|
43
|
+
?headers: ::Hash[String, String]?,
|
|
44
|
+
?body: nil,
|
|
45
|
+
?request: nil,
|
|
46
|
+
?response: nil,
|
|
47
|
+
?message: String?
|
|
48
|
+
) -> void
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
class APITimeoutError < VitableConnect::Errors::APIConnectionError
|
|
52
|
+
def initialize: (
|
|
53
|
+
url: URI::Generic,
|
|
54
|
+
?status: nil,
|
|
55
|
+
?headers: ::Hash[String, String]?,
|
|
56
|
+
?body: nil,
|
|
57
|
+
?request: nil,
|
|
58
|
+
?response: nil,
|
|
59
|
+
?message: String?
|
|
60
|
+
) -> void
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
class APIStatusError < VitableConnect::Errors::APIError
|
|
64
|
+
def self.for: (
|
|
65
|
+
url: URI::Generic,
|
|
66
|
+
status: Integer,
|
|
67
|
+
headers: ::Hash[String, String]?,
|
|
68
|
+
body: Object?,
|
|
69
|
+
request: nil,
|
|
70
|
+
response: nil,
|
|
71
|
+
?message: String?
|
|
72
|
+
) -> instance
|
|
73
|
+
|
|
74
|
+
def initialize: (
|
|
75
|
+
url: URI::Generic,
|
|
76
|
+
status: Integer,
|
|
77
|
+
headers: ::Hash[String, String]?,
|
|
78
|
+
body: Object?,
|
|
79
|
+
request: nil,
|
|
80
|
+
response: nil,
|
|
81
|
+
?message: String?
|
|
82
|
+
) -> void
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
class BadRequestError < VitableConnect::Errors::APIStatusError
|
|
86
|
+
HTTP_STATUS: 400
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
class AuthenticationError < VitableConnect::Errors::APIStatusError
|
|
90
|
+
HTTP_STATUS: 401
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
class PermissionDeniedError < VitableConnect::Errors::APIStatusError
|
|
94
|
+
HTTP_STATUS: 403
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
class NotFoundError < VitableConnect::Errors::APIStatusError
|
|
98
|
+
HTTP_STATUS: 404
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
class ConflictError < VitableConnect::Errors::APIStatusError
|
|
102
|
+
HTTP_STATUS: 409
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
class UnprocessableEntityError < VitableConnect::Errors::APIStatusError
|
|
106
|
+
HTTP_STATUS: 422
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
class RateLimitError < VitableConnect::Errors::APIStatusError
|
|
110
|
+
HTTP_STATUS: 429
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
class InternalServerError < VitableConnect::Errors::APIStatusError
|
|
114
|
+
HTTP_STATUS: Range[Integer]
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module VitableConnect
|
|
2
|
+
class FilePart
|
|
3
|
+
attr_reader content: Pathname | StringIO | IO | String
|
|
4
|
+
|
|
5
|
+
attr_reader content_type: String?
|
|
6
|
+
|
|
7
|
+
attr_reader filename: String?
|
|
8
|
+
|
|
9
|
+
private def read: -> String
|
|
10
|
+
|
|
11
|
+
def to_json: (*top a) -> String
|
|
12
|
+
|
|
13
|
+
def to_yaml: (*top a) -> String
|
|
14
|
+
|
|
15
|
+
def initialize: (
|
|
16
|
+
Pathname | StringIO | IO | String content,
|
|
17
|
+
?filename: (Pathname | String)?,
|
|
18
|
+
?content_type: String?
|
|
19
|
+
) -> void
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module VitableConnect
|
|
2
|
+
module Internal
|
|
3
|
+
class PageNumberPage[Elem]
|
|
4
|
+
include VitableConnect::Internal::Type::BasePage[Elem]
|
|
5
|
+
|
|
6
|
+
attr_accessor data: ::Array[Elem]?
|
|
7
|
+
|
|
8
|
+
attr_accessor pagination: Pagination
|
|
9
|
+
|
|
10
|
+
def inspect: -> String
|
|
11
|
+
|
|
12
|
+
type pagination = { page: Integer, total_pages: Integer }
|
|
13
|
+
class Pagination < VitableConnect::Internal::Type::BaseModel
|
|
14
|
+
attr_reader page: Integer?
|
|
15
|
+
|
|
16
|
+
def page=: (Integer) -> Integer
|
|
17
|
+
|
|
18
|
+
attr_reader total_pages: Integer?
|
|
19
|
+
|
|
20
|
+
def total_pages=: (Integer) -> Integer
|
|
21
|
+
|
|
22
|
+
def initialize: (?page: Integer, ?total_pages: Integer) -> void
|
|
23
|
+
|
|
24
|
+
def to_hash: -> { page: Integer, total_pages: Integer }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|