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
data/README.md
CHANGED
|
@@ -1,8 +1,27 @@
|
|
|
1
|
-
# Vitable
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
# Vitable Ruby Library
|
|
2
|
+
|
|
3
|
+
[](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2FVitable-Inc%2Fvitable-connect-ruby)
|
|
4
|
+
|
|
5
|
+
The Vitable Ruby library provides convenient access to the Vitable APIs from Ruby.
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Documentation](#documentation)
|
|
10
|
+
- [Installation](#installation)
|
|
11
|
+
- [Reference](#reference)
|
|
12
|
+
- [Usage](#usage)
|
|
13
|
+
- [Advanced Concepts](#advanced-concepts)
|
|
14
|
+
- [Sorbet](#sorbet)
|
|
15
|
+
- [Versioning](#versioning)
|
|
16
|
+
- [Requirements](#requirements)
|
|
17
|
+
- [Environments](#environments)
|
|
18
|
+
- [Errors](#errors)
|
|
19
|
+
- [Advanced](#advanced)
|
|
20
|
+
- [Retries](#retries)
|
|
21
|
+
- [Timeouts](#timeouts)
|
|
22
|
+
- [Additional Headers](#additional-headers)
|
|
23
|
+
- [Additional Query Parameters](#additional-query-parameters)
|
|
24
|
+
- [Contributing](#contributing)
|
|
6
25
|
|
|
7
26
|
## Documentation
|
|
8
27
|
|
|
@@ -17,128 +36,27 @@ To use this gem, install via Bundler by adding the following to your application
|
|
|
17
36
|
<!-- x-release-please-start-version -->
|
|
18
37
|
|
|
19
38
|
```ruby
|
|
20
|
-
gem "vitable-connect", "~> 0.
|
|
39
|
+
gem "vitable-connect", "~> 0.6.0"
|
|
21
40
|
```
|
|
22
41
|
|
|
23
42
|
<!-- x-release-please-end -->
|
|
24
43
|
|
|
25
|
-
##
|
|
26
|
-
|
|
27
|
-
```ruby
|
|
28
|
-
require "bundler/setup"
|
|
29
|
-
require "vitable_connect"
|
|
30
|
-
|
|
31
|
-
vitable_connect = VitableConnect::Client.new(
|
|
32
|
-
api_key: ENV["VITABLE_CONNECT_API_KEY"], # This is the default and can be omitted
|
|
33
|
-
environment: "environment_1" # defaults to "production"
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
response = vitable_connect.auth.issue_access_token(grant_type: "client_credentials")
|
|
37
|
-
|
|
38
|
-
puts(response.access_token)
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Pagination
|
|
42
|
-
|
|
43
|
-
List methods in the Vitable Connect API are paginated.
|
|
44
|
-
|
|
45
|
-
This library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:
|
|
46
|
-
|
|
47
|
-
```ruby
|
|
48
|
-
page = vitable_connect.employees.list_enrollments
|
|
49
|
-
|
|
50
|
-
# Fetch single item from page.
|
|
51
|
-
employee = page.data[0]
|
|
52
|
-
puts(employee.id)
|
|
53
|
-
|
|
54
|
-
# Automatically fetches more pages as needed.
|
|
55
|
-
page.auto_paging_each do |employee|
|
|
56
|
-
puts(employee.id)
|
|
57
|
-
end
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Alternatively, you can use the `#next_page?` and `#next_page` methods for more granular control working with pages.
|
|
61
|
-
|
|
62
|
-
```ruby
|
|
63
|
-
if page.next_page?
|
|
64
|
-
new_page = page.next_page
|
|
65
|
-
puts(new_page.data[0].id)
|
|
66
|
-
end
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Handling errors
|
|
70
|
-
|
|
71
|
-
When the library is unable to connect to the API, or if the API returns a non-success status code (i.e., 4xx or 5xx response), a subclass of `VitableConnect::Errors::APIError` will be thrown:
|
|
72
|
-
|
|
73
|
-
```ruby
|
|
74
|
-
begin
|
|
75
|
-
auth = vitable_connect.auth.issue_access_token(grant_type: "client_credentials")
|
|
76
|
-
rescue VitableConnect::Errors::APIConnectionError => e
|
|
77
|
-
puts("The server could not be reached")
|
|
78
|
-
puts(e.cause) # an underlying Exception, likely raised within `net/http`
|
|
79
|
-
rescue VitableConnect::Errors::RateLimitError => e
|
|
80
|
-
puts("A 429 status code was received; we should back off a bit.")
|
|
81
|
-
rescue VitableConnect::Errors::APIStatusError => e
|
|
82
|
-
puts("Another non-200-range status code was received")
|
|
83
|
-
puts(e.status)
|
|
84
|
-
end
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Error codes are as follows:
|
|
88
|
-
|
|
89
|
-
| Cause | Error Type |
|
|
90
|
-
| ---------------- | -------------------------- |
|
|
91
|
-
| HTTP 400 | `BadRequestError` |
|
|
92
|
-
| HTTP 401 | `AuthenticationError` |
|
|
93
|
-
| HTTP 403 | `PermissionDeniedError` |
|
|
94
|
-
| HTTP 404 | `NotFoundError` |
|
|
95
|
-
| HTTP 409 | `ConflictError` |
|
|
96
|
-
| HTTP 422 | `UnprocessableEntityError` |
|
|
97
|
-
| HTTP 429 | `RateLimitError` |
|
|
98
|
-
| HTTP >= 500 | `InternalServerError` |
|
|
99
|
-
| Other HTTP error | `APIStatusError` |
|
|
100
|
-
| Timeout | `APITimeoutError` |
|
|
101
|
-
| Network error | `APIConnectionError` |
|
|
102
|
-
|
|
103
|
-
### Retries
|
|
44
|
+
## Reference
|
|
104
45
|
|
|
105
|
-
|
|
46
|
+
A full reference for this library is available [here](https://github.com/Vitable-Inc/vitable-connect-ruby/blob/HEAD/./reference.md).
|
|
106
47
|
|
|
107
|
-
|
|
48
|
+
## Usage
|
|
108
49
|
|
|
109
|
-
|
|
50
|
+
Instantiate and use the client with the following:
|
|
110
51
|
|
|
111
52
|
```ruby
|
|
112
|
-
|
|
113
|
-
vitable_connect = VitableConnect::Client.new(
|
|
114
|
-
max_retries: 0 # default is 2
|
|
115
|
-
)
|
|
116
|
-
|
|
117
|
-
# Or, configure per-request:
|
|
118
|
-
vitable_connect.auth.issue_access_token(
|
|
119
|
-
grant_type: "client_credentials",
|
|
120
|
-
request_options: {max_retries: 5}
|
|
121
|
-
)
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### Timeouts
|
|
53
|
+
require "vitableconnect"
|
|
125
54
|
|
|
126
|
-
|
|
55
|
+
client = VitableConnect::Client.new(api_key: "<token>")
|
|
127
56
|
|
|
128
|
-
|
|
129
|
-
# Configure the default for all requests:
|
|
130
|
-
vitable_connect = VitableConnect::Client.new(
|
|
131
|
-
timeout: nil # default is 60
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
# Or, configure per-request:
|
|
135
|
-
vitable_connect.auth.issue_access_token(grant_type: "client_credentials", request_options: {timeout: 5})
|
|
57
|
+
client.auth.issue_access_token(grant_type: "client_credentials")
|
|
136
58
|
```
|
|
137
59
|
|
|
138
|
-
On timeout, `VitableConnect::Errors::APITimeoutError` is raised.
|
|
139
|
-
|
|
140
|
-
Note that requests that time out are retried by default.
|
|
141
|
-
|
|
142
60
|
## Advanced concepts
|
|
143
61
|
|
|
144
62
|
### BaseModel
|
|
@@ -229,25 +147,25 @@ vitable_connect.auth.issue_access_token(**params)
|
|
|
229
147
|
Since this library does not depend on `sorbet-runtime`, it cannot provide [`T::Enum`](https://sorbet.org/docs/tenum) instances. Instead, we provide "tagged symbols" instead, which is always a primitive at runtime:
|
|
230
148
|
|
|
231
149
|
```ruby
|
|
232
|
-
# :
|
|
233
|
-
puts(VitableConnect::
|
|
150
|
+
# :Salary
|
|
151
|
+
puts(VitableConnect::EmployeeUpdateParams::CompensationType::SALARY)
|
|
234
152
|
|
|
235
|
-
# Revealed type: `T.all(VitableConnect::
|
|
236
|
-
T.reveal_type(VitableConnect::
|
|
153
|
+
# Revealed type: `T.all(VitableConnect::EmployeeUpdateParams::CompensationType, Symbol)`
|
|
154
|
+
T.reveal_type(VitableConnect::EmployeeUpdateParams::CompensationType::SALARY)
|
|
237
155
|
```
|
|
238
156
|
|
|
239
157
|
Enum parameters have a "relaxed" type, so you can either pass in enum constants or their literal value:
|
|
240
158
|
|
|
241
159
|
```ruby
|
|
242
160
|
# Using the enum constants preserves the tagged type information:
|
|
243
|
-
vitable_connect.
|
|
244
|
-
|
|
161
|
+
vitable_connect.employees.update(
|
|
162
|
+
compensation_type: VitableConnect::EmployeeUpdateParams::CompensationType::SALARY,
|
|
245
163
|
# …
|
|
246
164
|
)
|
|
247
165
|
|
|
248
166
|
# Literal values are also permissible:
|
|
249
|
-
vitable_connect.
|
|
250
|
-
|
|
167
|
+
vitable_connect.employees.update(
|
|
168
|
+
compensation_type: :Salary,
|
|
251
169
|
# …
|
|
252
170
|
)
|
|
253
171
|
```
|
|
@@ -262,6 +180,135 @@ This package considers improvements to the (non-runtime) `*.rbi` and `*.rbs` typ
|
|
|
262
180
|
|
|
263
181
|
Ruby 3.2.0 or higher.
|
|
264
182
|
|
|
183
|
+
## Environments
|
|
184
|
+
|
|
185
|
+
This SDK allows you to configure different environments or custom URLs for API requests. You can either use the predefined environments or specify your own custom URL.
|
|
186
|
+
### Environments
|
|
187
|
+
```ruby
|
|
188
|
+
require "VitableConnect"
|
|
189
|
+
|
|
190
|
+
VitableConnect = VitableConnect::Client.new(
|
|
191
|
+
base_url: VitableConnect::Environment::PRODUCTION
|
|
192
|
+
)
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Custom URL
|
|
196
|
+
```ruby
|
|
197
|
+
require "VitableConnect"
|
|
198
|
+
|
|
199
|
+
client = VitableConnect::Client.new(
|
|
200
|
+
base_url: "https://example.com"
|
|
201
|
+
)
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Errors
|
|
205
|
+
|
|
206
|
+
Failed API calls will raise errors that can be rescued from granularly.
|
|
207
|
+
|
|
208
|
+
```ruby
|
|
209
|
+
require "VitableConnect"
|
|
210
|
+
|
|
211
|
+
client = VitableConnect::Client.new(
|
|
212
|
+
base_url: "https://example.com"
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
begin
|
|
216
|
+
result = client.auth.issue_access_token
|
|
217
|
+
rescue VitableConnect::Errors::TimeoutError
|
|
218
|
+
puts "API didn't respond before our timeout elapsed"
|
|
219
|
+
rescue VitableConnect::Errors::ServiceUnavailableError
|
|
220
|
+
puts "API returned status 503, is probably overloaded, try again later"
|
|
221
|
+
rescue VitableConnect::Errors::ServerError
|
|
222
|
+
puts "API returned some other 5xx status, this is probably a bug"
|
|
223
|
+
rescue VitableConnect::Errors::ResponseError => e
|
|
224
|
+
puts "API returned an unexpected status other than 5xx: #{e.code} #{e.message}"
|
|
225
|
+
rescue VitableConnect::Errors::ApiError => e
|
|
226
|
+
puts "Some other error occurred when calling the API: #{e.message}"
|
|
227
|
+
end
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Advanced
|
|
231
|
+
|
|
232
|
+
### Retries
|
|
233
|
+
|
|
234
|
+
The SDK is instrumented with automatic retries. A request will be retried as long as the request is deemed
|
|
235
|
+
retryable and the number of retry attempts has not grown larger than the configured retry limit (default: 2).
|
|
236
|
+
|
|
237
|
+
A request is deemed retryable when any of the following HTTP status codes is returned:
|
|
238
|
+
|
|
239
|
+
- [408](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408) (Timeout)
|
|
240
|
+
- [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) (Too Many Requests)
|
|
241
|
+
- [5XX](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#server_error_responses) (Internal Server Error)
|
|
242
|
+
|
|
243
|
+
The `retryStatusCodes` configuration controls which [5XX](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#server_error_responses) status codes are retried:
|
|
244
|
+
|
|
245
|
+
- `legacy` (default): Retries `408`, `429`, `500`, `502`, `503`, `504`, `521`, `522`, `524`
|
|
246
|
+
- `recommended`: Retries `408`, `429`, `502`, `503`, `504` only (excludes `500 Internal Server Error` to avoid retrying non-idempotent failures)
|
|
247
|
+
|
|
248
|
+
Use the `max_retries` option to configure this behavior.
|
|
249
|
+
|
|
250
|
+
```ruby
|
|
251
|
+
require "VitableConnect"
|
|
252
|
+
|
|
253
|
+
client = VitableConnect::Client.new(
|
|
254
|
+
base_url: "https://example.com",
|
|
255
|
+
max_retries: 3 # Configure max retries (default is 2)
|
|
256
|
+
)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Timeouts
|
|
260
|
+
|
|
261
|
+
The SDK defaults to a 60 second timeout. Use the `timeout` option to configure this behavior.
|
|
262
|
+
|
|
263
|
+
```ruby
|
|
264
|
+
require "VitableConnect"
|
|
265
|
+
|
|
266
|
+
response = client.auth.issue_access_token(
|
|
267
|
+
...,
|
|
268
|
+
timeout: 30 # 30 second timeout
|
|
269
|
+
)
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Additional Headers
|
|
273
|
+
|
|
274
|
+
If you would like to send additional headers as part of the request, use the `additional_headers` request option.
|
|
275
|
+
|
|
276
|
+
```ruby
|
|
277
|
+
require "VitableConnect"
|
|
278
|
+
|
|
279
|
+
response = client.auth.issue_access_token(
|
|
280
|
+
...,
|
|
281
|
+
request_options: {
|
|
282
|
+
additional_headers: {
|
|
283
|
+
"X-Custom-Header" => "custom-value"
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
)
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Additional Query Parameters
|
|
290
|
+
|
|
291
|
+
If you would like to send additional query parameters as part of the request, use the `additional_query_parameters` request option.
|
|
292
|
+
|
|
293
|
+
```ruby
|
|
294
|
+
require "VitableConnect"
|
|
295
|
+
|
|
296
|
+
response = client.auth.issue_access_token(
|
|
297
|
+
...,
|
|
298
|
+
request_options: {
|
|
299
|
+
additional_query_parameters: {
|
|
300
|
+
"custom_param" => "custom-value"
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
)
|
|
304
|
+
```
|
|
305
|
+
|
|
265
306
|
## Contributing
|
|
266
307
|
|
|
267
|
-
|
|
308
|
+
While we value open-source contributions to this SDK, this library is generated programmatically.
|
|
309
|
+
Additions made directly to this library would have to be moved over to our generation code,
|
|
310
|
+
otherwise they would be overwritten upon the next generated release. Feel free to open a PR as
|
|
311
|
+
a proof of concept, but know that we will not be able to merge it as-is. We suggest opening
|
|
312
|
+
an issue first to discuss with us!
|
|
313
|
+
|
|
314
|
+
On the other hand, contributions to the README are always very welcome!
|
data/Rakefile
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "bundler/gem_tasks"
|
|
4
|
+
require "minitest/test_task"
|
|
5
|
+
|
|
6
|
+
Minitest::TestTask.create
|
|
7
|
+
|
|
8
|
+
require "rubocop/rake_task"
|
|
9
|
+
|
|
10
|
+
RuboCop::RakeTask.new
|
|
11
|
+
|
|
12
|
+
task default: %i[test]
|
|
13
|
+
|
|
14
|
+
task lint: %i[rubocop]
|
|
15
|
+
|
|
16
|
+
# Run only the custom test file
|
|
17
|
+
Minitest::TestTask.create(:customtest) do |t|
|
|
18
|
+
t.libs << "test"
|
|
19
|
+
t.test_globs = ["test/custom.test.rb"]
|
|
20
|
+
end
|
data/custom.gemspec.rb
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Custom gemspec configuration file
|
|
4
|
+
# This file is automatically loaded by the main gemspec file. The 'spec' variable is available
|
|
5
|
+
# in this context from the main gemspec file. You can modify this file to add custom metadata,
|
|
6
|
+
# dependencies, or other gemspec configurations. If you do make changes to this file, you will
|
|
7
|
+
# need to add it to the .fernignore file to prevent your changes from being overwritten.
|
|
8
|
+
|
|
9
|
+
def add_custom_gemspec_data(spec)
|
|
10
|
+
# Example custom configurations (uncomment and modify as needed)
|
|
11
|
+
|
|
12
|
+
# spec.authors = ["Your name"]
|
|
13
|
+
# spec.email = ["your.email@example.com"]
|
|
14
|
+
# spec.homepage = "https://github.com/your-org/vitableconnect-ruby"
|
|
15
|
+
# spec.license = "Your license"
|
|
16
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module VitableConnect
|
|
4
|
+
module Auth
|
|
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
|
+
# Issues a short-lived access token from the authenticated API key. Access tokens can optionally be bound to a
|
|
14
|
+
# specific employer or employee for scoped access. Tokens expire after 15 minutes.
|
|
15
|
+
#
|
|
16
|
+
# @param request_options [Hash]
|
|
17
|
+
# @param params [VitableConnect::Auth::Types::IssueAccessTokenRequest]
|
|
18
|
+
# @option request_options [String] :base_url
|
|
19
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
20
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
21
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
22
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
# client.auth.issue_access_token(grant_type: "client_credentials")
|
|
26
|
+
#
|
|
27
|
+
# @return [VitableConnect::Types::AccessTokenResponse]
|
|
28
|
+
def issue_access_token(request_options: {}, **params)
|
|
29
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
30
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
31
|
+
base_url: request_options[:base_url],
|
|
32
|
+
method: "POST",
|
|
33
|
+
path: "v1/auth/access-tokens",
|
|
34
|
+
body: VitableConnect::Auth::Types::IssueAccessTokenRequest.new(params).to_h,
|
|
35
|
+
request_options: request_options
|
|
36
|
+
)
|
|
37
|
+
begin
|
|
38
|
+
response = @client.send(request)
|
|
39
|
+
rescue Net::HTTPRequestTimeout
|
|
40
|
+
raise VitableConnect::Errors::TimeoutError
|
|
41
|
+
end
|
|
42
|
+
code = response.code.to_i
|
|
43
|
+
if code.between?(200, 299)
|
|
44
|
+
VitableConnect::Types::AccessTokenResponse.load(response.body)
|
|
45
|
+
else
|
|
46
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
47
|
+
raise error_class.new(response.body, code: code)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module VitableConnect
|
|
4
|
+
module Auth
|
|
5
|
+
module Types
|
|
6
|
+
class IssueAccessTokenRequest < Internal::Types::Model
|
|
7
|
+
field :grant_type, -> { VitableConnect::Types::GrantType }, optional: false, nullable: false
|
|
8
|
+
|
|
9
|
+
field :bound_entity, -> { VitableConnect::Types::BoundEntity }, optional: true, nullable: false
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module VitableConnect
|
|
4
|
+
class Client
|
|
5
|
+
# @param base_url [String, nil]
|
|
6
|
+
# @param api_key [String]
|
|
7
|
+
# @param max_retries [Integer]
|
|
8
|
+
#
|
|
9
|
+
# @return [void]
|
|
10
|
+
def initialize(base_url: nil, api_key: ENV.fetch("VITABLE_CONNECT_API_KEY", nil), max_retries: 2)
|
|
11
|
+
@raw_client = VitableConnect::Internal::Http::RawClient.new(
|
|
12
|
+
base_url: base_url || VitableConnect::Environment::PRODUCTION,
|
|
13
|
+
headers: {
|
|
14
|
+
"User-Agent" => "vitable-connect/1.0.0",
|
|
15
|
+
"X-Fern-Language" => "Ruby",
|
|
16
|
+
Authorization: "Bearer #{api_key}"
|
|
17
|
+
},
|
|
18
|
+
max_retries: max_retries
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# @return [VitableConnect::Auth::Client]
|
|
23
|
+
def auth
|
|
24
|
+
@auth ||= VitableConnect::Auth::Client.new(client: @raw_client)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @return [VitableConnect::Employees::Client]
|
|
28
|
+
def employees
|
|
29
|
+
@employees ||= VitableConnect::Employees::Client.new(client: @raw_client)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @return [VitableConnect::Employers::Client]
|
|
33
|
+
def employers
|
|
34
|
+
@employers ||= VitableConnect::Employers::Client.new(client: @raw_client)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @return [VitableConnect::Enrollments::Client]
|
|
38
|
+
def enrollments
|
|
39
|
+
@enrollments ||= VitableConnect::Enrollments::Client.new(client: @raw_client)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @return [VitableConnect::Groups::Client]
|
|
43
|
+
def groups
|
|
44
|
+
@groups ||= VitableConnect::Groups::Client.new(client: @raw_client)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @return [VitableConnect::Members::Client]
|
|
48
|
+
def members
|
|
49
|
+
@members ||= VitableConnect::Members::Client.new(client: @raw_client)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @return [VitableConnect::Organizations::Client]
|
|
53
|
+
def organizations
|
|
54
|
+
@organizations ||= VitableConnect::Organizations::Client.new(client: @raw_client)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# @return [VitableConnect::Plans::Client]
|
|
58
|
+
def plans
|
|
59
|
+
@plans ||= VitableConnect::Plans::Client.new(client: @raw_client)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# @return [VitableConnect::WebhookEvents::Client]
|
|
63
|
+
def webhook_events
|
|
64
|
+
@webhook_events ||= VitableConnect::WebhookEvents::Client.new(client: @raw_client)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module VitableConnect
|
|
4
|
+
module Employees
|
|
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
|
+
# Retrieves detailed information for a specific employee by ID. Returns employee details including personal
|
|
14
|
+
# information, employment status, classification and compensation-type effective dates, compensation type, and
|
|
15
|
+
# payroll deductions from the most recent statement period. Deductions reflect a snapshot of the current period
|
|
16
|
+
# and are replaced when a new statement is generated.
|
|
17
|
+
#
|
|
18
|
+
# @param request_options [Hash]
|
|
19
|
+
# @param params [Hash]
|
|
20
|
+
# @option request_options [String] :base_url
|
|
21
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
22
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
23
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
24
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
25
|
+
# @option params [VitableConnect::Types::EmployeeID] :employee_id
|
|
26
|
+
#
|
|
27
|
+
# @example
|
|
28
|
+
# client.employees.get(employee_id: "empl_abc123def456")
|
|
29
|
+
#
|
|
30
|
+
# @return [VitableConnect::Types::EmployeeResponse]
|
|
31
|
+
def get(request_options: {}, **params)
|
|
32
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
33
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
34
|
+
base_url: request_options[:base_url],
|
|
35
|
+
method: "GET",
|
|
36
|
+
path: "v1/employees/#{URI.encode_uri_component(params[:employee_id].to_s)}",
|
|
37
|
+
request_options: request_options
|
|
38
|
+
)
|
|
39
|
+
begin
|
|
40
|
+
response = @client.send(request)
|
|
41
|
+
rescue Net::HTTPRequestTimeout
|
|
42
|
+
raise VitableConnect::Errors::TimeoutError
|
|
43
|
+
end
|
|
44
|
+
code = response.code.to_i
|
|
45
|
+
if code.between?(200, 299)
|
|
46
|
+
VitableConnect::Types::EmployeeResponse.load(response.body)
|
|
47
|
+
else
|
|
48
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
49
|
+
raise error_class.new(response.body, code: code)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Updates employee personal, contact, address, and employment fields. This endpoint currently supports email,
|
|
54
|
+
# phone, gender, address, employee_class, start_date, and compensation_type. effective_date is required and
|
|
55
|
+
# applies to employee_class and compensation_type when those fields are included in the request.
|
|
56
|
+
#
|
|
57
|
+
# @param request_options [Hash]
|
|
58
|
+
# @param params [VitableConnect::Employees::Types::PatchedUpdateEmployeeRequest]
|
|
59
|
+
# @option request_options [String] :base_url
|
|
60
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
61
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
62
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
63
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
64
|
+
# @option params [VitableConnect::Types::EmployeeID] :employee_id
|
|
65
|
+
#
|
|
66
|
+
# @example
|
|
67
|
+
# client.employees.update(
|
|
68
|
+
# employee_id: "empl_abc123def456",
|
|
69
|
+
# employee_class: "Full Time",
|
|
70
|
+
# start_date: "2023-01-15",
|
|
71
|
+
# compensation_type: "Salary",
|
|
72
|
+
# effective_date: "2023-03-01"
|
|
73
|
+
# )
|
|
74
|
+
#
|
|
75
|
+
# @return [VitableConnect::Types::EmployeeResponse]
|
|
76
|
+
def update(request_options: {}, **params)
|
|
77
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
78
|
+
request_data = VitableConnect::Employees::Types::PatchedUpdateEmployeeRequest.new(params).to_h
|
|
79
|
+
non_body_param_names = %w[employee_id]
|
|
80
|
+
body = request_data.except(*non_body_param_names)
|
|
81
|
+
|
|
82
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
83
|
+
base_url: request_options[:base_url],
|
|
84
|
+
method: "PATCH",
|
|
85
|
+
path: "v1/employees/#{URI.encode_uri_component(params[:employee_id].to_s)}",
|
|
86
|
+
body: body,
|
|
87
|
+
request_options: request_options
|
|
88
|
+
)
|
|
89
|
+
begin
|
|
90
|
+
response = @client.send(request)
|
|
91
|
+
rescue Net::HTTPRequestTimeout
|
|
92
|
+
raise VitableConnect::Errors::TimeoutError
|
|
93
|
+
end
|
|
94
|
+
code = response.code.to_i
|
|
95
|
+
if code.between?(200, 299)
|
|
96
|
+
VitableConnect::Types::EmployeeResponse.load(response.body)
|
|
97
|
+
else
|
|
98
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
99
|
+
raise error_class.new(response.body, code: code)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Retrieves a paginated list of benefit enrollments for an employee.
|
|
104
|
+
#
|
|
105
|
+
# @param request_options [Hash]
|
|
106
|
+
# @param params [Hash]
|
|
107
|
+
# @option request_options [String] :base_url
|
|
108
|
+
# @option request_options [Hash{String => Object}] :additional_headers
|
|
109
|
+
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
110
|
+
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
111
|
+
# @option request_options [Integer] :timeout_in_seconds
|
|
112
|
+
# @option params [VitableConnect::Types::EmployeeID] :employee_id
|
|
113
|
+
# @option params [Integer, nil] :limit
|
|
114
|
+
# @option params [Integer, nil] :page
|
|
115
|
+
#
|
|
116
|
+
# @example
|
|
117
|
+
# client.employees.list_enrollments(
|
|
118
|
+
# employee_id: "empl_abc123def456",
|
|
119
|
+
# limit: 20,
|
|
120
|
+
# page: 1
|
|
121
|
+
# )
|
|
122
|
+
#
|
|
123
|
+
# @return [VitableConnect::Types::EnrollmentListResponse]
|
|
124
|
+
def list_enrollments(request_options: {}, **params)
|
|
125
|
+
params = VitableConnect::Internal::Types::Utils.normalize_keys(params)
|
|
126
|
+
query_params = {}
|
|
127
|
+
query_params["limit"] = params[:limit] if params.key?(:limit)
|
|
128
|
+
query_params["page"] = params[:page] if params.key?(:page)
|
|
129
|
+
|
|
130
|
+
VitableConnect::Internal::OffsetItemIterator.new(
|
|
131
|
+
initial_page: query_params["page"],
|
|
132
|
+
item_field: :data,
|
|
133
|
+
has_next_field: nil,
|
|
134
|
+
step: false
|
|
135
|
+
) do |next_page|
|
|
136
|
+
query_params["page"] = next_page
|
|
137
|
+
request = VitableConnect::Internal::JSON::Request.new(
|
|
138
|
+
base_url: request_options[:base_url],
|
|
139
|
+
method: "GET",
|
|
140
|
+
path: "v1/employees/#{URI.encode_uri_component(params[:employee_id].to_s)}/enrollments",
|
|
141
|
+
query: query_params,
|
|
142
|
+
request_options: request_options
|
|
143
|
+
)
|
|
144
|
+
begin
|
|
145
|
+
response = @client.send(request)
|
|
146
|
+
rescue Net::HTTPRequestTimeout
|
|
147
|
+
raise VitableConnect::Errors::TimeoutError
|
|
148
|
+
end
|
|
149
|
+
code = response.code.to_i
|
|
150
|
+
if code.between?(200, 299)
|
|
151
|
+
parsed_response = VitableConnect::Types::EnrollmentListResponse.load(response.body)
|
|
152
|
+
[parsed_response, response]
|
|
153
|
+
else
|
|
154
|
+
error_class = VitableConnect::Errors::ResponseError.subclass_for_code(code)
|
|
155
|
+
raise error_class.new(response.body, code: code)
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|