vitable-connect 0.5.0 → 1.0.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 +4 -4
- data/.fern/metadata.json +16 -0
- data/.fernignore +7 -0
- data/.rubocop.yml +110 -0
- data/CONTRIBUTING.md +120 -0
- data/LICENSE +201 -0
- data/README.md +170 -123
- data/Rakefile +20 -0
- data/custom.gemspec.rb +16 -0
- data/lib/VitableConnect/auth/client.rb +52 -0
- data/lib/VitableConnect/auth/types/issue_access_token_request.rb +13 -0
- data/lib/VitableConnect/client.rb +67 -0
- data/lib/VitableConnect/employees/client.rb +161 -0
- data/lib/VitableConnect/employees/types/get_employees_request.rb +11 -0
- data/lib/VitableConnect/employees/types/list_enrollments_employees_request.rb +15 -0
- data/lib/VitableConnect/employees/types/patched_update_employee_request.rb +27 -0
- data/lib/VitableConnect/employers/client.rb +904 -0
- data/lib/VitableConnect/employers/types/census_sync_request.rb +13 -0
- data/lib/VitableConnect/employers/types/create_employer_request.rb +23 -0
- data/lib/VitableConnect/employers/types/ensure_payroll_integration_email_employers_request.rb +11 -0
- data/lib/VitableConnect/employers/types/get_benefit_plan_year_employers_request.rb +13 -0
- data/lib/VitableConnect/employers/types/get_employers_request.rb +11 -0
- data/lib/VitableConnect/employers/types/get_hris_employers_request.rb +11 -0
- data/lib/VitableConnect/employers/types/get_invoice_pdf_employers_request.rb +13 -0
- data/lib/VitableConnect/employers/types/get_payroll_access_setup_employers_request.rb +11 -0
- data/lib/VitableConnect/employers/types/list_benefit_plan_year_enrollments_employers_request.rb +21 -0
- data/lib/VitableConnect/employers/types/list_benefit_plan_years_employers_request.rb +11 -0
- data/lib/VitableConnect/employers/types/list_employees_employers_request.rb +19 -0
- data/lib/VitableConnect/employers/types/list_employers_request.rb +25 -0
- data/lib/VitableConnect/employers/types/list_invoices_employers_request.rb +15 -0
- data/lib/VitableConnect/employers/types/list_payroll_deduction_statements_employers_request.rb +15 -0
- data/lib/VitableConnect/employers/types/submit_payroll_access_setup_request.rb +57 -0
- data/lib/VitableConnect/employers/types/update_employer_request.rb +19 -0
- data/lib/VitableConnect/employers/types/update_employer_settings_request.rb +13 -0
- data/lib/VitableConnect/enrollments/client.rb +152 -0
- data/lib/VitableConnect/enrollments/types/get_enrollments_request.rb +11 -0
- data/lib/VitableConnect/enrollments/types/reissue_enrollment_request.rb +17 -0
- data/lib/VitableConnect/enrollments/types/terminate_enrollment_request.rb +17 -0
- data/lib/VitableConnect/environment.rb +9 -0
- data/lib/VitableConnect/errors/api_error.rb +8 -0
- data/lib/VitableConnect/errors/client_error.rb +17 -0
- data/lib/VitableConnect/errors/redirect_error.rb +8 -0
- data/lib/VitableConnect/errors/response_error.rb +42 -0
- data/lib/VitableConnect/errors/server_error.rb +11 -0
- data/lib/VitableConnect/errors/timeout_error.rb +8 -0
- data/lib/VitableConnect/groups/client.rb +199 -0
- data/lib/VitableConnect/groups/members/client.rb +21 -0
- data/lib/VitableConnect/groups/members/sync/client.rb +122 -0
- data/lib/VitableConnect/groups/members/sync/types/get_sync_request.rb +17 -0
- data/lib/VitableConnect/groups/members/sync/types/group_member_sync_request.rb +17 -0
- data/lib/VitableConnect/groups/types/create_group_request.rb +13 -0
- data/lib/VitableConnect/groups/types/get_groups_request.rb +11 -0
- data/lib/VitableConnect/groups/types/list_groups_request.rb +13 -0
- data/lib/VitableConnect/groups/types/patched_update_group_request.rb +15 -0
- data/lib/VitableConnect/internal/errors/constraint_error.rb +10 -0
- data/lib/VitableConnect/internal/errors/type_error.rb +10 -0
- data/lib/VitableConnect/internal/http/base_request.rb +51 -0
- data/lib/VitableConnect/internal/http/raw_client.rb +265 -0
- data/lib/VitableConnect/internal/iterators/cursor_item_iterator.rb +28 -0
- data/lib/VitableConnect/internal/iterators/cursor_page_iterator.rb +63 -0
- data/lib/VitableConnect/internal/iterators/item_iterator.rb +65 -0
- data/lib/VitableConnect/internal/iterators/offset_item_iterator.rb +30 -0
- data/lib/VitableConnect/internal/iterators/offset_page_iterator.rb +103 -0
- data/lib/VitableConnect/internal/json/request.rb +41 -0
- data/lib/VitableConnect/internal/json/serializable.rb +25 -0
- data/lib/VitableConnect/internal/multipart/multipart_encoder.rb +141 -0
- data/lib/VitableConnect/internal/multipart/multipart_form_data.rb +78 -0
- data/lib/VitableConnect/internal/multipart/multipart_form_data_part.rb +51 -0
- data/lib/VitableConnect/internal/multipart/multipart_request.rb +40 -0
- data/lib/VitableConnect/internal/types/array.rb +47 -0
- data/lib/VitableConnect/internal/types/boolean.rb +34 -0
- data/lib/VitableConnect/internal/types/enum.rb +56 -0
- data/lib/VitableConnect/internal/types/hash.rb +36 -0
- data/lib/VitableConnect/internal/types/model/field.rb +38 -0
- data/lib/VitableConnect/internal/types/model.rb +208 -0
- data/lib/VitableConnect/internal/types/type.rb +35 -0
- data/lib/VitableConnect/internal/types/union.rb +161 -0
- data/lib/VitableConnect/internal/types/unknown.rb +15 -0
- data/lib/VitableConnect/internal/types/utils.rb +116 -0
- data/lib/VitableConnect/members/client.rb +385 -0
- data/lib/VitableConnect/members/types/get_household_members_request.rb +11 -0
- data/lib/VitableConnect/members/types/get_members_request.rb +11 -0
- data/lib/VitableConnect/members/types/list_dependents_members_request.rb +11 -0
- data/lib/VitableConnect/members/types/list_employments_members_request.rb +11 -0
- data/lib/VitableConnect/members/types/list_enrollments_members_request.rb +11 -0
- data/lib/VitableConnect/members/types/list_id_cards_members_request.rb +11 -0
- data/lib/VitableConnect/members/types/list_members_request.rb +15 -0
- data/lib/VitableConnect/members/types/list_qualifying_life_events_members_request.rb +17 -0
- data/lib/VitableConnect/organizations/client.rb +92 -0
- data/lib/VitableConnect/organizations/types/create_organization_request.rb +13 -0
- data/lib/VitableConnect/plans/client.rb +69 -0
- data/lib/VitableConnect/plans/types/list_plans_request.rb +13 -0
- data/lib/VitableConnect/types/access_method.rb +12 -0
- data/lib/VitableConnect/types/access_token_response.rb +15 -0
- data/lib/VitableConnect/types/additional_access_method.rb +12 -0
- data/lib/VitableConnect/types/address.rb +22 -0
- data/lib/VitableConnect/types/address_request.rb +17 -0
- data/lib/VitableConnect/types/benefit_family.rb +16 -0
- data/lib/VitableConnect/types/benefit_family_param_item.rb +16 -0
- data/lib/VitableConnect/types/benefit_lifecycle_stage_item.rb +15 -0
- data/lib/VitableConnect/types/benefit_plan_network.rb +29 -0
- data/lib/VitableConnect/types/benefit_plan_year_detail.rb +52 -0
- data/lib/VitableConnect/types/benefit_plan_year_id.rb +23 -0
- data/lib/VitableConnect/types/benefit_plan_year_list.rb +47 -0
- data/lib/VitableConnect/types/benefit_status.rb +14 -0
- data/lib/VitableConnect/types/benefit_summary.rb +15 -0
- data/lib/VitableConnect/types/bound_entity.rb +11 -0
- data/lib/VitableConnect/types/bound_entity_response.rb +11 -0
- data/lib/VitableConnect/types/bound_entity_type.rb +12 -0
- data/lib/VitableConnect/types/card_type.rb +14 -0
- data/lib/VitableConnect/types/category.rb +14 -0
- data/lib/VitableConnect/types/census_sync_detail_response.rb +10 -0
- data/lib/VitableConnect/types/census_sync_employee_address_request.rb +17 -0
- data/lib/VitableConnect/types/census_sync_employee_request.rb +27 -0
- data/lib/VitableConnect/types/census_sync_response.rb +11 -0
- data/lib/VitableConnect/types/classification_correction_source.rb +12 -0
- data/lib/VitableConnect/types/compensation_type.rb +12 -0
- data/lib/VitableConnect/types/contribution_class_compensation.rb +13 -0
- data/lib/VitableConnect/types/contribution_class_employment.rb +15 -0
- data/lib/VitableConnect/types/contribution_class_location.rb +12 -0
- data/lib/VitableConnect/types/contribution_range.rb +11 -0
- data/lib/VitableConnect/types/contribution_strategy.rb +13 -0
- data/lib/VitableConnect/types/contribution_tier.rb +26 -0
- data/lib/VitableConnect/types/coverage_tier.rb +15 -0
- data/lib/VitableConnect/types/create_organization_request_type.rb +16 -0
- data/lib/VitableConnect/types/created_after.rb +23 -0
- data/lib/VitableConnect/types/created_before.rb +23 -0
- data/lib/VitableConnect/types/deduction_detail.rb +21 -0
- data/lib/VitableConnect/types/deduction_frequency.rb +14 -0
- data/lib/VitableConnect/types/digital_benefit_card.rb +36 -0
- data/lib/VitableConnect/types/election_status_item.rb +14 -0
- data/lib/VitableConnect/types/eligibility_policy.rb +17 -0
- data/lib/VitableConnect/types/eligibility_policy_rule.rb +15 -0
- data/lib/VitableConnect/types/eligibility_rule_compensation_type.rb +13 -0
- data/lib/VitableConnect/types/eligibility_rule_employee_class.rb +17 -0
- data/lib/VitableConnect/types/eligible_geographical_location.rb +11 -0
- data/lib/VitableConnect/types/eligible_geographical_location_type.rb +12 -0
- data/lib/VitableConnect/types/employee.rb +53 -0
- data/lib/VitableConnect/types/employee_address.rb +17 -0
- data/lib/VitableConnect/types/employee_address_input.rb +19 -0
- data/lib/VitableConnect/types/employee_class.rb +16 -0
- data/lib/VitableConnect/types/employee_id.rb +23 -0
- data/lib/VitableConnect/types/employee_list_response.rb +12 -0
- data/lib/VitableConnect/types/employee_response.rb +10 -0
- data/lib/VitableConnect/types/employee_search.rb +23 -0
- data/lib/VitableConnect/types/employee_status.rb +12 -0
- data/lib/VitableConnect/types/employer.rb +34 -0
- data/lib/VitableConnect/types/employer_address.rb +18 -0
- data/lib/VitableConnect/types/employer_address_input.rb +17 -0
- data/lib/VitableConnect/types/employer_benefit_lifecycle_stage.rb +11 -0
- data/lib/VitableConnect/types/employer_benefit_plan_year_response.rb +10 -0
- data/lib/VitableConnect/types/employer_benefit_plan_years_list_response.rb +9 -0
- data/lib/VitableConnect/types/employer_contact.rb +12 -0
- data/lib/VitableConnect/types/employer_hris.rb +9 -0
- data/lib/VitableConnect/types/employer_hris_response.rb +10 -0
- data/lib/VitableConnect/types/employer_hris_status.rb +13 -0
- data/lib/VitableConnect/types/employer_id.rb +23 -0
- data/lib/VitableConnect/types/employer_invoice_pdf.rb +9 -0
- data/lib/VitableConnect/types/employer_invoice_pdf_response.rb +10 -0
- data/lib/VitableConnect/types/employer_invoices_list_response.rb +12 -0
- data/lib/VitableConnect/types/employer_payroll_deduction_statement_list_response.rb +12 -0
- data/lib/VitableConnect/types/employer_response.rb +10 -0
- data/lib/VitableConnect/types/employer_search.rb +23 -0
- data/lib/VitableConnect/types/employer_settings.rb +9 -0
- data/lib/VitableConnect/types/employer_settings_response.rb +10 -0
- data/lib/VitableConnect/types/enrollment.rb +34 -0
- data/lib/VitableConnect/types/enrollment_detail.rb +39 -0
- data/lib/VitableConnect/types/enrollment_id.rb +23 -0
- data/lib/VitableConnect/types/enrollment_list_response.rb +12 -0
- data/lib/VitableConnect/types/enrollment_rate.rb +13 -0
- data/lib/VitableConnect/types/enrollment_rate_summary.rb +13 -0
- data/lib/VitableConnect/types/enrollment_response.rb +10 -0
- data/lib/VitableConnect/types/enrollment_status.rb +14 -0
- data/lib/VitableConnect/types/error_response.rb +17 -0
- data/lib/VitableConnect/types/event_id.rb +23 -0
- data/lib/VitableConnect/types/event_name.rb +21 -0
- data/lib/VitableConnect/types/gender.rb +15 -0
- data/lib/VitableConnect/types/grant_type.rb +11 -0
- data/lib/VitableConnect/types/group.rb +19 -0
- data/lib/VitableConnect/types/group_id.rb +23 -0
- data/lib/VitableConnect/types/group_list_response.rb +12 -0
- data/lib/VitableConnect/types/group_member_sync_detail_response.rb +10 -0
- data/lib/VitableConnect/types/group_member_sync_failure.rb +13 -0
- data/lib/VitableConnect/types/group_member_sync_member_request.rb +23 -0
- data/lib/VitableConnect/types/group_member_sync_request_detail.rb +17 -0
- data/lib/VitableConnect/types/group_member_sync_request_detail_response.rb +10 -0
- data/lib/VitableConnect/types/group_member_sync_response.rb +13 -0
- data/lib/VitableConnect/types/group_member_sync_results.rb +13 -0
- data/lib/VitableConnect/types/group_response.rb +10 -0
- data/lib/VitableConnect/types/household_member.rb +22 -0
- data/lib/VitableConnect/types/household_member_relationship.rb +14 -0
- data/lib/VitableConnect/types/household_member_type.rb +13 -0
- data/lib/VitableConnect/types/household_members_response.rb +10 -0
- data/lib/VitableConnect/types/hris_connection.rb +17 -0
- data/lib/VitableConnect/types/hris_status_item.rb +15 -0
- data/lib/VitableConnect/types/ichra_contribution_class.rb +29 -0
- data/lib/VitableConnect/types/idp_provider.rb +12 -0
- data/lib/VitableConnect/types/include_cancelled.rb +23 -0
- data/lib/VitableConnect/types/invoice.rb +15 -0
- data/lib/VitableConnect/types/invoice_id.rb +23 -0
- data/lib/VitableConnect/types/invoices_cursor_pagination.rb +9 -0
- data/lib/VitableConnect/types/limit.rb +23 -0
- data/lib/VitableConnect/types/list_webhook_event_deliveries_response.rb +9 -0
- data/lib/VitableConnect/types/marital_status.rb +12 -0
- data/lib/VitableConnect/types/member.rb +42 -0
- data/lib/VitableConnect/types/member_address.rb +17 -0
- data/lib/VitableConnect/types/member_dependents_response.rb +10 -0
- data/lib/VitableConnect/types/member_digital_benefit_cards_response.rb +10 -0
- data/lib/VitableConnect/types/member_employments_response.rb +10 -0
- data/lib/VitableConnect/types/member_enrollment.rb +58 -0
- data/lib/VitableConnect/types/member_enrollments_response.rb +10 -0
- data/lib/VitableConnect/types/member_id.rb +23 -0
- data/lib/VitableConnect/types/member_legal_dependent.rb +24 -0
- data/lib/VitableConnect/types/member_list_item.rb +20 -0
- data/lib/VitableConnect/types/member_list_response.rb +12 -0
- data/lib/VitableConnect/types/member_qualifying_life_event.rb +19 -0
- data/lib/VitableConnect/types/member_qualifying_life_event_list_response.rb +12 -0
- data/lib/VitableConnect/types/member_response.rb +10 -0
- data/lib/VitableConnect/types/member_search.rb +23 -0
- data/lib/VitableConnect/types/member_status.rb +12 -0
- data/lib/VitableConnect/types/missing_employee_resolution.rb +12 -0
- data/lib/VitableConnect/types/name_suffix.rb +17 -0
- data/lib/VitableConnect/types/offset.rb +23 -0
- data/lib/VitableConnect/types/operation.rb +12 -0
- data/lib/VitableConnect/types/organization.rb +19 -0
- data/lib/VitableConnect/types/organization_employer.rb +44 -0
- data/lib/VitableConnect/types/organization_employer_list_response.rb +12 -0
- data/lib/VitableConnect/types/organization_hris_provider.rb +11 -0
- data/lib/VitableConnect/types/organization_hris_providers_response.rb +10 -0
- data/lib/VitableConnect/types/organization_type.rb +16 -0
- data/lib/VitableConnect/types/organizations_list_response.rb +12 -0
- data/lib/VitableConnect/types/page.rb +23 -0
- data/lib/VitableConnect/types/pagination.rb +16 -0
- data/lib/VitableConnect/types/payroll_access_setup_status.rb +11 -0
- data/lib/VitableConnect/types/payroll_access_setup_status_response.rb +10 -0
- data/lib/VitableConnect/types/payroll_deduction_statement.rb +29 -0
- data/lib/VitableConnect/types/payroll_integration_email.rb +9 -0
- data/lib/VitableConnect/types/payroll_integration_email_response.rb +10 -0
- data/lib/VitableConnect/types/plan.rb +11 -0
- data/lib/VitableConnect/types/plan_list_response.rb +12 -0
- data/lib/VitableConnect/types/plan_year_enrollment.rb +35 -0
- data/lib/VitableConnect/types/plan_year_enrollment_election_status.rb +14 -0
- data/lib/VitableConnect/types/plan_year_enrollment_list_response.rb +12 -0
- data/lib/VitableConnect/types/plan_year_enrollment_policy_status.rb +14 -0
- data/lib/VitableConnect/types/preferred_language.rb +16 -0
- data/lib/VitableConnect/types/product_code.rb +25 -0
- data/lib/VitableConnect/types/qualifying_life_event_status.rb +13 -0
- data/lib/VitableConnect/types/qualifying_life_event_type.rb +31 -0
- data/lib/VitableConnect/types/reissue_enrollment.rb +9 -0
- data/lib/VitableConnect/types/reissue_enrollment_response.rb +10 -0
- data/lib/VitableConnect/types/relationship.rb +12 -0
- data/lib/VitableConnect/types/remaining_employee_action.rb +12 -0
- data/lib/VitableConnect/types/request_id.rb +23 -0
- data/lib/VitableConnect/types/resource_id.rb +23 -0
- data/lib/VitableConnect/types/resource_type.rb +16 -0
- data/lib/VitableConnect/types/search.rb +23 -0
- data/lib/VitableConnect/types/sex_at_birth.rb +14 -0
- data/lib/VitableConnect/types/state.rb +72 -0
- data/lib/VitableConnect/types/status.rb +13 -0
- data/lib/VitableConnect/types/tax_classification.rb +13 -0
- data/lib/VitableConnect/types/termination_rule.rb +12 -0
- data/lib/VitableConnect/types/update_employer_address_input.rb +17 -0
- data/lib/VitableConnect/types/waiting_period.rb +13 -0
- data/lib/VitableConnect/types/webhook_delivery.rb +25 -0
- data/lib/VitableConnect/types/webhook_event.rb +19 -0
- data/lib/VitableConnect/types/webhook_event_list_response.rb +12 -0
- data/lib/VitableConnect/types/webhook_event_response.rb +10 -0
- data/lib/{vitable_connect → VitableConnect}/version.rb +1 -1
- data/lib/VitableConnect/webhook_events/client.rb +156 -0
- data/lib/VitableConnect/webhook_events/types/get_webhook_events_request.rb +11 -0
- data/lib/VitableConnect/webhook_events/types/list_deliveries_webhook_events_request.rb +11 -0
- data/lib/VitableConnect/webhook_events/types/list_webhook_events_request.rb +23 -0
- data/lib/VitableConnect.rb +268 -0
- data/lib/vitable_connect.rb +4 -105
- data/reference.md +3722 -0
- metadata +286 -266
- data/.ignore +0 -2
- data/CHANGELOG.md +0 -133
- data/lib/vitable_connect/client.rb +0 -139
- data/lib/vitable_connect/errors.rb +0 -228
- data/lib/vitable_connect/file_part.rb +0 -58
- data/lib/vitable_connect/internal/page_number_page.rb +0 -113
- data/lib/vitable_connect/internal/transport/base_client.rb +0 -582
- data/lib/vitable_connect/internal/transport/pooled_net_requester.rb +0 -210
- data/lib/vitable_connect/internal/type/array_of.rb +0 -168
- data/lib/vitable_connect/internal/type/base_model.rb +0 -534
- data/lib/vitable_connect/internal/type/base_page.rb +0 -55
- data/lib/vitable_connect/internal/type/boolean.rb +0 -77
- data/lib/vitable_connect/internal/type/converter.rb +0 -327
- data/lib/vitable_connect/internal/type/enum.rb +0 -152
- data/lib/vitable_connect/internal/type/file_input.rb +0 -111
- data/lib/vitable_connect/internal/type/hash_of.rb +0 -188
- data/lib/vitable_connect/internal/type/request_parameters.rb +0 -42
- data/lib/vitable_connect/internal/type/union.rb +0 -245
- data/lib/vitable_connect/internal/type/unknown.rb +0 -81
- data/lib/vitable_connect/internal/util.rb +0 -966
- data/lib/vitable_connect/internal.rb +0 -20
- data/lib/vitable_connect/models/auth_issue_access_token_params.rb +0 -68
- data/lib/vitable_connect/models/auth_issue_access_token_response.rb +0 -70
- data/lib/vitable_connect/models/employee.rb +0 -310
- data/lib/vitable_connect/models/employee_class.rb +0 -25
- data/lib/vitable_connect/models/employee_list_enrollments_params.rb +0 -38
- data/lib/vitable_connect/models/employee_retrieve_params.rb +0 -22
- data/lib/vitable_connect/models/employee_retrieve_response.rb +0 -18
- data/lib/vitable_connect/models/employer.rb +0 -155
- data/lib/vitable_connect/models/employer_create_params.rb +0 -115
- data/lib/vitable_connect/models/employer_list_employees_params.rb +0 -38
- data/lib/vitable_connect/models/employer_list_params.rb +0 -30
- data/lib/vitable_connect/models/employer_response.rb +0 -19
- data/lib/vitable_connect/models/employer_retrieve_params.rb +0 -22
- data/lib/vitable_connect/models/employer_submit_census_sync_params.rb +0 -374
- data/lib/vitable_connect/models/employer_submit_census_sync_response.rb +0 -35
- data/lib/vitable_connect/models/employer_update_settings_params.rb +0 -52
- data/lib/vitable_connect/models/employer_update_settings_response.rb +0 -56
- data/lib/vitable_connect/models/enrollment.rb +0 -234
- data/lib/vitable_connect/models/enrollment_retrieve_params.rb +0 -22
- data/lib/vitable_connect/models/enrollment_retrieve_response.rb +0 -18
- data/lib/vitable_connect/models/enrollment_status.rb +0 -21
- data/lib/vitable_connect/models/group.rb +0 -57
- data/lib/vitable_connect/models/group_create_params.rb +0 -26
- data/lib/vitable_connect/models/group_list_params.rb +0 -30
- data/lib/vitable_connect/models/group_response.rb +0 -18
- data/lib/vitable_connect/models/group_retrieve_params.rb +0 -22
- data/lib/vitable_connect/models/group_update_params.rb +0 -36
- data/lib/vitable_connect/models/groups/members/sync_retrieve_params.rb +0 -33
- data/lib/vitable_connect/models/groups/members/sync_retrieve_response.rb +0 -128
- data/lib/vitable_connect/models/groups/members/sync_submit_params.rb +0 -121
- data/lib/vitable_connect/models/groups/members/sync_submit_response.rb +0 -45
- data/lib/vitable_connect/models/pagination.rb +0 -42
- data/lib/vitable_connect/models/plan_list_params.rb +0 -30
- data/lib/vitable_connect/models/plan_list_response.rb +0 -22
- data/lib/vitable_connect/models/type.rb +0 -17
- data/lib/vitable_connect/models/webhook_event.rb +0 -62
- data/lib/vitable_connect/models/webhook_event_list_deliveries_params.rb +0 -20
- data/lib/vitable_connect/models/webhook_event_list_deliveries_response.rb +0 -92
- data/lib/vitable_connect/models/webhook_event_list_params.rb +0 -132
- data/lib/vitable_connect/models/webhook_event_retrieve_params.rb +0 -20
- data/lib/vitable_connect/models/webhook_event_retrieve_response.rb +0 -18
- data/lib/vitable_connect/models.rb +0 -104
- data/lib/vitable_connect/request_options.rb +0 -78
- data/lib/vitable_connect/resources/auth.rb +0 -41
- data/lib/vitable_connect/resources/benefit_eligibility_policies.rb +0 -14
- data/lib/vitable_connect/resources/employees.rb +0 -65
- data/lib/vitable_connect/resources/employers.rb +0 -184
- data/lib/vitable_connect/resources/enrollments.rb +0 -35
- data/lib/vitable_connect/resources/groups/members/sync.rb +0 -74
- data/lib/vitable_connect/resources/groups/members.rb +0 -20
- data/lib/vitable_connect/resources/groups.rb +0 -114
- data/lib/vitable_connect/resources/plans.rb +0 -41
- data/lib/vitable_connect/resources/webhook_events.rb +0 -95
- data/manifest.yaml +0 -17
- data/rbi/vitable_connect/client.rbi +0 -93
- data/rbi/vitable_connect/errors.rbi +0 -205
- data/rbi/vitable_connect/file_part.rbi +0 -37
- data/rbi/vitable_connect/internal/page_number_page.rbi +0 -49
- data/rbi/vitable_connect/internal/transport/base_client.rbi +0 -307
- data/rbi/vitable_connect/internal/transport/pooled_net_requester.rbi +0 -84
- data/rbi/vitable_connect/internal/type/array_of.rbi +0 -108
- data/rbi/vitable_connect/internal/type/base_model.rbi +0 -314
- data/rbi/vitable_connect/internal/type/base_page.rbi +0 -43
- data/rbi/vitable_connect/internal/type/boolean.rbi +0 -58
- data/rbi/vitable_connect/internal/type/converter.rbi +0 -225
- data/rbi/vitable_connect/internal/type/enum.rbi +0 -82
- data/rbi/vitable_connect/internal/type/file_input.rbi +0 -59
- data/rbi/vitable_connect/internal/type/hash_of.rbi +0 -108
- data/rbi/vitable_connect/internal/type/request_parameters.rbi +0 -31
- data/rbi/vitable_connect/internal/type/union.rbi +0 -130
- data/rbi/vitable_connect/internal/type/unknown.rbi +0 -58
- data/rbi/vitable_connect/internal/util.rbi +0 -515
- data/rbi/vitable_connect/internal.rbi +0 -18
- data/rbi/vitable_connect/models/auth_issue_access_token_params.rbi +0 -147
- data/rbi/vitable_connect/models/auth_issue_access_token_response.rbi +0 -128
- data/rbi/vitable_connect/models/employee.rbi +0 -450
- data/rbi/vitable_connect/models/employee_class.rbi +0 -38
- data/rbi/vitable_connect/models/employee_list_enrollments_params.rbi +0 -68
- data/rbi/vitable_connect/models/employee_retrieve_params.rbi +0 -46
- data/rbi/vitable_connect/models/employee_retrieve_response.rbi +0 -32
- data/rbi/vitable_connect/models/employer.rbi +0 -197
- data/rbi/vitable_connect/models/employer_create_params.rbi +0 -169
- data/rbi/vitable_connect/models/employer_list_employees_params.rbi +0 -68
- data/rbi/vitable_connect/models/employer_list_params.rbi +0 -60
- data/rbi/vitable_connect/models/employer_response.rbi +0 -36
- data/rbi/vitable_connect/models/employer_retrieve_params.rbi +0 -46
- data/rbi/vitable_connect/models/employer_submit_census_sync_params.rbi +0 -819
- data/rbi/vitable_connect/models/employer_submit_census_sync_response.rbi +0 -76
- data/rbi/vitable_connect/models/employer_update_settings_params.rbi +0 -114
- data/rbi/vitable_connect/models/employer_update_settings_response.rbi +0 -147
- data/rbi/vitable_connect/models/enrollment.rbi +0 -401
- data/rbi/vitable_connect/models/enrollment_retrieve_params.rbi +0 -46
- data/rbi/vitable_connect/models/enrollment_retrieve_response.rbi +0 -34
- data/rbi/vitable_connect/models/enrollment_status.rbi +0 -32
- data/rbi/vitable_connect/models/group.rbi +0 -77
- data/rbi/vitable_connect/models/group_create_params.rbi +0 -46
- data/rbi/vitable_connect/models/group_list_params.rbi +0 -60
- data/rbi/vitable_connect/models/group_response.rbi +0 -32
- data/rbi/vitable_connect/models/group_retrieve_params.rbi +0 -43
- data/rbi/vitable_connect/models/group_update_params.rbi +0 -58
- data/rbi/vitable_connect/models/groups/members/sync_retrieve_params.rbi +0 -56
- data/rbi/vitable_connect/models/groups/members/sync_retrieve_response.rbi +0 -282
- data/rbi/vitable_connect/models/groups/members/sync_submit_params.rbi +0 -214
- data/rbi/vitable_connect/models/groups/members/sync_submit_response.rbi +0 -92
- data/rbi/vitable_connect/models/pagination.rbi +0 -62
- data/rbi/vitable_connect/models/plan_list_params.rbi +0 -60
- data/rbi/vitable_connect/models/plan_list_response.rbi +0 -29
- data/rbi/vitable_connect/models/type.rbi +0 -21
- data/rbi/vitable_connect/models/webhook_event.rbi +0 -81
- data/rbi/vitable_connect/models/webhook_event_list_deliveries_params.rbi +0 -38
- data/rbi/vitable_connect/models/webhook_event_list_deliveries_response.rbi +0 -147
- data/rbi/vitable_connect/models/webhook_event_list_params.rbi +0 -299
- data/rbi/vitable_connect/models/webhook_event_retrieve_params.rbi +0 -38
- data/rbi/vitable_connect/models/webhook_event_retrieve_response.rbi +0 -34
- data/rbi/vitable_connect/models.rbi +0 -70
- data/rbi/vitable_connect/request_options.rbi +0 -61
- data/rbi/vitable_connect/resources/auth.rbi +0 -36
- data/rbi/vitable_connect/resources/benefit_eligibility_policies.rbi +0 -12
- data/rbi/vitable_connect/resources/employees.rbi +0 -51
- data/rbi/vitable_connect/resources/employers.rbi +0 -150
- data/rbi/vitable_connect/resources/enrollments.rbi +0 -27
- data/rbi/vitable_connect/resources/groups/members/sync.rbi +0 -62
- data/rbi/vitable_connect/resources/groups/members.rbi +0 -17
- data/rbi/vitable_connect/resources/groups.rbi +0 -79
- data/rbi/vitable_connect/resources/plans.rbi +0 -34
- data/rbi/vitable_connect/resources/webhook_events.rbi +0 -83
- data/rbi/vitable_connect/version.rbi +0 -5
- data/sig/vitable_connect/client.rbs +0 -46
- data/sig/vitable_connect/errors.rbs +0 -117
- data/sig/vitable_connect/file_part.rbs +0 -21
- data/sig/vitable_connect/internal/page_number_page.rbs +0 -28
- data/sig/vitable_connect/internal/transport/base_client.rbs +0 -133
- data/sig/vitable_connect/internal/transport/pooled_net_requester.rbs +0 -48
- data/sig/vitable_connect/internal/type/array_of.rbs +0 -48
- data/sig/vitable_connect/internal/type/base_model.rbs +0 -104
- data/sig/vitable_connect/internal/type/base_page.rbs +0 -24
- data/sig/vitable_connect/internal/type/boolean.rbs +0 -26
- data/sig/vitable_connect/internal/type/converter.rbs +0 -79
- data/sig/vitable_connect/internal/type/enum.rbs +0 -32
- data/sig/vitable_connect/internal/type/file_input.rbs +0 -25
- data/sig/vitable_connect/internal/type/hash_of.rbs +0 -48
- data/sig/vitable_connect/internal/type/request_parameters.rbs +0 -20
- data/sig/vitable_connect/internal/type/union.rbs +0 -52
- data/sig/vitable_connect/internal/type/unknown.rbs +0 -26
- data/sig/vitable_connect/internal/util.rbs +0 -199
- data/sig/vitable_connect/internal.rbs +0 -10
- data/sig/vitable_connect/models/auth_issue_access_token_params.rbs +0 -56
- data/sig/vitable_connect/models/auth_issue_access_token_response.rbs +0 -50
- data/sig/vitable_connect/models/employee.rbs +0 -214
- data/sig/vitable_connect/models/employee_class.rbs +0 -24
- data/sig/vitable_connect/models/employee_list_enrollments_params.rbs +0 -36
- data/sig/vitable_connect/models/employee_retrieve_params.rbs +0 -24
- data/sig/vitable_connect/models/employee_retrieve_response.rbs +0 -13
- data/sig/vitable_connect/models/employer.rbs +0 -112
- data/sig/vitable_connect/models/employer_create_params.rbs +0 -93
- data/sig/vitable_connect/models/employer_list_employees_params.rbs +0 -36
- data/sig/vitable_connect/models/employer_list_params.rbs +0 -32
- data/sig/vitable_connect/models/employer_response.rbs +0 -13
- data/sig/vitable_connect/models/employer_retrieve_params.rbs +0 -24
- data/sig/vitable_connect/models/employer_submit_census_sync_params.rbs +0 -274
- data/sig/vitable_connect/models/employer_submit_census_sync_response.rbs +0 -30
- data/sig/vitable_connect/models/employer_update_settings_params.rbs +0 -44
- data/sig/vitable_connect/models/employer_update_settings_response.rbs +0 -48
- data/sig/vitable_connect/models/enrollment.rbs +0 -164
- data/sig/vitable_connect/models/enrollment_retrieve_params.rbs +0 -24
- data/sig/vitable_connect/models/enrollment_retrieve_response.rbs +0 -13
- data/sig/vitable_connect/models/enrollment_status.rbs +0 -16
- data/sig/vitable_connect/models/group.rbs +0 -45
- data/sig/vitable_connect/models/group_create_params.rbs +0 -28
- data/sig/vitable_connect/models/group_list_params.rbs +0 -32
- data/sig/vitable_connect/models/group_response.rbs +0 -13
- data/sig/vitable_connect/models/group_retrieve_params.rbs +0 -23
- data/sig/vitable_connect/models/group_update_params.rbs +0 -32
- data/sig/vitable_connect/models/groups/members/sync_retrieve_params.rbs +0 -32
- data/sig/vitable_connect/models/groups/members/sync_retrieve_response.rbs +0 -126
- data/sig/vitable_connect/models/groups/members/sync_submit_params.rbs +0 -124
- data/sig/vitable_connect/models/groups/members/sync_submit_response.rbs +0 -47
- data/sig/vitable_connect/models/pagination.rbs +0 -30
- data/sig/vitable_connect/models/plan_list_params.rbs +0 -32
- data/sig/vitable_connect/models/plan_list_response.rbs +0 -15
- data/sig/vitable_connect/models/type.rbs +0 -14
- data/sig/vitable_connect/models/webhook_event.rbs +0 -45
- data/sig/vitable_connect/models/webhook_event_list_deliveries_params.rbs +0 -23
- data/sig/vitable_connect/models/webhook_event_list_deliveries_response.rbs +0 -77
- data/sig/vitable_connect/models/webhook_event_list_params.rbs +0 -124
- data/sig/vitable_connect/models/webhook_event_retrieve_params.rbs +0 -23
- data/sig/vitable_connect/models/webhook_event_retrieve_response.rbs +0 -14
- data/sig/vitable_connect/models.rbs +0 -61
- data/sig/vitable_connect/request_options.rbs +0 -36
- data/sig/vitable_connect/resources/auth.rbs +0 -13
- data/sig/vitable_connect/resources/benefit_eligibility_policies.rbs +0 -7
- data/sig/vitable_connect/resources/employees.rbs +0 -19
- data/sig/vitable_connect/resources/employers.rbs +0 -48
- data/sig/vitable_connect/resources/enrollments.rbs +0 -12
- data/sig/vitable_connect/resources/groups/members/sync.rbs +0 -23
- data/sig/vitable_connect/resources/groups/members.rbs +0 -11
- data/sig/vitable_connect/resources/groups.rbs +0 -33
- data/sig/vitable_connect/resources/plans.rbs +0 -13
- data/sig/vitable_connect/resources/webhook_events.rbs +0 -28
- data/sig/vitable_connect/version.rbs +0 -3
|
@@ -0,0 +1,904 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module VitableConnect
|
|
4
|
+
module Employers
|
|
5
|
+
class Client
|
|
6
|
+
# @param client [VitableConnect::Internal::Http::RawClient]
|
|
7
|
+
#
|
|
8
|
+
# @return [void]
|
|
9
|
+
def initialize(client:)
|
|
10
|
+
@client = client
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Returns the caller's employer book — every employer with its computed columns (enrollment-rate summary,
|
|
14
|
+
# benefit-family tags, HRIS connection, benefit-lifecycle stage) merged with the employer's flat CRM fields (legal
|
|
15
|
+
# name, EIN, contact, address, timestamps). The book is derived from the authenticated principal: one
|
|
16
|
+
# organization's employers, or every organization's for a caller whose reach is not a single organization.
|
|
17
|
+
# Supports search by display name, legal name, or exact EIN, employer id or contact email,
|
|
18
|
+
# benefit-family/lifecycle/HRIS filters, and page/limit pagination.
|
|
19
|
+
#
|
|
20
|
+
# @param request_options [Hash]
|
|
21
|
+
# @param params [Hash]
|
|
22
|
+
# @option request_options [String] :base_url
|
|
23
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
24
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
25
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
26
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
27
|
+
# @option params [VitableConnect::Types::BenefitFamilyParamItem, nil] :benefit_family
|
|
28
|
+
# @option params [VitableConnect::Types::BenefitLifecycleStageItem, nil] :benefit_lifecycle_stage
|
|
29
|
+
# @option params [String, nil] :hris_provider
|
|
30
|
+
# @option params [VitableConnect::Types::HrisStatusItem, nil] :hris_status
|
|
31
|
+
# @option params [Boolean, nil] :include_cancelled
|
|
32
|
+
# @option params [Integer, nil] :limit
|
|
33
|
+
# @option params [Integer, nil] :page
|
|
34
|
+
# @option params [String, nil] :search
|
|
35
|
+
#
|
|
36
|
+
# @example
|
|
37
|
+
# client.employers.list(
|
|
38
|
+
# limit: 20,
|
|
39
|
+
# page: 1
|
|
40
|
+
# )
|
|
41
|
+
#
|
|
42
|
+
# @return [VitableConnect::Types::OrganizationEmployerListResponse]
|
|
43
|
+
def list(request_options: {}, **params)
|
|
44
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
45
|
+
query_params = {}
|
|
46
|
+
query_params["benefit_family"] = params[:benefit_family] if params.key?(:benefit_family)
|
|
47
|
+
query_params["benefit_lifecycle_stage"] = params[:benefit_lifecycle_stage] if params.key?(:benefit_lifecycle_stage)
|
|
48
|
+
query_params["hris_provider"] = params[:hris_provider] if params.key?(:hris_provider)
|
|
49
|
+
query_params["hris_status"] = params[:hris_status] if params.key?(:hris_status)
|
|
50
|
+
query_params["include_cancelled"] = params[:include_cancelled] if params.key?(:include_cancelled)
|
|
51
|
+
query_params["limit"] = params[:limit] if params.key?(:limit)
|
|
52
|
+
query_params["page"] = params[:page] if params.key?(:page)
|
|
53
|
+
query_params["search"] = params[:search] if params.key?(:search)
|
|
54
|
+
|
|
55
|
+
VitableConnect::Internal::OffsetItemIterator.new(
|
|
56
|
+
initial_page: query_params["page"],
|
|
57
|
+
item_field: :data,
|
|
58
|
+
has_next_field: nil,
|
|
59
|
+
step: false
|
|
60
|
+
) do |next_page|
|
|
61
|
+
query_params["page"] = next_page
|
|
62
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
63
|
+
base_url: request_options[:base_url],
|
|
64
|
+
method: "GET",
|
|
65
|
+
path: "v1/employers",
|
|
66
|
+
query: query_params,
|
|
67
|
+
request_options: request_options
|
|
68
|
+
)
|
|
69
|
+
begin
|
|
70
|
+
response = @client.send(request)
|
|
71
|
+
rescue Net::HTTPRequestTimeout
|
|
72
|
+
raise VitableConnect::Errors::TimeoutError
|
|
73
|
+
end
|
|
74
|
+
code = response.code.to_i
|
|
75
|
+
if code.between?(200, 299)
|
|
76
|
+
parsed_response = VitableConnect::Types::OrganizationEmployerListResponse.load(response.body)
|
|
77
|
+
[parsed_response, response]
|
|
78
|
+
else
|
|
79
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
80
|
+
raise error_class.new(response.body, code: code)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Creates a new employer for the authenticated organization. Requires employer name, legal name, EIN, email, and
|
|
86
|
+
# address information. Returns the created employer with its assigned ID.
|
|
87
|
+
#
|
|
88
|
+
# @param request_options [Hash]
|
|
89
|
+
# @param params [VitableConnect::Employers::Types::CreateEmployerRequest]
|
|
90
|
+
# @option request_options [String] :base_url
|
|
91
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
92
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
93
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
94
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
95
|
+
#
|
|
96
|
+
# @example
|
|
97
|
+
# client.employers.create(
|
|
98
|
+
# name: "NewCo Industries",
|
|
99
|
+
# legal_name: "NewCo Industries LLC",
|
|
100
|
+
# ein: "12-3456789",
|
|
101
|
+
# email: "hr@newco.com",
|
|
102
|
+
# address: {
|
|
103
|
+
# address_line1: "789 Business Blvd",
|
|
104
|
+
# address_line2: "Floor 5",
|
|
105
|
+
# city: "Seattle",
|
|
106
|
+
# state: "WA",
|
|
107
|
+
# zipcode: "98101"
|
|
108
|
+
# },
|
|
109
|
+
# phone_number: "2065550100",
|
|
110
|
+
# reference_id: "partner-emp-001"
|
|
111
|
+
# )
|
|
112
|
+
#
|
|
113
|
+
# @return [VitableConnect::Types::EmployerResponse]
|
|
114
|
+
def create(request_options: {}, **params)
|
|
115
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
116
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
117
|
+
base_url: request_options[:base_url],
|
|
118
|
+
method: "POST",
|
|
119
|
+
path: "v1/employers",
|
|
120
|
+
body: VitableConnect::Employers::Types::CreateEmployerRequest.new(params).to_h,
|
|
121
|
+
request_options: request_options
|
|
122
|
+
)
|
|
123
|
+
begin
|
|
124
|
+
response = @client.send(request)
|
|
125
|
+
rescue Net::HTTPRequestTimeout
|
|
126
|
+
raise VitableConnect::Errors::TimeoutError
|
|
127
|
+
end
|
|
128
|
+
code = response.code.to_i
|
|
129
|
+
if code.between?(200, 299)
|
|
130
|
+
VitableConnect::Types::EmployerResponse.load(response.body)
|
|
131
|
+
else
|
|
132
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
133
|
+
raise error_class.new(response.body, code: code)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# Retrieves detailed information for a specific employer by ID. The employer must belong to the authenticated
|
|
138
|
+
# organization.
|
|
139
|
+
#
|
|
140
|
+
# @param request_options [Hash]
|
|
141
|
+
# @param params [Hash]
|
|
142
|
+
# @option request_options [String] :base_url
|
|
143
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
144
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
145
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
146
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
147
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
148
|
+
#
|
|
149
|
+
# @example
|
|
150
|
+
# client.employers.get(employer_id: "empr_abc123def456")
|
|
151
|
+
#
|
|
152
|
+
# @return [VitableConnect::Types::EmployerResponse]
|
|
153
|
+
def get(request_options: {}, **params)
|
|
154
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
155
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
156
|
+
base_url: request_options[:base_url],
|
|
157
|
+
method: "GET",
|
|
158
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}",
|
|
159
|
+
request_options: request_options
|
|
160
|
+
)
|
|
161
|
+
begin
|
|
162
|
+
response = @client.send(request)
|
|
163
|
+
rescue Net::HTTPRequestTimeout
|
|
164
|
+
raise VitableConnect::Errors::TimeoutError
|
|
165
|
+
end
|
|
166
|
+
code = response.code.to_i
|
|
167
|
+
if code.between?(200, 299)
|
|
168
|
+
VitableConnect::Types::EmployerResponse.load(response.body)
|
|
169
|
+
else
|
|
170
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
171
|
+
raise error_class.new(response.body, code: code)
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# Updates an existing employer. All fields are optional — only provided fields are updated. PO Box addresses are
|
|
176
|
+
# rejected.
|
|
177
|
+
#
|
|
178
|
+
# @param request_options [Hash]
|
|
179
|
+
# @param params [VitableConnect::Employers::Types::UpdateEmployerRequest]
|
|
180
|
+
# @option request_options [String] :base_url
|
|
181
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
182
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
183
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
184
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
185
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
186
|
+
#
|
|
187
|
+
# @example
|
|
188
|
+
# client.employers.update(employer_id: "empr_abc123def456")
|
|
189
|
+
#
|
|
190
|
+
# @return [VitableConnect::Types::EmployerResponse]
|
|
191
|
+
def update(request_options: {}, **params)
|
|
192
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
193
|
+
request_data = VitableConnect::Employers::Types::UpdateEmployerRequest.new(params).to_h
|
|
194
|
+
non_body_param_names = %w[employer_id]
|
|
195
|
+
body = request_data.except(*non_body_param_names)
|
|
196
|
+
|
|
197
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
198
|
+
base_url: request_options[:base_url],
|
|
199
|
+
method: "PUT",
|
|
200
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}",
|
|
201
|
+
body: body,
|
|
202
|
+
request_options: request_options
|
|
203
|
+
)
|
|
204
|
+
begin
|
|
205
|
+
response = @client.send(request)
|
|
206
|
+
rescue Net::HTTPRequestTimeout
|
|
207
|
+
raise VitableConnect::Errors::TimeoutError
|
|
208
|
+
end
|
|
209
|
+
code = response.code.to_i
|
|
210
|
+
if code.between?(200, 299)
|
|
211
|
+
VitableConnect::Types::EmployerResponse.load(response.body)
|
|
212
|
+
else
|
|
213
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
214
|
+
raise error_class.new(response.body, code: code)
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
# Returns the employer's benefit plan years (all years, or one when `year` is given), each with its benefits,
|
|
219
|
+
# offered states, benefit families, and the year-level enrollment roll-up. The caller must be authorized for the
|
|
220
|
+
# employer; an unknown or unauthorized employer returns 404.
|
|
221
|
+
#
|
|
222
|
+
# @param request_options [Hash]
|
|
223
|
+
# @param params [Hash]
|
|
224
|
+
# @option request_options [String] :base_url
|
|
225
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
226
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
227
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
228
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
229
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
230
|
+
#
|
|
231
|
+
# @example
|
|
232
|
+
# client.employers.list_benefit_plan_years(employer_id: "empr_abc123def456")
|
|
233
|
+
#
|
|
234
|
+
# @return [VitableConnect::Types::EmployerBenefitPlanYearsListResponse]
|
|
235
|
+
def list_benefit_plan_years(request_options: {}, **params)
|
|
236
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
237
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
238
|
+
base_url: request_options[:base_url],
|
|
239
|
+
method: "GET",
|
|
240
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/benefit-plan-years",
|
|
241
|
+
request_options: request_options
|
|
242
|
+
)
|
|
243
|
+
begin
|
|
244
|
+
response = @client.send(request)
|
|
245
|
+
rescue Net::HTTPRequestTimeout
|
|
246
|
+
raise VitableConnect::Errors::TimeoutError
|
|
247
|
+
end
|
|
248
|
+
code = response.code.to_i
|
|
249
|
+
if code.between?(200, 299)
|
|
250
|
+
VitableConnect::Types::EmployerBenefitPlanYearsListResponse.load(response.body)
|
|
251
|
+
else
|
|
252
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
253
|
+
raise error_class.new(response.body, code: code)
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
# Returns one benefit plan year in full — its benefit details plus the per-benefit enrollment rate and SPD link —
|
|
258
|
+
# addressed by its `benefit_plan_year_id`. The caller must be authorized for the employer; an unknown or
|
|
259
|
+
# unauthorized plan year returns 404.
|
|
260
|
+
#
|
|
261
|
+
# @param request_options [Hash]
|
|
262
|
+
# @param params [Hash]
|
|
263
|
+
# @option request_options [String] :base_url
|
|
264
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
265
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
266
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
267
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
268
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
269
|
+
# @option params [VitableConnect::Types::BenefitPlanYearID] :benefit_plan_year_id
|
|
270
|
+
#
|
|
271
|
+
# @example
|
|
272
|
+
# client.employers.get_benefit_plan_year(
|
|
273
|
+
# employer_id: "empr_abc123def456",
|
|
274
|
+
# benefit_plan_year_id: "plyr_abc123def456"
|
|
275
|
+
# )
|
|
276
|
+
#
|
|
277
|
+
# @return [VitableConnect::Types::EmployerBenefitPlanYearResponse]
|
|
278
|
+
def get_benefit_plan_year(request_options: {}, **params)
|
|
279
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
280
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
281
|
+
base_url: request_options[:base_url],
|
|
282
|
+
method: "GET",
|
|
283
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/benefit-plan-years/#{URI.encode_uri_component(params[:benefit_plan_year_id].to_s)}",
|
|
284
|
+
request_options: request_options
|
|
285
|
+
)
|
|
286
|
+
begin
|
|
287
|
+
response = @client.send(request)
|
|
288
|
+
rescue Net::HTTPRequestTimeout
|
|
289
|
+
raise VitableConnect::Errors::TimeoutError
|
|
290
|
+
end
|
|
291
|
+
code = response.code.to_i
|
|
292
|
+
if code.between?(200, 299)
|
|
293
|
+
VitableConnect::Types::EmployerBenefitPlanYearResponse.load(response.body)
|
|
294
|
+
else
|
|
295
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
296
|
+
raise error_class.new(response.body, code: code)
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
# Returns a paginated list of every member with an enrollment in one of an employer's plan years, any election
|
|
301
|
+
# status: what they elected, where their coverage stands, dependent count, carrier, plan, tier, and the plan's
|
|
302
|
+
# total monthly cost. The caller must be authorized for the employer `empr_<...>`; an unknown or unauthorized
|
|
303
|
+
# employer, or an unknown plan year `plyr_<...>`, returns 404.
|
|
304
|
+
#
|
|
305
|
+
# @param request_options [Hash]
|
|
306
|
+
# @param params [Hash]
|
|
307
|
+
# @option request_options [String] :base_url
|
|
308
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
309
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
310
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
311
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
312
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
313
|
+
# @option params [VitableConnect::Types::BenefitPlanYearID] :benefit_plan_year_id
|
|
314
|
+
# @option params [VitableConnect::Types::ElectionStatusItem, nil] :election_status
|
|
315
|
+
# @option params [Integer, nil] :limit
|
|
316
|
+
# @option params [Integer, nil] :page
|
|
317
|
+
# @option params [String, nil] :search
|
|
318
|
+
#
|
|
319
|
+
# @example
|
|
320
|
+
# client.employers.list_benefit_plan_year_enrollments(
|
|
321
|
+
# employer_id: "empr_abc123def456",
|
|
322
|
+
# benefit_plan_year_id: "plyr_abc123def456",
|
|
323
|
+
# limit: 20,
|
|
324
|
+
# page: 1
|
|
325
|
+
# )
|
|
326
|
+
#
|
|
327
|
+
# @return [VitableConnect::Types::PlanYearEnrollmentListResponse]
|
|
328
|
+
def list_benefit_plan_year_enrollments(request_options: {}, **params)
|
|
329
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
330
|
+
query_params = {}
|
|
331
|
+
query_params["election_status"] = params[:election_status] if params.key?(:election_status)
|
|
332
|
+
query_params["limit"] = params[:limit] if params.key?(:limit)
|
|
333
|
+
query_params["page"] = params[:page] if params.key?(:page)
|
|
334
|
+
query_params["search"] = params[:search] if params.key?(:search)
|
|
335
|
+
|
|
336
|
+
VitableConnect::Internal::OffsetItemIterator.new(
|
|
337
|
+
initial_page: query_params["page"],
|
|
338
|
+
item_field: :data,
|
|
339
|
+
has_next_field: nil,
|
|
340
|
+
step: false
|
|
341
|
+
) do |next_page|
|
|
342
|
+
query_params["page"] = next_page
|
|
343
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
344
|
+
base_url: request_options[:base_url],
|
|
345
|
+
method: "GET",
|
|
346
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/benefit-plan-years/#{URI.encode_uri_component(params[:benefit_plan_year_id].to_s)}/enrollments",
|
|
347
|
+
query: query_params,
|
|
348
|
+
request_options: request_options
|
|
349
|
+
)
|
|
350
|
+
begin
|
|
351
|
+
response = @client.send(request)
|
|
352
|
+
rescue Net::HTTPRequestTimeout
|
|
353
|
+
raise VitableConnect::Errors::TimeoutError
|
|
354
|
+
end
|
|
355
|
+
code = response.code.to_i
|
|
356
|
+
if code.between?(200, 299)
|
|
357
|
+
parsed_response = VitableConnect::Types::PlanYearEnrollmentListResponse.load(response.body)
|
|
358
|
+
[parsed_response, response]
|
|
359
|
+
else
|
|
360
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
361
|
+
raise error_class.new(response.body, code: code)
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
# Submits a census sync payload for the specified employer. The employees in the payload will be queued for
|
|
367
|
+
# processing. Returns an accepted response with the timestamp of acceptance.
|
|
368
|
+
#
|
|
369
|
+
# @param request_options [Hash]
|
|
370
|
+
# @param params [VitableConnect::Employers::Types::CensusSyncRequest]
|
|
371
|
+
# @option request_options [String] :base_url
|
|
372
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
373
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
374
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
375
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
376
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
377
|
+
#
|
|
378
|
+
# @example
|
|
379
|
+
# client.employers.submit_census_sync(
|
|
380
|
+
# employer_id: "empr_abc123def456",
|
|
381
|
+
# employees: [{
|
|
382
|
+
# reference_id: "EMP-001",
|
|
383
|
+
# first_name: "Jane",
|
|
384
|
+
# last_name: "Doe",
|
|
385
|
+
# date_of_birth: "1990-05-15",
|
|
386
|
+
# email: "jane.doe@acme.com",
|
|
387
|
+
# phone: "4155550100",
|
|
388
|
+
# address: {
|
|
389
|
+
# address_line1: "123 Main Street",
|
|
390
|
+
# address_line2: "Apt 4B",
|
|
391
|
+
# city: "San Francisco",
|
|
392
|
+
# state: "CA",
|
|
393
|
+
# zipcode: "94102"
|
|
394
|
+
# },
|
|
395
|
+
# start_date: "2024-01-15",
|
|
396
|
+
# employee_class: "Full Time",
|
|
397
|
+
# compensation_type: "Salary"
|
|
398
|
+
# }, {
|
|
399
|
+
# first_name: "John",
|
|
400
|
+
# last_name: "Smith",
|
|
401
|
+
# date_of_birth: "1985-11-20",
|
|
402
|
+
# email: "john.smith@acme.com",
|
|
403
|
+
# phone: "4155550101",
|
|
404
|
+
# start_date: "2024-03-01",
|
|
405
|
+
# employee_class: "Part Time",
|
|
406
|
+
# compensation_type: "Hourly"
|
|
407
|
+
# }]
|
|
408
|
+
# )
|
|
409
|
+
#
|
|
410
|
+
# @return [VitableConnect::Types::CensusSyncDetailResponse]
|
|
411
|
+
def submit_census_sync(request_options: {}, **params)
|
|
412
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
413
|
+
request_data = VitableConnect::Employers::Types::CensusSyncRequest.new(params).to_h
|
|
414
|
+
non_body_param_names = %w[employer_id]
|
|
415
|
+
body = request_data.except(*non_body_param_names)
|
|
416
|
+
|
|
417
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
418
|
+
base_url: request_options[:base_url],
|
|
419
|
+
method: "POST",
|
|
420
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/census-sync",
|
|
421
|
+
body: body,
|
|
422
|
+
request_options: request_options
|
|
423
|
+
)
|
|
424
|
+
begin
|
|
425
|
+
response = @client.send(request)
|
|
426
|
+
rescue Net::HTTPRequestTimeout
|
|
427
|
+
raise VitableConnect::Errors::TimeoutError
|
|
428
|
+
end
|
|
429
|
+
code = response.code.to_i
|
|
430
|
+
if code.between?(200, 299)
|
|
431
|
+
VitableConnect::Types::CensusSyncDetailResponse.load(response.body)
|
|
432
|
+
else
|
|
433
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
434
|
+
raise error_class.new(response.body, code: code)
|
|
435
|
+
end
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
# Retrieves a paginated list of employees for a specific employer. The caller must be authorized for the employer;
|
|
439
|
+
# an unknown or unauthorized employer returns 404. Results are paginated using page and limit parameters and can
|
|
440
|
+
# be narrowed with a case-insensitive `search` (first name, last name, or email) and an `employment_status` filter
|
|
441
|
+
# (active or terminated). Each employee includes payroll deductions from the most recent statement period. When a
|
|
442
|
+
# new deduction statement is generated, previous period deductions are replaced.
|
|
443
|
+
#
|
|
444
|
+
# @param request_options [Hash]
|
|
445
|
+
# @param params [Hash]
|
|
446
|
+
# @option request_options [String] :base_url
|
|
447
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
448
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
449
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
450
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
451
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
452
|
+
# @option params [VitableConnect::Types::EmployeeStatus, nil] :employment_status
|
|
453
|
+
# @option params [Integer, nil] :limit
|
|
454
|
+
# @option params [Integer, nil] :page
|
|
455
|
+
# @option params [String, nil] :search
|
|
456
|
+
#
|
|
457
|
+
# @example
|
|
458
|
+
# client.employers.list_employees(
|
|
459
|
+
# employer_id: "empr_abc123def456",
|
|
460
|
+
# limit: 20,
|
|
461
|
+
# page: 1,
|
|
462
|
+
# search: "jane"
|
|
463
|
+
# )
|
|
464
|
+
#
|
|
465
|
+
# @return [VitableConnect::Types::EmployeeListResponse]
|
|
466
|
+
def list_employees(request_options: {}, **params)
|
|
467
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
468
|
+
query_params = {}
|
|
469
|
+
query_params["employment_status"] = params[:employment_status] if params.key?(:employment_status)
|
|
470
|
+
query_params["limit"] = params[:limit] if params.key?(:limit)
|
|
471
|
+
query_params["page"] = params[:page] if params.key?(:page)
|
|
472
|
+
query_params["search"] = params[:search] if params.key?(:search)
|
|
473
|
+
|
|
474
|
+
VitableConnect::Internal::OffsetItemIterator.new(
|
|
475
|
+
initial_page: query_params["page"],
|
|
476
|
+
item_field: :data,
|
|
477
|
+
has_next_field: nil,
|
|
478
|
+
step: false
|
|
479
|
+
) do |next_page|
|
|
480
|
+
query_params["page"] = next_page
|
|
481
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
482
|
+
base_url: request_options[:base_url],
|
|
483
|
+
method: "GET",
|
|
484
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/employees",
|
|
485
|
+
query: query_params,
|
|
486
|
+
request_options: request_options
|
|
487
|
+
)
|
|
488
|
+
begin
|
|
489
|
+
response = @client.send(request)
|
|
490
|
+
rescue Net::HTTPRequestTimeout
|
|
491
|
+
raise VitableConnect::Errors::TimeoutError
|
|
492
|
+
end
|
|
493
|
+
code = response.code.to_i
|
|
494
|
+
if code.between?(200, 299)
|
|
495
|
+
parsed_response = VitableConnect::Types::EmployeeListResponse.load(response.body)
|
|
496
|
+
[parsed_response, response]
|
|
497
|
+
else
|
|
498
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
499
|
+
raise error_class.new(response.body, code: code)
|
|
500
|
+
end
|
|
501
|
+
end
|
|
502
|
+
end
|
|
503
|
+
|
|
504
|
+
# Returns the employer's HRIS connection — provider, status, last sync, and synced row count — or null when the
|
|
505
|
+
# employer has no integration. The caller must be authorized for the employer; an unknown or unauthorized employer
|
|
506
|
+
# returns 404.
|
|
507
|
+
#
|
|
508
|
+
# @param request_options [Hash]
|
|
509
|
+
# @param params [Hash]
|
|
510
|
+
# @option request_options [String] :base_url
|
|
511
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
512
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
513
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
514
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
515
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
516
|
+
#
|
|
517
|
+
# @example
|
|
518
|
+
# client.employers.get_hris(employer_id: "empr_abc123def456")
|
|
519
|
+
#
|
|
520
|
+
# @return [VitableConnect::Types::EmployerHrisResponse]
|
|
521
|
+
def get_hris(request_options: {}, **params)
|
|
522
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
523
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
524
|
+
base_url: request_options[:base_url],
|
|
525
|
+
method: "GET",
|
|
526
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/hris",
|
|
527
|
+
request_options: request_options
|
|
528
|
+
)
|
|
529
|
+
begin
|
|
530
|
+
response = @client.send(request)
|
|
531
|
+
rescue Net::HTTPRequestTimeout
|
|
532
|
+
raise VitableConnect::Errors::TimeoutError
|
|
533
|
+
end
|
|
534
|
+
code = response.code.to_i
|
|
535
|
+
if code.between?(200, 299)
|
|
536
|
+
VitableConnect::Types::EmployerHrisResponse.load(response.body)
|
|
537
|
+
else
|
|
538
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
539
|
+
raise error_class.new(response.body, code: code)
|
|
540
|
+
end
|
|
541
|
+
end
|
|
542
|
+
|
|
543
|
+
# Returns a cursor-paginated page of the employer's billing invoices, newest first. Pass the `next_offset` from a
|
|
544
|
+
# previous page as `offset` to fetch the next page. The caller must be authorized for the employer; an unknown or
|
|
545
|
+
# unauthorized employer returns 404.
|
|
546
|
+
#
|
|
547
|
+
# @param request_options [Hash]
|
|
548
|
+
# @param params [Hash]
|
|
549
|
+
# @option request_options [String] :base_url
|
|
550
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
551
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
552
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
553
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
554
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
555
|
+
# @option params [Integer, nil] :limit
|
|
556
|
+
# @option params [String, nil] :offset
|
|
557
|
+
#
|
|
558
|
+
# @example
|
|
559
|
+
# client.employers.list_invoices(
|
|
560
|
+
# employer_id: "empr_abc123def456",
|
|
561
|
+
# limit: 20
|
|
562
|
+
# )
|
|
563
|
+
#
|
|
564
|
+
# @return [VitableConnect::Types::EmployerInvoicesListResponse]
|
|
565
|
+
def list_invoices(request_options: {}, **params)
|
|
566
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
567
|
+
query_params = {}
|
|
568
|
+
query_params["limit"] = params[:limit] if params.key?(:limit)
|
|
569
|
+
query_params["offset"] = params[:offset] if params.key?(:offset)
|
|
570
|
+
|
|
571
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
572
|
+
base_url: request_options[:base_url],
|
|
573
|
+
method: "GET",
|
|
574
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/invoices",
|
|
575
|
+
query: query_params,
|
|
576
|
+
request_options: request_options
|
|
577
|
+
)
|
|
578
|
+
begin
|
|
579
|
+
response = @client.send(request)
|
|
580
|
+
rescue Net::HTTPRequestTimeout
|
|
581
|
+
raise VitableConnect::Errors::TimeoutError
|
|
582
|
+
end
|
|
583
|
+
code = response.code.to_i
|
|
584
|
+
if code.between?(200, 299)
|
|
585
|
+
VitableConnect::Types::EmployerInvoicesListResponse.load(response.body)
|
|
586
|
+
else
|
|
587
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
588
|
+
raise error_class.new(response.body, code: code)
|
|
589
|
+
end
|
|
590
|
+
end
|
|
591
|
+
|
|
592
|
+
# Returns the time-limited PDF download link for a single invoice belonging to the employer's billing customer.
|
|
593
|
+
# `invoice_id` is the external Chargebee id (not a prefixed UUID). The caller must be authorized for the employer;
|
|
594
|
+
# an unknown or unauthorized employer or invoice returns 404.
|
|
595
|
+
#
|
|
596
|
+
# @param request_options [Hash]
|
|
597
|
+
# @param params [Hash]
|
|
598
|
+
# @option request_options [String] :base_url
|
|
599
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
600
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
601
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
602
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
603
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
604
|
+
# @option params [VitableConnect::Types::InvoiceID] :invoice_id
|
|
605
|
+
#
|
|
606
|
+
# @example
|
|
607
|
+
# client.employers.get_invoice_pdf(
|
|
608
|
+
# employer_id: "empr_abc123def456",
|
|
609
|
+
# invoice_id: "INV-00042"
|
|
610
|
+
# )
|
|
611
|
+
#
|
|
612
|
+
# @return [VitableConnect::Types::EmployerInvoicePdfResponse]
|
|
613
|
+
def get_invoice_pdf(request_options: {}, **params)
|
|
614
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
615
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
616
|
+
base_url: request_options[:base_url],
|
|
617
|
+
method: "GET",
|
|
618
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/invoices/#{URI.encode_uri_component(params[:invoice_id].to_s)}/pdf",
|
|
619
|
+
request_options: request_options
|
|
620
|
+
)
|
|
621
|
+
begin
|
|
622
|
+
response = @client.send(request)
|
|
623
|
+
rescue Net::HTTPRequestTimeout
|
|
624
|
+
raise VitableConnect::Errors::TimeoutError
|
|
625
|
+
end
|
|
626
|
+
code = response.code.to_i
|
|
627
|
+
if code.between?(200, 299)
|
|
628
|
+
VitableConnect::Types::EmployerInvoicePdfResponse.load(response.body)
|
|
629
|
+
else
|
|
630
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
631
|
+
raise error_class.new(response.body, code: code)
|
|
632
|
+
end
|
|
633
|
+
end
|
|
634
|
+
|
|
635
|
+
# Return whether the employer has submitted payroll access setup.
|
|
636
|
+
#
|
|
637
|
+
# @param request_options [Hash]
|
|
638
|
+
# @param params [Hash]
|
|
639
|
+
# @option request_options [String] :base_url
|
|
640
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
641
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
642
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
643
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
644
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
645
|
+
#
|
|
646
|
+
# @example
|
|
647
|
+
# client.employers.get_payroll_access_setup(employer_id: "empr_abc123def456")
|
|
648
|
+
#
|
|
649
|
+
# @return [VitableConnect::Types::PayrollAccessSetupStatusResponse]
|
|
650
|
+
def get_payroll_access_setup(request_options: {}, **params)
|
|
651
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
652
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
653
|
+
base_url: request_options[:base_url],
|
|
654
|
+
method: "GET",
|
|
655
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/payroll-access-setup",
|
|
656
|
+
request_options: request_options
|
|
657
|
+
)
|
|
658
|
+
begin
|
|
659
|
+
response = @client.send(request)
|
|
660
|
+
rescue Net::HTTPRequestTimeout
|
|
661
|
+
raise VitableConnect::Errors::TimeoutError
|
|
662
|
+
end
|
|
663
|
+
code = response.code.to_i
|
|
664
|
+
if code.between?(200, 299)
|
|
665
|
+
VitableConnect::Types::PayrollAccessSetupStatusResponse.load(response.body)
|
|
666
|
+
else
|
|
667
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
668
|
+
raise error_class.new(response.body, code: code)
|
|
669
|
+
end
|
|
670
|
+
end
|
|
671
|
+
|
|
672
|
+
# Submit the employer's payroll access setup answers.
|
|
673
|
+
#
|
|
674
|
+
# @param request_options [Hash]
|
|
675
|
+
# @param params [VitableConnect::Employers::Types::SubmitPayrollAccessSetupRequest]
|
|
676
|
+
# @option request_options [String] :base_url
|
|
677
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
678
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
679
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
680
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
681
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
682
|
+
#
|
|
683
|
+
# @example
|
|
684
|
+
# client.employers.submit_payroll_access_setup(
|
|
685
|
+
# employer_id: "empr_abc123def456",
|
|
686
|
+
# employees_in_payroll_acknowledged: true,
|
|
687
|
+
# payroll_data_impacts_eligibility_acknowledged: true,
|
|
688
|
+
# classifications_accurate: true,
|
|
689
|
+
# all_benefit_eligible_employees_present: true,
|
|
690
|
+
# is_controlled_group: true,
|
|
691
|
+
# access_method: "SELF_SETUP",
|
|
692
|
+
# has_additional_payroll_system: true
|
|
693
|
+
# )
|
|
694
|
+
#
|
|
695
|
+
# @return [VitableConnect::Types::PayrollAccessSetupStatusResponse]
|
|
696
|
+
def submit_payroll_access_setup(request_options: {}, **params)
|
|
697
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
698
|
+
request_data = VitableConnect::Employers::Types::SubmitPayrollAccessSetupRequest.new(params).to_h
|
|
699
|
+
non_body_param_names = %w[employer_id]
|
|
700
|
+
body = request_data.except(*non_body_param_names)
|
|
701
|
+
|
|
702
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
703
|
+
base_url: request_options[:base_url],
|
|
704
|
+
method: "PUT",
|
|
705
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/payroll-access-setup",
|
|
706
|
+
body: body,
|
|
707
|
+
request_options: request_options
|
|
708
|
+
)
|
|
709
|
+
begin
|
|
710
|
+
response = @client.send(request)
|
|
711
|
+
rescue Net::HTTPRequestTimeout
|
|
712
|
+
raise VitableConnect::Errors::TimeoutError
|
|
713
|
+
end
|
|
714
|
+
code = response.code.to_i
|
|
715
|
+
if code.between?(200, 299)
|
|
716
|
+
VitableConnect::Types::PayrollAccessSetupStatusResponse.load(response.body)
|
|
717
|
+
else
|
|
718
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
719
|
+
raise error_class.new(response.body, code: code)
|
|
720
|
+
end
|
|
721
|
+
end
|
|
722
|
+
|
|
723
|
+
# Returns a paginated list of the employer's payroll-deduction statements, newest period first, each with its
|
|
724
|
+
# period, generation date, distinct employee count, total deduction, change-file link, and deduction frequency.
|
|
725
|
+
# Statements superseded by a later correction are excluded. The caller must be authorized for the employer; an
|
|
726
|
+
# unknown or unauthorized employer returns 404.
|
|
727
|
+
#
|
|
728
|
+
# @param request_options [Hash]
|
|
729
|
+
# @param params [Hash]
|
|
730
|
+
# @option request_options [String] :base_url
|
|
731
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
732
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
733
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
734
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
735
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
736
|
+
# @option params [Integer, nil] :limit
|
|
737
|
+
# @option params [Integer, nil] :page
|
|
738
|
+
#
|
|
739
|
+
# @example
|
|
740
|
+
# client.employers.list_payroll_deduction_statements(
|
|
741
|
+
# employer_id: "empr_abc123def456",
|
|
742
|
+
# limit: 20,
|
|
743
|
+
# page: 1
|
|
744
|
+
# )
|
|
745
|
+
#
|
|
746
|
+
# @return [VitableConnect::Types::EmployerPayrollDeductionStatementListResponse]
|
|
747
|
+
def list_payroll_deduction_statements(request_options: {}, **params)
|
|
748
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
749
|
+
query_params = {}
|
|
750
|
+
query_params["limit"] = params[:limit] if params.key?(:limit)
|
|
751
|
+
query_params["page"] = params[:page] if params.key?(:page)
|
|
752
|
+
|
|
753
|
+
VitableConnect::Internal::OffsetItemIterator.new(
|
|
754
|
+
initial_page: query_params["page"],
|
|
755
|
+
item_field: :data,
|
|
756
|
+
has_next_field: nil,
|
|
757
|
+
step: false
|
|
758
|
+
) do |next_page|
|
|
759
|
+
query_params["page"] = next_page
|
|
760
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
761
|
+
base_url: request_options[:base_url],
|
|
762
|
+
method: "GET",
|
|
763
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/payroll-deduction-statements",
|
|
764
|
+
query: query_params,
|
|
765
|
+
request_options: request_options
|
|
766
|
+
)
|
|
767
|
+
begin
|
|
768
|
+
response = @client.send(request)
|
|
769
|
+
rescue Net::HTTPRequestTimeout
|
|
770
|
+
raise VitableConnect::Errors::TimeoutError
|
|
771
|
+
end
|
|
772
|
+
code = response.code.to_i
|
|
773
|
+
if code.between?(200, 299)
|
|
774
|
+
parsed_response = VitableConnect::Types::EmployerPayrollDeductionStatementListResponse.load(response.body)
|
|
775
|
+
[parsed_response, response]
|
|
776
|
+
else
|
|
777
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
778
|
+
raise error_class.new(response.body, code: code)
|
|
779
|
+
end
|
|
780
|
+
end
|
|
781
|
+
end
|
|
782
|
+
|
|
783
|
+
# Provision and return the employer's payroll integration email.
|
|
784
|
+
#
|
|
785
|
+
# @param request_options [Hash]
|
|
786
|
+
# @param params [Hash]
|
|
787
|
+
# @option request_options [String] :base_url
|
|
788
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
789
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
790
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
791
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
792
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
793
|
+
#
|
|
794
|
+
# @example
|
|
795
|
+
# client.employers.ensure_payroll_integration_email(employer_id: "empr_abc123def456")
|
|
796
|
+
#
|
|
797
|
+
# @return [VitableConnect::Types::PayrollIntegrationEmailResponse]
|
|
798
|
+
def ensure_payroll_integration_email(request_options: {}, **params)
|
|
799
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
800
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
801
|
+
base_url: request_options[:base_url],
|
|
802
|
+
method: "PUT",
|
|
803
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/payroll-integration-email",
|
|
804
|
+
request_options: request_options
|
|
805
|
+
)
|
|
806
|
+
begin
|
|
807
|
+
response = @client.send(request)
|
|
808
|
+
rescue Net::HTTPRequestTimeout
|
|
809
|
+
raise VitableConnect::Errors::TimeoutError
|
|
810
|
+
end
|
|
811
|
+
code = response.code.to_i
|
|
812
|
+
if code.between?(200, 299)
|
|
813
|
+
VitableConnect::Types::PayrollIntegrationEmailResponse.load(response.body)
|
|
814
|
+
else
|
|
815
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
816
|
+
raise error_class.new(response.body, code: code)
|
|
817
|
+
end
|
|
818
|
+
end
|
|
819
|
+
|
|
820
|
+
# Updates configuration settings for a specific employer. The employer must belong to the authenticated
|
|
821
|
+
# organization.
|
|
822
|
+
#
|
|
823
|
+
# @param request_options [Hash]
|
|
824
|
+
# @param params [VitableConnect::Employers::Types::UpdateEmployerSettingsRequest]
|
|
825
|
+
# @option request_options [String] :base_url
|
|
826
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
827
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
828
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
829
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
830
|
+
# @option params [VitableConnect::Types::EmployerID] :employer_id
|
|
831
|
+
#
|
|
832
|
+
# @example
|
|
833
|
+
# client.employers.update_settings(
|
|
834
|
+
# employer_id: "empr_abc123def456",
|
|
835
|
+
# pay_frequency: "bi_weekly"
|
|
836
|
+
# )
|
|
837
|
+
#
|
|
838
|
+
# @return [VitableConnect::Types::EmployerSettingsResponse]
|
|
839
|
+
def update_settings(request_options: {}, **params)
|
|
840
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
841
|
+
request_data = VitableConnect::Employers::Types::UpdateEmployerSettingsRequest.new(params).to_h
|
|
842
|
+
non_body_param_names = %w[employer_id]
|
|
843
|
+
body = request_data.except(*non_body_param_names)
|
|
844
|
+
|
|
845
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
846
|
+
base_url: request_options[:base_url],
|
|
847
|
+
method: "PUT",
|
|
848
|
+
path: "v1/employers/#{URI.encode_uri_component(params[:employer_id].to_s)}/settings",
|
|
849
|
+
body: body,
|
|
850
|
+
request_options: request_options
|
|
851
|
+
)
|
|
852
|
+
begin
|
|
853
|
+
response = @client.send(request)
|
|
854
|
+
rescue Net::HTTPRequestTimeout
|
|
855
|
+
raise VitableConnect::Errors::TimeoutError
|
|
856
|
+
end
|
|
857
|
+
code = response.code.to_i
|
|
858
|
+
if code.between?(200, 299)
|
|
859
|
+
VitableConnect::Types::EmployerSettingsResponse.load(response.body)
|
|
860
|
+
else
|
|
861
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
862
|
+
raise error_class.new(response.body, code: code)
|
|
863
|
+
end
|
|
864
|
+
end
|
|
865
|
+
|
|
866
|
+
# Returns the distinct HRIS/payroll providers across the same book `GET /v1/employers` returns, sorted for
|
|
867
|
+
# display. Use these as the values for the employers list's `hris_provider` filter — filter on `provider`, show
|
|
868
|
+
# `provider_label`. The stored providers are free text, so they cannot be enumerated in advance.
|
|
869
|
+
#
|
|
870
|
+
# @param request_options [Hash]
|
|
871
|
+
# @param _params [Hash]
|
|
872
|
+
# @option request_options [String] :base_url
|
|
873
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
874
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
875
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
876
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
877
|
+
#
|
|
878
|
+
# @example
|
|
879
|
+
# client.employers.list_hris_providers
|
|
880
|
+
#
|
|
881
|
+
# @return [VitableConnect::Types::OrganizationHrisProvidersResponse]
|
|
882
|
+
def list_hris_providers(request_options: {}, **_params)
|
|
883
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
884
|
+
base_url: request_options[:base_url],
|
|
885
|
+
method: "GET",
|
|
886
|
+
path: "v1/employers/hris-providers",
|
|
887
|
+
request_options: request_options
|
|
888
|
+
)
|
|
889
|
+
begin
|
|
890
|
+
response = @client.send(request)
|
|
891
|
+
rescue Net::HTTPRequestTimeout
|
|
892
|
+
raise VitableConnect::Errors::TimeoutError
|
|
893
|
+
end
|
|
894
|
+
code = response.code.to_i
|
|
895
|
+
if code.between?(200, 299)
|
|
896
|
+
VitableConnect::Types::OrganizationHrisProvidersResponse.load(response.body)
|
|
897
|
+
else
|
|
898
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
899
|
+
raise error_class.new(response.body, code: code)
|
|
900
|
+
end
|
|
901
|
+
end
|
|
902
|
+
end
|
|
903
|
+
end
|
|
904
|
+
end
|