fern_gusto 0.0.6.pre.alpha6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/base_gusto.rb +175 -0
- data/lib/core/file_utilities.rb +27 -0
- data/lib/environment.rb +9 -0
- data/lib/fern_gusto/ach_transactions/client.rb +119 -0
- data/lib/fern_gusto/admins/types/admin.rb +82 -0
- data/lib/fern_gusto/companies/attachments/client.rb +335 -0
- data/lib/fern_gusto/companies/attachments/types/attachments_create_request_category.rb +15 -0
- data/lib/fern_gusto/companies/attachments/types/attachments_get_download_url_response.rb +56 -0
- data/lib/fern_gusto/companies/bank_accounts/client.rb +435 -0
- data/lib/fern_gusto/companies/bank_accounts/types/bank_accounts_create_request_account_type.rb +15 -0
- data/lib/fern_gusto/companies/benefits/client.rb +862 -0
- data/lib/fern_gusto/companies/client.rb +1104 -0
- data/lib/fern_gusto/companies/departments/client.rb +587 -0
- data/lib/fern_gusto/companies/departments/types/departments_add_people_request_contractors_item.rb +59 -0
- data/lib/fern_gusto/companies/departments/types/departments_add_people_request_employees_item.rb +59 -0
- data/lib/fern_gusto/companies/departments/types/departments_remove_people_request_contractors_item.rb +59 -0
- data/lib/fern_gusto/companies/departments/types/departments_remove_people_request_employees_item.rb +59 -0
- data/lib/fern_gusto/companies/employees/client.rb +376 -0
- data/lib/fern_gusto/companies/external_payrolls/client.rb +605 -0
- data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_request_external_payroll_items_item.rb +98 -0
- data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_request_external_payroll_items_item_benefits_item.rb +79 -0
- data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_request_external_payroll_items_item_earnings_item.rb +87 -0
- data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_request_external_payroll_items_item_earnings_item_earning_type.rb +15 -0
- data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_request_external_payroll_items_item_taxes_item.rb +69 -0
- data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_tax_liabilities_request_liability_selections_item.rb +80 -0
- data/lib/fern_gusto/companies/federal_tax_details/client.rb +212 -0
- data/lib/fern_gusto/companies/federal_tax_details/types/federal_tax_details_update_request_tax_payer_type.rb +25 -0
- data/lib/fern_gusto/companies/forms/client.rb +345 -0
- data/lib/fern_gusto/companies/industry_selection/client.rb +207 -0
- data/lib/fern_gusto/companies/locations/client.rb +417 -0
- data/lib/fern_gusto/companies/pay_schedules/client.rb +377 -0
- data/lib/fern_gusto/companies/payment_configs/client.rb +198 -0
- data/lib/fern_gusto/companies/payment_configs/types/payment_configs_update_request_payment_speed.rb +19 -0
- data/lib/fern_gusto/companies/signatories/client.rb +513 -0
- data/lib/fern_gusto/companies/signatories/types/signatories_create_request_home_address.rb +89 -0
- data/lib/fern_gusto/companies/signatories/types/signatories_update_request_home_address.rb +88 -0
- data/lib/fern_gusto/companies/tax_requirements/client.rb +367 -0
- data/lib/fern_gusto/companies/tax_requirements/types/tax_requirements_list_response_item.rb +75 -0
- data/lib/fern_gusto/companies/tax_requirements/types/tax_requirements_update_state_request_requirement_sets_item.rb +88 -0
- data/lib/fern_gusto/companies/tax_requirements/types/tax_requirements_update_state_request_requirement_sets_item_requirements_item.rb +70 -0
- data/lib/fern_gusto/companies/types/companies_accept_terms_response.rb +56 -0
- data/lib/fern_gusto/companies/types/companies_create_request_company.rb +83 -0
- data/lib/fern_gusto/companies/types/companies_create_request_user.rb +81 -0
- data/lib/fern_gusto/companies/types/companies_create_response.rb +82 -0
- data/lib/fern_gusto/companies/types/companies_get_custom_fields_response.rb +59 -0
- data/lib/fern_gusto/companies/types/companies_migrate_to_embedded_payroll_response.rb +68 -0
- data/lib/fern_gusto/companies/types/companies_retrieve_terms_response.rb +56 -0
- data/lib/fern_gusto/companies/types/company.rb +223 -0
- data/lib/fern_gusto/companies/types/company_company_status.rb +21 -0
- data/lib/fern_gusto/companies/types/company_compensations.rb +85 -0
- data/lib/fern_gusto/companies/types/company_compensations_fixed_item.rb +55 -0
- data/lib/fern_gusto/companies/types/company_compensations_hourly_item.rb +65 -0
- data/lib/fern_gusto/companies/types/company_compensations_paid_time_off_item.rb +55 -0
- data/lib/fern_gusto/companies/types/company_entity_type.rb +23 -0
- data/lib/fern_gusto/companies/types/company_funding_type.rb +15 -0
- data/lib/fern_gusto/companies/types/company_onboarding_status.rb +77 -0
- data/lib/fern_gusto/companies/types/company_onboarding_status_onboarding_steps_item.rb +97 -0
- data/lib/fern_gusto/companies/types/company_pay_schedule_type.rb +15 -0
- data/lib/fern_gusto/companies/types/company_primary_payroll_admin.rb +80 -0
- data/lib/fern_gusto/companies/types/company_primary_signatory.rb +100 -0
- data/lib/fern_gusto/companies/types/company_primary_signatory_home_address.rb +93 -0
- data/lib/fern_gusto/companies/types/company_tier.rb +20 -0
- data/lib/fern_gusto/company_attachment/types/company_attachment.rb +81 -0
- data/lib/fern_gusto/company_attachment/types/company_attachment_category.rb +13 -0
- data/lib/fern_gusto/company_bank_accounts/types/company_bank_account.rb +157 -0
- data/lib/fern_gusto/company_bank_accounts/types/company_bank_account_account_type.rb +13 -0
- data/lib/fern_gusto/company_bank_accounts/types/company_bank_account_plaid_status.rb +14 -0
- data/lib/fern_gusto/company_bank_accounts/types/company_bank_account_verification_status.rb +19 -0
- data/lib/fern_gusto/company_bank_accounts/types/company_bank_account_verification_type.rb +17 -0
- data/lib/fern_gusto/company_benefits/types/benefit_summary.rb +104 -0
- data/lib/fern_gusto/company_benefits/types/benefit_summary_employees.rb +113 -0
- data/lib/fern_gusto/company_benefits/types/benefit_summary_employees_payroll_benefits.rb +107 -0
- data/lib/fern_gusto/company_benefits/types/benefit_summary_employees_payroll_benefits_pay_period.rb +67 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements.rb +156 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_catch_up.rb +86 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_catch_up_default_value.rb +67 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_company_contribution_annual_maximum.rb +88 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_company_contribution_annual_maximum_default_value.rb +68 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_contribution.rb +86 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_contribution_default_value.rb +67 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_coverage_amount.rb +87 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_coverage_amount_default_value.rb +67 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_coverage_salary_multiplier.rb +88 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_coverage_salary_multiplier_default_value.rb +67 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_deduct_as_percentage.rb +88 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_deduct_as_percentage_default_value.rb +67 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_employee_deduction.rb +88 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_employee_deduction_default_value.rb +67 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_limit_option.rb +86 -0
- data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_limit_option_default_value.rb +67 -0
- data/lib/fern_gusto/contractor/types/contractor_onboarding_info.rb +78 -0
- data/lib/fern_gusto/contractor/types/contractor_onboarding_status_onboarding_status.rb +14 -0
- data/lib/fern_gusto/contractor/types/contractor_onboarding_status_onboarding_steps_item.rb +88 -0
- data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_for_group.rb +145 -0
- data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_for_group_payment_method.rb +15 -0
- data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_for_group_status.rb +16 -0
- data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_for_group_wage_type.rb +13 -0
- data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group.rb +127 -0
- data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group_minimal.rb +116 -0
- data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group_minimal_status.rb +16 -0
- data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group_minimal_totals.rb +74 -0
- data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group_status.rb +16 -0
- data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group_totals.rb +74 -0
- data/lib/fern_gusto/contractor_payment_method/types/contractor_bank_account.rb +94 -0
- data/lib/fern_gusto/contractor_payment_method/types/contractor_bank_account_account_type.rb +13 -0
- data/lib/fern_gusto/contractor_payment_method/types/contractor_payment_method.rb +96 -0
- data/lib/fern_gusto/contractor_payment_method/types/contractor_payment_method_split_by.rb +15 -0
- data/lib/fern_gusto/contractor_payment_method/types/contractor_payment_method_type.rb +14 -0
- data/lib/fern_gusto/contractor_payments/types/contractor_payment.rb +146 -0
- data/lib/fern_gusto/contractor_payments/types/contractor_payment_payment_method.rb +15 -0
- data/lib/fern_gusto/contractor_payments/types/contractor_payment_status.rb +13 -0
- data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary.rb +81 -0
- data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary_by_dates.rb +81 -0
- data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary_by_dates_contractor_payments_item.rb +93 -0
- data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary_by_dates_total.rb +67 -0
- data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary_contractor_payments_item.rb +86 -0
- data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary_total.rb +67 -0
- data/lib/fern_gusto/contractor_payments/types/contractor_payment_wage_type.rb +13 -0
- data/lib/fern_gusto/contractors/client.rb +1025 -0
- data/lib/fern_gusto/contractors/documents/client.rb +269 -0
- data/lib/fern_gusto/contractors/documents/types/documents_sign_request_fields_item.rb +67 -0
- data/lib/fern_gusto/contractors/forms/client.rb +343 -0
- data/lib/fern_gusto/contractors/payment_groups/client.rb +569 -0
- data/lib/fern_gusto/contractors/payment_groups/types/payment_groups_create_request_contractor_payments_item.rb +102 -0
- data/lib/fern_gusto/contractors/payment_groups/types/payment_groups_create_request_contractor_payments_item_payment_method.rb +15 -0
- data/lib/fern_gusto/contractors/payment_groups/types/payment_groups_preview_request_contractor_payments_item.rb +102 -0
- data/lib/fern_gusto/contractors/payment_groups/types/payment_groups_preview_request_contractor_payments_item_payment_method.rb +15 -0
- data/lib/fern_gusto/contractors/payment_method/client.rb +369 -0
- data/lib/fern_gusto/contractors/payment_method/types/payment_method_create_bank_account_request_account_type.rb +14 -0
- data/lib/fern_gusto/contractors/payment_method/types/payment_method_update_request_type.rb +17 -0
- data/lib/fern_gusto/contractors/payments/client.rb +558 -0
- data/lib/fern_gusto/contractors/payments/types/payments_create_request_payment_method.rb +15 -0
- data/lib/fern_gusto/contractors/payments/types/payments_list_response.rb +62 -0
- data/lib/fern_gusto/contractors/types/contractor.rb +227 -0
- data/lib/fern_gusto/contractors/types/contractor_address.rb +94 -0
- data/lib/fern_gusto/contractors/types/contractor_onboarding_status.rb +18 -0
- data/lib/fern_gusto/contractors/types/contractor_type.rb +13 -0
- data/lib/fern_gusto/contractors/types/contractor_wage_type.rb +13 -0
- data/lib/fern_gusto/custom_fields/types/company_custom_field.rb +88 -0
- data/lib/fern_gusto/custom_fields/types/custom_field_type.rb +16 -0
- data/lib/fern_gusto/custom_fields/types/employee_custom_field.rb +104 -0
- data/lib/fern_gusto/documents/types/document.rb +167 -0
- data/lib/fern_gusto/documents/types/document_fields_item.rb +114 -0
- data/lib/fern_gusto/documents/types/document_pages_item.rb +65 -0
- data/lib/fern_gusto/documents/types/document_recipient_type.rb +15 -0
- data/lib/fern_gusto/documents/types/document_signed.rb +137 -0
- data/lib/fern_gusto/documents/types/document_signed_recipient_type.rb +15 -0
- data/lib/fern_gusto/earning_types/types/earning_type.rb +66 -0
- data/lib/fern_gusto/employee_employments/types/unprocessed_termination_pay_period.rb +101 -0
- data/lib/fern_gusto/employee_payment_method/types/employee_bank_account.rb +94 -0
- data/lib/fern_gusto/employee_payment_method/types/employee_bank_account_account_type.rb +13 -0
- data/lib/fern_gusto/employee_payment_method/types/employee_payment_method_info.rb +96 -0
- data/lib/fern_gusto/employee_payment_method/types/employee_payment_method_split_by.rb +15 -0
- data/lib/fern_gusto/employee_payment_method/types/employee_payment_method_type.rb +14 -0
- data/lib/fern_gusto/employee_tax_setup/types/employee_federal_tax.rb +144 -0
- data/lib/fern_gusto/employee_tax_setup/types/employee_federal_tax_w4data_type.rb +13 -0
- data/lib/fern_gusto/employee_tax_setup/types/employee_state_tax.rb +90 -0
- data/lib/fern_gusto/employee_tax_setup/types/employee_state_tax_answer.rb +74 -0
- data/lib/fern_gusto/employee_tax_setup/types/employee_state_tax_input_question_format.rb +69 -0
- data/lib/fern_gusto/employee_tax_setup/types/employee_state_tax_input_question_format_options_item.rb +67 -0
- data/lib/fern_gusto/employee_tax_setup/types/employee_state_tax_question.rb +96 -0
- data/lib/fern_gusto/employees/adresses/client.rb +885 -0
- data/lib/fern_gusto/employees/benefits/client.rb +656 -0
- data/lib/fern_gusto/employees/benefits/types/benefits_create_request_contribution.rb +93 -0
- data/lib/fern_gusto/employees/benefits/types/benefits_create_request_contribution_type.rb +23 -0
- data/lib/fern_gusto/employees/benefits/types/benefits_create_request_contribution_value.rb +67 -0
- data/lib/fern_gusto/employees/benefits/types/benefits_create_request_contribution_value_item.rb +80 -0
- data/lib/fern_gusto/employees/benefits/types/benefits_create_request_deduction_reduces_taxable_income.rb +18 -0
- data/lib/fern_gusto/employees/benefits/types/benefits_update_request_contribution.rb +93 -0
- data/lib/fern_gusto/employees/benefits/types/benefits_update_request_contribution_type.rb +23 -0
- data/lib/fern_gusto/employees/benefits/types/benefits_update_request_contribution_value.rb +67 -0
- data/lib/fern_gusto/employees/benefits/types/benefits_update_request_contribution_value_item.rb +80 -0
- data/lib/fern_gusto/employees/benefits/types/benefits_update_request_deduction_reduces_taxable_income.rb +18 -0
- data/lib/fern_gusto/employees/client.rb +822 -0
- data/lib/fern_gusto/employees/employments/client.rb +799 -0
- data/lib/fern_gusto/employees/employments/types/employments_get_history_response_item.rb +95 -0
- data/lib/fern_gusto/employees/employments/types/employments_get_history_response_item_employment_status.rb +20 -0
- data/lib/fern_gusto/employees/forms/client.rb +433 -0
- data/lib/fern_gusto/employees/forms/types/forms_generate_w2response.rb +132 -0
- data/lib/fern_gusto/employees/garnishments/client.rb +558 -0
- data/lib/fern_gusto/employees/garnishments/types/garnishments_create_request_garnishment_type.rb +20 -0
- data/lib/fern_gusto/employees/jobs_and_compensations/client.rb +938 -0
- data/lib/fern_gusto/employees/jobs_and_compensations/types/jobs_and_compensations_create_compensation_request_minimum_wages_item.rb +62 -0
- data/lib/fern_gusto/employees/jobs_and_compensations/types/jobs_and_compensations_create_compensation_request_payment_unit.rb +19 -0
- data/lib/fern_gusto/employees/jobs_and_compensations/types/jobs_and_compensations_update_compensation_request_minimum_wages_item.rb +62 -0
- data/lib/fern_gusto/employees/jobs_and_compensations/types/jobs_and_compensations_update_compensation_request_payment_unit.rb +19 -0
- data/lib/fern_gusto/employees/payment_method/client.rb +484 -0
- data/lib/fern_gusto/employees/payment_method/types/payment_method_create_bank_account_request_account_type.rb +14 -0
- data/lib/fern_gusto/employees/payment_method/types/payment_method_update_bank_account_request_account_type.rb +14 -0
- data/lib/fern_gusto/employees/payment_method/types/payment_method_update_request_split_by.rb +17 -0
- data/lib/fern_gusto/employees/payment_method/types/payment_method_update_request_splits_item.rb +83 -0
- data/lib/fern_gusto/employees/payment_method/types/payment_method_update_request_type.rb +16 -0
- data/lib/fern_gusto/employees/tax_setup/client.rb +422 -0
- data/lib/fern_gusto/employees/tax_setup/types/tax_setup_update_state_taxes_request_states_item.rb +73 -0
- data/lib/fern_gusto/employees/tax_setup/types/tax_setup_update_state_taxes_request_states_item_questions_item.rb +73 -0
- data/lib/fern_gusto/employees/tax_setup/types/tax_setup_update_state_taxes_request_states_item_questions_item_answers_item.rb +77 -0
- data/lib/fern_gusto/employees/types/employee.rb +281 -0
- data/lib/fern_gusto/employees/types/employee_current_employment_status.rb +20 -0
- data/lib/fern_gusto/employees/types/employee_onboarding_info.rb +77 -0
- data/lib/fern_gusto/employees/types/employee_onboarding_status.rb +19 -0
- data/lib/fern_gusto/employees/types/employee_onboarding_status_onboarding_steps_item.rb +88 -0
- data/lib/fern_gusto/employees/types/employee_payment_method.rb +13 -0
- data/lib/fern_gusto/employees/types/employees_get_custom_fields_response.rb +59 -0
- data/lib/fern_gusto/employees/types/employees_get_request_include.rb +12 -0
- data/lib/fern_gusto/events/client.rb +144 -0
- data/lib/fern_gusto/events/types/events_list_request_sort_order.rb +12 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll.rb +158 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_applicable_benefits_item.rb +73 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_applicable_earnings_item.rb +87 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_applicable_taxes_item.rb +85 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_basic.rb +101 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_basic_status.rb +16 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_external_payroll_items_item.rb +93 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_external_payroll_items_item_benefits_item.rb +74 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_external_payroll_items_item_earnings_item.rb +81 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_external_payroll_items_item_taxes_item.rb +67 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_metadata.rb +56 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_status.rb +16 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_tax_suggestions.rb +72 -0
- data/lib/fern_gusto/external_payrolls/types/external_payroll_tax_suggestions_tax_suggestions.rb +68 -0
- data/lib/fern_gusto/external_payrolls/types/tax_liabilities_selections.rb +86 -0
- data/lib/fern_gusto/external_payrolls/types/tax_liabilities_selections_possible_liabilities.rb +75 -0
- data/lib/fern_gusto/federal_tax_details/types/federal_tax_details.rb +140 -0
- data/lib/fern_gusto/flows/client.rb +113 -0
- data/lib/fern_gusto/flows/types/flow.rb +66 -0
- data/lib/fern_gusto/flows/types/flows_create_request_entity_type.rb +14 -0
- data/lib/fern_gusto/forms/types/form.rb +123 -0
- data/lib/fern_gusto/forms/types/form1099.rb +126 -0
- data/lib/fern_gusto/generated_documents/client.rb +106 -0
- data/lib/fern_gusto/holiday_pay_policies/client.rb +599 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_add_employees_request_employees_item.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays.rb +198 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_christmas_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_columbus_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_independence_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_juneteenth.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_labor_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_memorial_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_mlk_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_new_years_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_presidents_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_thanksgiving.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_veterans_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_remove_employees_request_employees_item.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays.rb +198 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_christmas_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_columbus_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_independence_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_juneteenth.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_labor_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_memorial_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_mlk_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_new_years_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_presidents_day.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_thanksgiving.rb +57 -0
- data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_veterans_day.rb +57 -0
- data/lib/fern_gusto/industry/types/industry.rb +87 -0
- data/lib/fern_gusto/invoices/client.rb +132 -0
- data/lib/fern_gusto/jobs_and_compensations/types/compensation.rb +120 -0
- data/lib/fern_gusto/jobs_and_compensations/types/compensation_payment_unit.rb +17 -0
- data/lib/fern_gusto/jobs_and_compensations/types/job.rb +161 -0
- data/lib/fern_gusto/locations/types/company_address.rb +103 -0
- data/lib/fern_gusto/locations/types/location.rb +171 -0
- data/lib/fern_gusto/notifications/client.rb +120 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule.rb +151 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment.rb +103 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_department.rb +65 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_employee.rb +65 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_employee_change.rb +105 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_pay_period.rb +80 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_preview.rb +71 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_preview_type.rb +15 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_transition_pay_period.rb +68 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_type.rb +15 -0
- data/lib/fern_gusto/pay_schedules/types/pay_schedule_frequency.rb +17 -0
- data/lib/fern_gusto/payment_configs/types/payment_configs.rb +79 -0
- data/lib/fern_gusto/payroll/client.rb +1644 -0
- data/lib/fern_gusto/payroll/earning_types/client.rb +350 -0
- data/lib/fern_gusto/payroll/earning_types/types/earning_types_get_response.rb +74 -0
- data/lib/fern_gusto/payroll/external_payrolls/client.rb +199 -0
- data/lib/fern_gusto/payroll/pay_schedules/client.rb +584 -0
- data/lib/fern_gusto/payroll/pay_schedules/types/pay_schedules_create_request_frequency.rb +17 -0
- data/lib/fern_gusto/payroll/pay_schedules/types/pay_schedules_preview_request_frequency.rb +16 -0
- data/lib/fern_gusto/payroll/pay_schedules/types/pay_schedules_preview_response.rb +72 -0
- data/lib/fern_gusto/payroll/pay_schedules/types/pay_schedules_preview_response_pay_periods_item.rb +83 -0
- data/lib/fern_gusto/payroll/pay_schedules/types/pay_schedules_update_request_frequency.rb +17 -0
- data/lib/fern_gusto/payroll/types/payroll_create_request_off_cycle_reason.rb +15 -0
- data/lib/fern_gusto/payroll/types/payroll_create_request_withholding_pay_period.rb +18 -0
- data/lib/fern_gusto/payroll/types/payroll_get_request_include_item.rb +14 -0
- data/lib/fern_gusto/payroll/types/payroll_list_request_include_item.rb +13 -0
- data/lib/fern_gusto/payroll/types/payroll_list_request_payroll_types_item.rb +13 -0
- data/lib/fern_gusto/payroll/types/payroll_list_request_processing_statuses_item.rb +12 -0
- data/lib/fern_gusto/payroll/types/payroll_list_request_sort_order.rb +12 -0
- data/lib/fern_gusto/payroll/types/payroll_skip_payroll_request_payroll_type.rb +15 -0
- data/lib/fern_gusto/payroll/types/payroll_submit_request_submission_blockers_item.rb +67 -0
- data/lib/fern_gusto/payroll/types/payroll_update_request_employee_compensations_item.rb +133 -0
- data/lib/fern_gusto/payroll/types/payroll_update_request_employee_compensations_item_fixed_compensations_item.rb +79 -0
- data/lib/fern_gusto/payroll/types/payroll_update_request_employee_compensations_item_hourly_compensations_item.rb +79 -0
- data/lib/fern_gusto/payroll/types/payroll_update_request_employee_compensations_item_paid_time_off_item.rb +85 -0
- data/lib/fern_gusto/payroll/types/payroll_update_request_employee_compensations_item_payment_method.rb +13 -0
- data/lib/fern_gusto/payrolls/types/employee_pay_stub.rb +94 -0
- data/lib/fern_gusto/payrolls/types/paid_time_off.rb +123 -0
- data/lib/fern_gusto/payrolls/types/paid_time_off_name.rb +14 -0
- data/lib/fern_gusto/payrolls/types/pay_period.rb +86 -0
- data/lib/fern_gusto/payrolls/types/pay_period_payroll.rb +107 -0
- data/lib/fern_gusto/payrolls/types/pay_period_payroll_payroll_type.rb +13 -0
- data/lib/fern_gusto/payrolls/types/payroll.rb +285 -0
- data/lib/fern_gusto/payrolls/types/payroll_minimal.rb +250 -0
- data/lib/fern_gusto/payrolls/types/payroll_prepared.rb +250 -0
- data/lib/fern_gusto/recovery_cases/client.rb +198 -0
- data/lib/fern_gusto/reports/client.rb +306 -0
- data/lib/fern_gusto/reports/types/reports_create_request_columns_item.rb +91 -0
- data/lib/fern_gusto/reports/types/reports_create_request_employment_status.rb +18 -0
- data/lib/fern_gusto/reports/types/reports_create_request_employment_type.rb +16 -0
- data/lib/fern_gusto/reports/types/reports_create_request_file_type.rb +13 -0
- data/lib/fern_gusto/reports/types/reports_create_request_groupings_item.rb +14 -0
- data/lib/fern_gusto/reports/types/reports_create_request_payment_method.rb +13 -0
- data/lib/fern_gusto/signatories/types/signatory.rb +175 -0
- data/lib/fern_gusto/signatories/types/signatory_home_address.rb +93 -0
- data/lib/fern_gusto/signatories/types/signatory_identity_verification_status.rb +28 -0
- data/lib/fern_gusto/terminations/types/termination.rb +109 -0
- data/lib/fern_gusto/time_off_policies/client.rb +863 -0
- data/lib/fern_gusto/time_off_policies/types/time_off_policies_add_employees_request_employees_item.rb +67 -0
- data/lib/fern_gusto/time_off_policies/types/time_off_policies_create_request_accrual_method.rb +19 -0
- data/lib/fern_gusto/time_off_policies/types/time_off_policies_remove_employees_request_employees_item.rb +57 -0
- data/lib/fern_gusto/time_off_policies/types/time_off_policies_update_balance_request_employees_item.rb +67 -0
- data/lib/fern_gusto/time_off_policies/types/time_off_policies_update_request_accrual_method.rb +19 -0
- data/lib/fern_gusto/time_off_requests/types/time_off_request.rb +141 -0
- data/lib/fern_gusto/time_off_requests/types/time_off_request_approver.rb +66 -0
- data/lib/fern_gusto/time_off_requests/types/time_off_request_employee.rb +66 -0
- data/lib/fern_gusto/time_off_requests/types/time_off_request_initiator.rb +66 -0
- data/lib/fern_gusto/time_off_requests/types/time_off_request_request_type.rb +13 -0
- data/lib/fern_gusto/time_off_requests/types/time_off_request_status.rb +14 -0
- data/lib/fern_gusto/token/client.rb +270 -0
- data/lib/fern_gusto/token/types/token_get_info_response.rb +85 -0
- data/lib/fern_gusto/token/types/token_get_info_response_resource.rb +64 -0
- data/lib/fern_gusto/token/types/token_get_info_response_resource_owner.rb +65 -0
- data/lib/fern_gusto/token/types/token_get_info_response_resource_owner_type.rb +13 -0
- data/lib/fern_gusto/token/types/token_get_system_access_token_response.rb +77 -0
- data/lib/fern_gusto/types/accruing_time_off_hour.rb +64 -0
- data/lib/fern_gusto/types/ach_transaction.rb +162 -0
- data/lib/fern_gusto/types/ach_transaction_payment_direction.rb +11 -0
- data/lib/fern_gusto/types/ach_transaction_payment_event_type.rb +11 -0
- data/lib/fern_gusto/types/ach_transaction_payment_status.rb +13 -0
- data/lib/fern_gusto/types/ach_transaction_recipient_type.rb +11 -0
- data/lib/fern_gusto/types/address.rb +111 -0
- data/lib/fern_gusto/types/authentication.rb +96 -0
- data/lib/fern_gusto/types/child_support_data.rb +58 -0
- data/lib/fern_gusto/types/child_support_data_agencies_item.rb +104 -0
- data/lib/fern_gusto/types/child_support_data_agencies_item_fips_codes_item.rb +67 -0
- data/lib/fern_gusto/types/child_support_data_agencies_item_required_attributes_item.rb +70 -0
- data/lib/fern_gusto/types/child_support_data_agencies_item_required_attributes_item_key.rb +14 -0
- data/lib/fern_gusto/types/company_benefit.rb +135 -0
- data/lib/fern_gusto/types/company_benefit_with_employee_benefits.rb +148 -0
- data/lib/fern_gusto/types/company_benefit_with_employee_benefits_employee_benefits_item.rb +115 -0
- data/lib/fern_gusto/types/company_benefit_with_employee_benefits_employee_benefits_item_contribution.rb +91 -0
- data/lib/fern_gusto/types/company_benefit_with_employee_benefits_employee_benefits_item_contribution_value.rb +61 -0
- data/lib/fern_gusto/types/company_benefit_with_employee_benefits_employee_benefits_item_contribution_value_tiers.rb +60 -0
- data/lib/fern_gusto/types/company_benefit_with_employee_benefits_employee_benefits_item_contribution_value_tiers_tiers_item.rb +86 -0
- data/lib/fern_gusto/types/contractor_address_info.rb +118 -0
- data/lib/fern_gusto/types/contractor_body.rb +200 -0
- data/lib/fern_gusto/types/contractor_body_type.rb +11 -0
- data/lib/fern_gusto/types/contractor_body_wage_type.rb +11 -0
- data/lib/fern_gusto/types/contractor_payment_receipt.rb +161 -0
- data/lib/fern_gusto/types/contractor_payment_receipt_contractor_payments_item.rb +120 -0
- data/lib/fern_gusto/types/contractor_payment_receipt_licensee.rb +92 -0
- data/lib/fern_gusto/types/contractor_payment_receipt_totals.rb +54 -0
- data/lib/fern_gusto/types/create_report.rb +77 -0
- data/lib/fern_gusto/types/department.rb +103 -0
- data/lib/fern_gusto/types/department_contractors_item.rb +53 -0
- data/lib/fern_gusto/types/department_employees_item.rb +53 -0
- data/lib/fern_gusto/types/document_pdf.rb +63 -0
- data/lib/fern_gusto/types/employee_address.rb +139 -0
- data/lib/fern_gusto/types/employee_benefit.rb +220 -0
- data/lib/fern_gusto/types/employee_benefit_base_object.rb +199 -0
- data/lib/fern_gusto/types/employee_benefit_base_object_contribution.rb +89 -0
- data/lib/fern_gusto/types/employee_benefit_base_object_contribution_value.rb +61 -0
- data/lib/fern_gusto/types/employee_benefit_base_object_contribution_value_tiers.rb +59 -0
- data/lib/fern_gusto/types/employee_benefit_base_object_contribution_value_tiers_tiers_item.rb +85 -0
- data/lib/fern_gusto/types/employee_benefit_base_object_deduction_reduces_taxable_income.rb +14 -0
- data/lib/fern_gusto/types/employee_benefit_for_company_benefit.rb +220 -0
- data/lib/fern_gusto/types/employee_work_address.rb +137 -0
- data/lib/fern_gusto/types/entity_error_object.rb +102 -0
- data/lib/fern_gusto/types/entity_error_object_errors_item.rb +89 -0
- data/lib/fern_gusto/types/event.rb +99 -0
- data/lib/fern_gusto/types/flsa_status_type.rb +23 -0
- data/lib/fern_gusto/types/form_pdf.rb +63 -0
- data/lib/fern_gusto/types/garnishment.rb +172 -0
- data/lib/fern_gusto/types/garnishment_child_support.rb +113 -0
- data/lib/fern_gusto/types/garnishment_child_support_payment_period.rb +14 -0
- data/lib/fern_gusto/types/garnishment_garnishment_type.rb +16 -0
- data/lib/fern_gusto/types/generated_document.rb +70 -0
- data/lib/fern_gusto/types/gross_up_pay.rb +53 -0
- data/lib/fern_gusto/types/historical_employee_body.rb +156 -0
- data/lib/fern_gusto/types/historical_employee_body_employee_state_taxes.rb +80 -0
- data/lib/fern_gusto/types/historical_employee_body_home_address.rb +84 -0
- data/lib/fern_gusto/types/historical_employee_body_job.rb +53 -0
- data/lib/fern_gusto/types/historical_employee_body_termination.rb +53 -0
- data/lib/fern_gusto/types/historical_employee_body_work_address.rb +53 -0
- data/lib/fern_gusto/types/holiday_pay_policy.rb +88 -0
- data/lib/fern_gusto/types/holiday_pay_policy_employees_item.rb +53 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item.rb +179 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_columbus_day.rb +72 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_independence_day.rb +72 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_juneteenth.rb +72 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_labor_day.rb +72 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_memorial_day.rb +72 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_mlk_day.rb +72 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_new_years_day.rb +72 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_presidents_day.rb +72 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_thanksgiving.rb +72 -0
- data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_veterans_day.rb +72 -0
- data/lib/fern_gusto/types/invoice_data.rb +58 -0
- data/lib/fern_gusto/types/invoice_data_active_companies_item.rb +91 -0
- data/lib/fern_gusto/types/minimum_wage.rb +96 -0
- data/lib/fern_gusto/types/notification.rb +125 -0
- data/lib/fern_gusto/types/notification_resources_item.rb +85 -0
- data/lib/fern_gusto/types/off_cycle_reason_type.rb +19 -0
- data/lib/fern_gusto/types/paid_holidays.rb +61 -0
- data/lib/fern_gusto/types/paid_holidays_schema.rb +77 -0
- data/lib/fern_gusto/types/pay_schedule_assignment_body.rb +111 -0
- data/lib/fern_gusto/types/pay_schedule_assignment_body_departments_item.rb +65 -0
- data/lib/fern_gusto/types/pay_schedule_assignment_body_employees_item.rb +64 -0
- data/lib/fern_gusto/types/pay_schedule_assignment_body_type.rb +13 -0
- data/lib/fern_gusto/types/payment_method_bank_account.rb +87 -0
- data/lib/fern_gusto/types/payroll_blocker.rb +63 -0
- data/lib/fern_gusto/types/payroll_blockers_error.rb +60 -0
- data/lib/fern_gusto/types/payroll_blockers_error_errors_item.rb +83 -0
- data/lib/fern_gusto/types/payroll_blockers_error_errors_item_metadata.rb +54 -0
- data/lib/fern_gusto/types/payroll_check.rb +84 -0
- data/lib/fern_gusto/types/payroll_company_taxes_type.rb +6 -0
- data/lib/fern_gusto/types/payroll_company_taxes_type_item.rb +70 -0
- data/lib/fern_gusto/types/payroll_credit_blockers_type.rb +6 -0
- data/lib/fern_gusto/types/payroll_credit_blockers_type_item.rb +89 -0
- data/lib/fern_gusto/types/payroll_credit_blockers_type_item_status.rb +13 -0
- data/lib/fern_gusto/types/payroll_credit_blockers_type_item_unblock_options_item.rb +72 -0
- data/lib/fern_gusto/types/payroll_employee_compensations_type.rb +6 -0
- data/lib/fern_gusto/types/payroll_employee_compensations_type_item.rb +216 -0
- data/lib/fern_gusto/types/payroll_employee_compensations_type_item_benefits_item.rb +79 -0
- data/lib/fern_gusto/types/payroll_employee_compensations_type_item_deductions_item.rb +65 -0
- data/lib/fern_gusto/types/payroll_employee_compensations_type_item_fixed_compensations_item.rb +74 -0
- data/lib/fern_gusto/types/payroll_employee_compensations_type_item_hourly_compensations_item.rb +92 -0
- data/lib/fern_gusto/types/payroll_employee_compensations_type_item_paid_time_off_item.rb +76 -0
- data/lib/fern_gusto/types/payroll_employee_compensations_type_item_payment_method.rb +11 -0
- data/lib/fern_gusto/types/payroll_employee_compensations_type_item_taxes_item.rb +70 -0
- data/lib/fern_gusto/types/payroll_fixed_compensation_types_type.rb +6 -0
- data/lib/fern_gusto/types/payroll_fixed_compensation_types_type_item.rb +54 -0
- data/lib/fern_gusto/types/payroll_pay_period_type.rb +70 -0
- data/lib/fern_gusto/types/payroll_payment_speed_changed_type.rb +86 -0
- data/lib/fern_gusto/types/payroll_payroll_status_meta_type.rb +92 -0
- data/lib/fern_gusto/types/payroll_processing_request.rb +68 -0
- data/lib/fern_gusto/types/payroll_processing_request_status.rb +14 -0
- data/lib/fern_gusto/types/payroll_receipt.rb +177 -0
- data/lib/fern_gusto/types/payroll_receipt_employee_compensations_item.rb +116 -0
- data/lib/fern_gusto/types/payroll_receipt_licensee.rb +92 -0
- data/lib/fern_gusto/types/payroll_receipt_taxes_item.rb +63 -0
- data/lib/fern_gusto/types/payroll_receipt_totals.rb +85 -0
- data/lib/fern_gusto/types/payroll_reversal.rb +91 -0
- data/lib/fern_gusto/types/payroll_submission_blockers_type.rb +6 -0
- data/lib/fern_gusto/types/payroll_submission_blockers_type_item.rb +89 -0
- data/lib/fern_gusto/types/payroll_submission_blockers_type_item_status.rb +11 -0
- data/lib/fern_gusto/types/payroll_submission_blockers_type_item_unblock_options_item.rb +72 -0
- data/lib/fern_gusto/types/payroll_totals_type.rb +199 -0
- data/lib/fern_gusto/types/payroll_withholding_pay_period_type.rb +17 -0
- data/lib/fern_gusto/types/recovery_case.rb +131 -0
- data/lib/fern_gusto/types/recovery_case_status.rb +14 -0
- data/lib/fern_gusto/types/rehire.rb +116 -0
- data/lib/fern_gusto/types/rehire_body.rb +91 -0
- data/lib/fern_gusto/types/rehire_body_employment_status.rb +16 -0
- data/lib/fern_gusto/types/rehire_employment_status.rb +16 -0
- data/lib/fern_gusto/types/report.rb +72 -0
- data/lib/fern_gusto/types/report_template.rb +77 -0
- data/lib/fern_gusto/types/supported_benefit.rb +122 -0
- data/lib/fern_gusto/types/tax_requirement.rb +111 -0
- data/lib/fern_gusto/types/tax_requirement_applicable_if_item.rb +69 -0
- data/lib/fern_gusto/types/tax_requirement_applicable_if_item_value.rb +72 -0
- data/lib/fern_gusto/types/tax_requirement_effective_from.rb +5 -0
- data/lib/fern_gusto/types/tax_requirement_metadata.rb +182 -0
- data/lib/fern_gusto/types/tax_requirement_metadata_options_item.rb +70 -0
- data/lib/fern_gusto/types/tax_requirement_metadata_rate_type.rb +13 -0
- data/lib/fern_gusto/types/tax_requirement_metadata_type.rb +31 -0
- data/lib/fern_gusto/types/tax_requirement_metadata_validation.rb +81 -0
- data/lib/fern_gusto/types/tax_requirement_metadata_validation_type.rb +11 -0
- data/lib/fern_gusto/types/tax_requirement_set.rb +90 -0
- data/lib/fern_gusto/types/tax_requirements_state.rb +75 -0
- data/lib/fern_gusto/types/time_off_activity.rb +107 -0
- data/lib/fern_gusto/types/time_off_activity_time_off_type.rb +11 -0
- data/lib/fern_gusto/types/time_off_policy.rb +183 -0
- data/lib/fern_gusto/types/time_off_policy_employees_item.rb +53 -0
- data/lib/fern_gusto/types/time_off_policy_policy_type.rb +11 -0
- data/lib/fern_gusto/types/unprocessable_entity_error_body.rb +59 -0
- data/lib/fern_gusto/types/unprocessable_entity_error_body_errors.rb +57 -0
- data/lib/fern_gusto/types/unprocessable_entity_error_body_errors_base_item.rb +72 -0
- data/lib/fern_gusto/types/unprocessable_entity_error_body_item.rb +65 -0
- data/lib/fern_gusto/types/unprocessable_entity_error_body_item_questions_item.rb +69 -0
- data/lib/fern_gusto/types/unprocessable_entity_error_body_item_questions_item_answers_item.rb +72 -0
- data/lib/fern_gusto/types/unprocessable_entity_error_object.rb +63 -0
- data/lib/fern_gusto/types/versionable.rb +57 -0
- data/lib/fern_gusto/types/versionable_required.rb +55 -0
- data/lib/fern_gusto/types/wire_in_request.rb +170 -0
- data/lib/fern_gusto/types/wire_in_request_status.rb +14 -0
- data/lib/fern_gusto/webhooks/client.rb +627 -0
- data/lib/fern_gusto/webhooks/types/webhook_subscription.rb +82 -0
- data/lib/fern_gusto/webhooks/types/webhook_subscription_status.rb +14 -0
- data/lib/fern_gusto/webhooks/types/webhook_subscription_subscription_types_item.rb +25 -0
- data/lib/fern_gusto/webhooks/types/webhooks_create_request_subscription_types_item.rb +25 -0
- data/lib/fern_gusto/webhooks/types/webhooks_update_request_subscription_types_item.rb +25 -0
- data/lib/fern_gusto/wire_in_requests/client.rb +273 -0
- data/lib/fern_gusto.rb +310 -0
- data/lib/gemconfig.rb +13 -0
- data/lib/gusto_legacy.rb +19 -0
- data/lib/requests.rb +206 -0
- data/lib/types_export.rb +461 -0
- metadata +671 -0
@@ -0,0 +1,1644 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative "../../requests"
|
3
|
+
require_relative "external_payrolls/client"
|
4
|
+
require_relative "pay_schedules/client"
|
5
|
+
require_relative "earning_types/client"
|
6
|
+
require_relative "types/payroll_list_request_processing_statuses_item"
|
7
|
+
require_relative "types/payroll_list_request_payroll_types_item"
|
8
|
+
require_relative "types/payroll_list_request_include_item"
|
9
|
+
require_relative "types/payroll_list_request_sort_order"
|
10
|
+
require_relative "../payrolls/types/payroll_minimal"
|
11
|
+
require "json"
|
12
|
+
require_relative "types/payroll_create_request_off_cycle_reason"
|
13
|
+
require_relative "types/payroll_create_request_withholding_pay_period"
|
14
|
+
require_relative "../payrolls/types/payroll_prepared"
|
15
|
+
require_relative "../types/payroll_reversal"
|
16
|
+
require_relative "types/payroll_get_request_include_item"
|
17
|
+
require_relative "../payrolls/types/payroll"
|
18
|
+
require_relative "types/payroll_update_request_employee_compensations_item"
|
19
|
+
require_relative "../types/payroll_receipt"
|
20
|
+
require_relative "../types/payroll_blocker"
|
21
|
+
require_relative "types/payroll_skip_payroll_request_payroll_type"
|
22
|
+
require_relative "../types/gross_up_pay"
|
23
|
+
require_relative "types/payroll_submit_request_submission_blockers_item"
|
24
|
+
require_relative "../payrolls/types/employee_pay_stub"
|
25
|
+
require_relative "../types/payroll_check"
|
26
|
+
require "async"
|
27
|
+
require "async"
|
28
|
+
require "async"
|
29
|
+
require "async"
|
30
|
+
require "async"
|
31
|
+
require "async"
|
32
|
+
require "async"
|
33
|
+
require "async"
|
34
|
+
require "async"
|
35
|
+
require "async"
|
36
|
+
require "async"
|
37
|
+
require "async"
|
38
|
+
require "async"
|
39
|
+
require "async"
|
40
|
+
require "async"
|
41
|
+
require "async"
|
42
|
+
require "async"
|
43
|
+
require_relative "../../requests"
|
44
|
+
|
45
|
+
module Gusto
|
46
|
+
class PayrollClient
|
47
|
+
# @return [Gusto::RequestClient]
|
48
|
+
attr_reader :request_client
|
49
|
+
# @return [Gusto::Payroll::ExternalPayrollsClient]
|
50
|
+
attr_reader :external_payrolls
|
51
|
+
# @return [Gusto::Payroll::PaySchedulesClient]
|
52
|
+
attr_reader :pay_schedules
|
53
|
+
# @return [Gusto::Payroll::EarningTypesClient]
|
54
|
+
attr_reader :earning_types
|
55
|
+
|
56
|
+
|
57
|
+
# @param request_client [Gusto::RequestClient]
|
58
|
+
# @return [Gusto::PayrollClient]
|
59
|
+
def initialize(request_client:)
|
60
|
+
@request_client = request_client
|
61
|
+
@external_payrolls = Gusto::Payroll::ExternalPayrollsClient.new(request_client: request_client)
|
62
|
+
@pay_schedules = Gusto::Payroll::PaySchedulesClient.new(request_client: request_client)
|
63
|
+
@earning_types = Gusto::Payroll::EarningTypesClient.new(request_client: request_client)
|
64
|
+
end
|
65
|
+
# Returns a list of payrolls for a company. You can change the payrolls returned
|
66
|
+
# by updating the processing_status, payroll_types, start_date, & end_date params.
|
67
|
+
# By default, will return processed, regular payrolls for the past 6 months.
|
68
|
+
# Notes:
|
69
|
+
# - Dollar amounts are returned as string representations of numeric decimals, are
|
70
|
+
# represented to the cent.
|
71
|
+
# - end_date can be at most 3 months in the future and start_date and end_date
|
72
|
+
# can't be more than 1 year apart.
|
73
|
+
# scope: `payrolls:read`
|
74
|
+
#
|
75
|
+
# @param company_id [String] The UUID of the company
|
76
|
+
# @param processing_statuses [Gusto::Payroll::PayrollListRequestProcessingStatusesItem] Whether to include processed and/or unprocessed payrolls in the response,
|
77
|
+
# defaults to processed, for multiple attributes comma separate the values, i.e.
|
78
|
+
# `?processing_statuses=processed,unprocessed`
|
79
|
+
# @param payroll_types [Gusto::Payroll::PayrollListRequestPayrollTypesItem] Whether to include regular and/or off_cycle payrolls in the response, defaults
|
80
|
+
# to regular, for multiple attributes comma separate the values, i.e.
|
81
|
+
# `?payroll_types=regular,off_cycle`
|
82
|
+
# @param include [Gusto::Payroll::PayrollListRequestIncludeItem] Include the requested attribute in the response. The risk_blockers option will
|
83
|
+
# include submission_blockers and credit_blockers if applicable. In v2023-04-01
|
84
|
+
# totals are no longer included by default. For multiple attributes comma separate
|
85
|
+
# the values, i.e. `?include=totals,payroll_status_meta`
|
86
|
+
# @param start_date [String] Return payrolls whose pay period is after the start date
|
87
|
+
# @param end_date [String] Return payrolls whose pay period is before the end date. If left empty, defaults
|
88
|
+
# to today's date.
|
89
|
+
# @param sort_order [Gusto::Payroll::PayrollListRequestSortOrder] A string indicating whether to sort resulting events in ascending (asc) or
|
90
|
+
# descending (desc) chronological order. Events are sorted by their `timestamp`.
|
91
|
+
# Defaults to asc if left empty.
|
92
|
+
# @param request_options [Gusto::RequestOptions]
|
93
|
+
# @return [Array<Gusto::Payrolls::PayrollMinimal>]
|
94
|
+
# @example
|
95
|
+
# api = Gusto::Client.new(
|
96
|
+
# base_url: "https://api.example.com",
|
97
|
+
# environment: Gusto::Environment::DEMO,
|
98
|
+
# token: "YOUR_AUTH_TOKEN"
|
99
|
+
# )
|
100
|
+
# api.payroll.list(company_id: "company_id")
|
101
|
+
def list(company_id:, processing_statuses: nil, payroll_types: nil, include: nil, start_date: nil, end_date: nil, sort_order: nil, request_options: nil)
|
102
|
+
response = @request_client.conn.get do | req |
|
103
|
+
unless request_options&.timeout_in_seconds.nil?
|
104
|
+
req.options.timeout = request_options.timeout_in_seconds
|
105
|
+
end
|
106
|
+
unless request_options&.token.nil?
|
107
|
+
req.headers["Authorization"] = request_options.token
|
108
|
+
end
|
109
|
+
unless request_options&.gusto_api_version.nil?
|
110
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
111
|
+
end
|
112
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
113
|
+
req.params = { **(request_options&.additional_query_parameters || {}), "processing_statuses": processing_statuses, "payroll_types": payroll_types, "include": include, "start_date": start_date, "end_date": end_date, "sort_order": sort_order }.compact
|
114
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
115
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
116
|
+
end
|
117
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls"
|
118
|
+
end
|
119
|
+
parsed_json = JSON.parse(response.body)
|
120
|
+
parsed_json&.map do | item |
|
121
|
+
item = item.to_json
|
122
|
+
Gusto::Payrolls::PayrollMinimal.from_json(json_object: item)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
# Creates a new, unprocessed, off-cycle payroll.
|
126
|
+
# ## `off_cycle_reason`
|
127
|
+
# - External benefits and deductions will be included when the `off_cycle_reason`
|
128
|
+
# is set to `Correction`.
|
129
|
+
# - All benefits and deductions are blocked when the `off_cycle_reason` is set to
|
130
|
+
# `Bonus`.
|
131
|
+
# scope: `payrolls:run`
|
132
|
+
#
|
133
|
+
# @param company_id [String] The UUID of the company
|
134
|
+
# @param off_cycle [Boolean] Whether it is an off cycle payroll.
|
135
|
+
# @param off_cycle_reason [Gusto::Payroll::PayrollCreateRequestOffCycleReason] An off cycle payroll reason. Select one from the following list.
|
136
|
+
# @param start_date [String] Pay period start date.
|
137
|
+
# @param end_date [String] Pay period end date. If left empty, defaults to today's date.
|
138
|
+
# @param pay_schedule_uuid [String] A pay schedule is required for Transition from old pay schedule payroll to
|
139
|
+
# identify the matching transition pay period.
|
140
|
+
# @param employee_uuids [Array<String>] A list of employee uuids to include on the payroll.
|
141
|
+
# @param check_date [String] Payment date.
|
142
|
+
# @param withholding_pay_period [Gusto::Payroll::PayrollCreateRequestWithholdingPayPeriod] The payment schedule tax rate the payroll is based on
|
143
|
+
# @param skip_regular_deductions [Boolean] Block regular deductions and contributions for this payroll.
|
144
|
+
# @param fixed_withholding_rate [Boolean] Enable taxes to be withheld at the IRS's required rate of 22% for federal income
|
145
|
+
# taxes. State income taxes will be taxed at the state's supplemental tax rate.
|
146
|
+
# Otherwise, we'll sum the entirety of the employee's wages and withhold taxes on
|
147
|
+
# the entire amount at the rate for regular wages.
|
148
|
+
# @param request_options [Gusto::RequestOptions]
|
149
|
+
# @return [Gusto::Payrolls::PayrollPrepared]
|
150
|
+
# @example
|
151
|
+
# api = Gusto::Client.new(
|
152
|
+
# base_url: "https://api.example.com",
|
153
|
+
# environment: Gusto::Environment::DEMO,
|
154
|
+
# token: "YOUR_AUTH_TOKEN"
|
155
|
+
# )
|
156
|
+
# api.payroll.create(
|
157
|
+
# company_id: "company_id",
|
158
|
+
# off_cycle: true,
|
159
|
+
# off_cycle_reason: BONUS,
|
160
|
+
# start_date: "start_date",
|
161
|
+
# end_date: "end_date"
|
162
|
+
# )
|
163
|
+
def create(company_id:, off_cycle:, off_cycle_reason:, start_date:, end_date:, pay_schedule_uuid: nil, employee_uuids: nil, check_date: nil, withholding_pay_period: nil, skip_regular_deductions: nil, fixed_withholding_rate: nil, request_options: nil)
|
164
|
+
response = @request_client.conn.post do | req |
|
165
|
+
unless request_options&.timeout_in_seconds.nil?
|
166
|
+
req.options.timeout = request_options.timeout_in_seconds
|
167
|
+
end
|
168
|
+
unless request_options&.token.nil?
|
169
|
+
req.headers["Authorization"] = request_options.token
|
170
|
+
end
|
171
|
+
unless request_options&.gusto_api_version.nil?
|
172
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
173
|
+
end
|
174
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
175
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
176
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
177
|
+
end
|
178
|
+
req.body = { **(request_options&.additional_body_parameters || {}), off_cycle: off_cycle, off_cycle_reason: off_cycle_reason, start_date: start_date, end_date: end_date, pay_schedule_uuid: pay_schedule_uuid, employee_uuids: employee_uuids, check_date: check_date, withholding_pay_period: withholding_pay_period, skip_regular_deductions: skip_regular_deductions, fixed_withholding_rate: fixed_withholding_rate }.compact
|
179
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls"
|
180
|
+
end
|
181
|
+
Gusto::Payrolls::PayrollPrepared.from_json(json_object: response.body)
|
182
|
+
end
|
183
|
+
# Returns all approved Payroll Reversals for a Company.
|
184
|
+
# scope: `payrolls:read`
|
185
|
+
#
|
186
|
+
# @param company_id [String] The UUID of the company
|
187
|
+
# @param page [Float] The page that is requested. When unspecified, will load all objects unless
|
188
|
+
# endpoint forces pagination.
|
189
|
+
# @param per [Float] Number of objects per page. For majority of endpoints will default to 25
|
190
|
+
# @param request_options [Gusto::RequestOptions]
|
191
|
+
# @return [Gusto::PayrollReversal]
|
192
|
+
# @example
|
193
|
+
# api = Gusto::Client.new(
|
194
|
+
# base_url: "https://api.example.com",
|
195
|
+
# environment: Gusto::Environment::DEMO,
|
196
|
+
# token: "YOUR_AUTH_TOKEN"
|
197
|
+
# )
|
198
|
+
# api.payroll.get_reversals(company_id: "company_id")
|
199
|
+
def get_reversals(company_id:, page: nil, per: nil, request_options: nil)
|
200
|
+
response = @request_client.conn.get do | req |
|
201
|
+
unless request_options&.timeout_in_seconds.nil?
|
202
|
+
req.options.timeout = request_options.timeout_in_seconds
|
203
|
+
end
|
204
|
+
unless request_options&.token.nil?
|
205
|
+
req.headers["Authorization"] = request_options.token
|
206
|
+
end
|
207
|
+
unless request_options&.gusto_api_version.nil?
|
208
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
209
|
+
end
|
210
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
211
|
+
req.params = { **(request_options&.additional_query_parameters || {}), "page": page, "per": per }.compact
|
212
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
213
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
214
|
+
end
|
215
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payroll_reversals"
|
216
|
+
end
|
217
|
+
Gusto::PayrollReversal.from_json(json_object: response.body)
|
218
|
+
end
|
219
|
+
# Returns a payroll. If payroll is calculated or processed, will return
|
220
|
+
# employee_compensations and totals.
|
221
|
+
# Notes:
|
222
|
+
# - Hour and dollar amounts are returned as string representations of numeric
|
223
|
+
# decimals.
|
224
|
+
# - Hours are represented to the thousands place; dollar amounts are represented
|
225
|
+
# to the cent.
|
226
|
+
# - Every eligible compensation is returned for each employee. If no data has yet
|
227
|
+
# be inserted for a given field, it defaults to “0.00” (for fixed amounts) or
|
228
|
+
# “0.000” (for hours ).
|
229
|
+
# - To return future payrolls, you must include an `end_date` in the future.
|
230
|
+
# - When include parameter with benefits value is passed, employee_benefits:read
|
231
|
+
# scope is required to return benefits
|
232
|
+
# - Benefits containing PHI are only visible with the
|
233
|
+
# `employee_benefits:read:phi` scope
|
234
|
+
# scope: `payrolls:read`
|
235
|
+
#
|
236
|
+
# @param company_id [String] The UUID of the company
|
237
|
+
# @param payroll_id [String] The UUID of the payroll
|
238
|
+
# @param include [Gusto::Payroll::PayrollGetRequestIncludeItem] Include the requested attribute in the response, for multiple attributes comma
|
239
|
+
# separate the values, i.e. `?include=benefits,deductions,taxes`
|
240
|
+
# @param request_options [Gusto::RequestOptions]
|
241
|
+
# @return [Gusto::Payrolls::Payroll]
|
242
|
+
# @example
|
243
|
+
# api = Gusto::Client.new(
|
244
|
+
# base_url: "https://api.example.com",
|
245
|
+
# environment: Gusto::Environment::DEMO,
|
246
|
+
# token: "YOUR_AUTH_TOKEN"
|
247
|
+
# )
|
248
|
+
# api.payroll.get(company_id: "company_id", payroll_id: "payroll_id")
|
249
|
+
def get(company_id:, payroll_id:, include: nil, request_options: nil)
|
250
|
+
response = @request_client.conn.get do | req |
|
251
|
+
unless request_options&.timeout_in_seconds.nil?
|
252
|
+
req.options.timeout = request_options.timeout_in_seconds
|
253
|
+
end
|
254
|
+
unless request_options&.token.nil?
|
255
|
+
req.headers["Authorization"] = request_options.token
|
256
|
+
end
|
257
|
+
unless request_options&.gusto_api_version.nil?
|
258
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
259
|
+
end
|
260
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
261
|
+
req.params = { **(request_options&.additional_query_parameters || {}), "include": include }.compact
|
262
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
263
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
264
|
+
end
|
265
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}"
|
266
|
+
end
|
267
|
+
Gusto::Payrolls::Payroll.from_json(json_object: response.body)
|
268
|
+
end
|
269
|
+
# This endpoint allows you to update information for one or more employees for a
|
270
|
+
# specific **unprocessed** payroll. You can think of the **unprocessed**
|
271
|
+
# payroll object as a template of fields that you can update. You cannot modify
|
272
|
+
# the structure of the payroll object through this endpoint, only values
|
273
|
+
# of the fields included in the payroll. If you do not include specific employee
|
274
|
+
# compensations or fixed/hourly compensations in your request body, they
|
275
|
+
# will not be removed from the payroll.
|
276
|
+
# scope: `payrolls:write`
|
277
|
+
#
|
278
|
+
# @param company_id [String] The UUID of the company
|
279
|
+
# @param payroll_id [String] The UUID of the payroll
|
280
|
+
# @param employee_compensations [Array<Hash>] Request of type Array<Gusto::Payroll::PayrollUpdateRequestEmployeeCompensationsItem>, as a Hash
|
281
|
+
# * :employee_uuid (String)
|
282
|
+
# * :version (String)
|
283
|
+
# * :excluded (Boolean)
|
284
|
+
# * :payment_method (Gusto::Payroll::PayrollUpdateRequestEmployeeCompensationsItemPaymentMethod)
|
285
|
+
# * :memo (String)
|
286
|
+
# * :fixed_compensations (Array<Gusto::Payroll::PayrollUpdateRequestEmployeeCompensationsItemFixedCompensationsItem>)
|
287
|
+
# * :hourly_compensations (Array<Gusto::Payroll::PayrollUpdateRequestEmployeeCompensationsItemHourlyCompensationsItem>)
|
288
|
+
# * :paid_time_off (Array<Gusto::Payroll::PayrollUpdateRequestEmployeeCompensationsItemPaidTimeOffItem>)
|
289
|
+
# @param request_options [Gusto::RequestOptions]
|
290
|
+
# @return [Gusto::Payrolls::PayrollPrepared]
|
291
|
+
# @example
|
292
|
+
# api = Gusto::Client.new(
|
293
|
+
# base_url: "https://api.example.com",
|
294
|
+
# environment: Gusto::Environment::DEMO,
|
295
|
+
# token: "YOUR_AUTH_TOKEN"
|
296
|
+
# )
|
297
|
+
# api.payroll.update(
|
298
|
+
# company_id: "company_id",
|
299
|
+
# payroll_id: "payroll_id",
|
300
|
+
# employee_compensations: [{ }]
|
301
|
+
# )
|
302
|
+
def update(company_id:, payroll_id:, employee_compensations:, request_options: nil)
|
303
|
+
response = @request_client.conn.put do | req |
|
304
|
+
unless request_options&.timeout_in_seconds.nil?
|
305
|
+
req.options.timeout = request_options.timeout_in_seconds
|
306
|
+
end
|
307
|
+
unless request_options&.token.nil?
|
308
|
+
req.headers["Authorization"] = request_options.token
|
309
|
+
end
|
310
|
+
unless request_options&.gusto_api_version.nil?
|
311
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
312
|
+
end
|
313
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
314
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
315
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
316
|
+
end
|
317
|
+
req.body = { **(request_options&.additional_body_parameters || {}), employee_compensations: employee_compensations }.compact
|
318
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}"
|
319
|
+
end
|
320
|
+
Gusto::Payrolls::PayrollPrepared.from_json(json_object: response.body)
|
321
|
+
end
|
322
|
+
# This endpoint allows you to delete an **unprocessed** payroll.
|
323
|
+
# By default the payroll and associated data is deleted synchronously. To request
|
324
|
+
# an asynchronous delete, use the `async=true` query parameter. In both cases
|
325
|
+
# validation of ability to delete will be performed and an Unprocessable Entity
|
326
|
+
# error will be returned if the payroll is not able to be deleted. A successful
|
327
|
+
# synchronous delete will return `204/No Content`. When a payroll has been
|
328
|
+
# enqueued for asynchronous deletion, `202/Accepted` will be returned.
|
329
|
+
# scope: `payrolls:run`
|
330
|
+
#
|
331
|
+
# @param company_id [String] The UUID of the company
|
332
|
+
# @param payroll_id [String] The UUID of the payroll
|
333
|
+
# @param async [Boolean] When true, request an asynchronous delete of the payroll.
|
334
|
+
# @param request_options [Gusto::RequestOptions]
|
335
|
+
# @return [Void]
|
336
|
+
# @example
|
337
|
+
# api = Gusto::Client.new(
|
338
|
+
# base_url: "https://api.example.com",
|
339
|
+
# environment: Gusto::Environment::DEMO,
|
340
|
+
# token: "YOUR_AUTH_TOKEN"
|
341
|
+
# )
|
342
|
+
# api.payroll.delete(company_id: "company_id", payroll_id: "payroll_id")
|
343
|
+
def delete(company_id:, payroll_id:, async: nil, request_options: nil)
|
344
|
+
response = @request_client.conn.delete do | req |
|
345
|
+
unless request_options&.timeout_in_seconds.nil?
|
346
|
+
req.options.timeout = request_options.timeout_in_seconds
|
347
|
+
end
|
348
|
+
unless request_options&.token.nil?
|
349
|
+
req.headers["Authorization"] = request_options.token
|
350
|
+
end
|
351
|
+
unless request_options&.gusto_api_version.nil?
|
352
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
353
|
+
end
|
354
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
355
|
+
req.params = { **(request_options&.additional_query_parameters || {}), "async": async }.compact
|
356
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
357
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
358
|
+
end
|
359
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}"
|
360
|
+
end
|
361
|
+
end
|
362
|
+
# This endpoint will build the payroll and get it ready for making updates. This
|
363
|
+
# includes adding/removing eligible employees from the Payroll and updating the
|
364
|
+
# check_date, payroll_deadline, and payroll_status_meta dates & times.
|
365
|
+
# Notes:
|
366
|
+
# - Will null out calculated_at & totals if a payroll has already been calculated.
|
367
|
+
# - Will return the version param used for updating the payroll
|
368
|
+
# scope: `payrolls:write`
|
369
|
+
#
|
370
|
+
# @param company_id [String] The UUID of the company
|
371
|
+
# @param payroll_id [String] The UUID of the payroll
|
372
|
+
# @param request_options [Gusto::RequestOptions]
|
373
|
+
# @return [Gusto::Payrolls::PayrollPrepared]
|
374
|
+
# @example
|
375
|
+
# api = Gusto::Client.new(
|
376
|
+
# base_url: "https://api.example.com",
|
377
|
+
# environment: Gusto::Environment::DEMO,
|
378
|
+
# token: "YOUR_AUTH_TOKEN"
|
379
|
+
# )
|
380
|
+
# api.payroll.prepare(company_id: "company_id", payroll_id: "payroll_id")
|
381
|
+
def prepare(company_id:, payroll_id:, request_options: nil)
|
382
|
+
response = @request_client.conn.put do | req |
|
383
|
+
unless request_options&.timeout_in_seconds.nil?
|
384
|
+
req.options.timeout = request_options.timeout_in_seconds
|
385
|
+
end
|
386
|
+
unless request_options&.token.nil?
|
387
|
+
req.headers["Authorization"] = request_options.token
|
388
|
+
end
|
389
|
+
unless request_options&.gusto_api_version.nil?
|
390
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
391
|
+
end
|
392
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
393
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
394
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
395
|
+
end
|
396
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
397
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
398
|
+
end
|
399
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}/prepare"
|
400
|
+
end
|
401
|
+
Gusto::Payrolls::PayrollPrepared.from_json(json_object: response.body)
|
402
|
+
end
|
403
|
+
# Returns a payroll receipt.
|
404
|
+
# Notes:
|
405
|
+
# - Hour and dollar amounts are returned as string representations of numeric
|
406
|
+
# decimals.
|
407
|
+
# - Dollar amounts are represented to the cent.
|
408
|
+
# - If no data has yet be inserted for a given field, it defaults to “0.00” (for
|
409
|
+
# fixed amounts).
|
410
|
+
# scope: `payrolls:read`
|
411
|
+
#
|
412
|
+
# @param payroll_uuid [String] The UUID of the payroll
|
413
|
+
# @param request_options [Gusto::RequestOptions]
|
414
|
+
# @return [Gusto::PayrollReceipt]
|
415
|
+
# @example
|
416
|
+
# api = Gusto::Client.new(
|
417
|
+
# base_url: "https://api.example.com",
|
418
|
+
# environment: Gusto::Environment::DEMO,
|
419
|
+
# token: "YOUR_AUTH_TOKEN"
|
420
|
+
# )
|
421
|
+
# api.payroll.get_receipt(payroll_uuid: "payroll_uuid")
|
422
|
+
def get_receipt(payroll_uuid:, request_options: nil)
|
423
|
+
response = @request_client.conn.get do | req |
|
424
|
+
unless request_options&.timeout_in_seconds.nil?
|
425
|
+
req.options.timeout = request_options.timeout_in_seconds
|
426
|
+
end
|
427
|
+
unless request_options&.token.nil?
|
428
|
+
req.headers["Authorization"] = request_options.token
|
429
|
+
end
|
430
|
+
unless request_options&.gusto_api_version.nil?
|
431
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
432
|
+
end
|
433
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
434
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
435
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
436
|
+
end
|
437
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
438
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
439
|
+
end
|
440
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/payrolls/#{payroll_uuid}/receipt"
|
441
|
+
end
|
442
|
+
Gusto::PayrollReceipt.from_json(json_object: response.body)
|
443
|
+
end
|
444
|
+
# Returns a list of reasons that prevent the company from running payrolls. See
|
445
|
+
# the [payroll blockers
|
446
|
+
# guide](https://docs.gusto.com/embedded-payroll/docs/payroll-blockers) for a
|
447
|
+
# complete list of reasons.
|
448
|
+
# The list is empty if there are no payroll blockers.
|
449
|
+
# scope: `payrolls:run`
|
450
|
+
#
|
451
|
+
# @param company_uuid [String] The UUID of the company
|
452
|
+
# @param request_options [Gusto::RequestOptions]
|
453
|
+
# @return [Array<Gusto::PayrollBlocker>]
|
454
|
+
# @example
|
455
|
+
# api = Gusto::Client.new(
|
456
|
+
# base_url: "https://api.example.com",
|
457
|
+
# environment: Gusto::Environment::DEMO,
|
458
|
+
# token: "YOUR_AUTH_TOKEN"
|
459
|
+
# )
|
460
|
+
# api.payroll.get_blockers(company_uuid: "company_uuid")
|
461
|
+
def get_blockers(company_uuid:, request_options: nil)
|
462
|
+
response = @request_client.conn.get do | req |
|
463
|
+
unless request_options&.timeout_in_seconds.nil?
|
464
|
+
req.options.timeout = request_options.timeout_in_seconds
|
465
|
+
end
|
466
|
+
unless request_options&.token.nil?
|
467
|
+
req.headers["Authorization"] = request_options.token
|
468
|
+
end
|
469
|
+
unless request_options&.gusto_api_version.nil?
|
470
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
471
|
+
end
|
472
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
473
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
474
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
475
|
+
end
|
476
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
477
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
478
|
+
end
|
479
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_uuid}/payrolls/blockers"
|
480
|
+
end
|
481
|
+
parsed_json = JSON.parse(response.body)
|
482
|
+
parsed_json&.map do | item |
|
483
|
+
item = item.to_json
|
484
|
+
Gusto::PayrollBlocker.from_json(json_object: item)
|
485
|
+
end
|
486
|
+
end
|
487
|
+
# Submits a $0 payroll for employees associated with the pay schedule to skip
|
488
|
+
# payroll. This submission is asynchronous and a successful request responds with
|
489
|
+
# a 202 HTTP status. Upon success, the payroll is transitioned to the `processed`
|
490
|
+
# state.
|
491
|
+
# If the company is blocked from running payroll due to issues like incomplete
|
492
|
+
# setup, missing information or other compliance issues, the response will be 422
|
493
|
+
# Unprocessable Entity with a categorization of the blockers as described in the
|
494
|
+
# error responses.
|
495
|
+
# scope: `payrolls:run`
|
496
|
+
#
|
497
|
+
# @param company_uuid [String] The UUID of the company
|
498
|
+
# @param payroll_type [Gusto::Payroll::PayrollSkipPayrollRequestPayrollType] Payroll type
|
499
|
+
# @param start_date [String] Pay period start date
|
500
|
+
# @param end_date [String] Pay period end date. If left empty, defaults to today's date.
|
501
|
+
# @param pay_schedule_uuid [String] The UUID of the pay schedule
|
502
|
+
# @param employee_uuids [Array<String>] An array of employees. This field is only applicable to new hire payroll and
|
503
|
+
# termination payroll
|
504
|
+
# @param request_options [Gusto::RequestOptions]
|
505
|
+
# @return [Void]
|
506
|
+
# @example
|
507
|
+
# api = Gusto::Client.new(
|
508
|
+
# base_url: "https://api.example.com",
|
509
|
+
# environment: Gusto::Environment::DEMO,
|
510
|
+
# token: "YOUR_AUTH_TOKEN"
|
511
|
+
# )
|
512
|
+
# api.payroll.skip_payroll(
|
513
|
+
# company_uuid: "company_uuid",
|
514
|
+
# payroll_type: REGULAR,
|
515
|
+
# start_date: "2023-05-26",
|
516
|
+
# end_date: "2023-06-25",
|
517
|
+
# pay_schedule_uuid: "85100524-4b42-4d2d-bd62-9d864f9aea64"
|
518
|
+
# )
|
519
|
+
def skip_payroll(company_uuid:, payroll_type:, start_date: nil, end_date: nil, pay_schedule_uuid: nil, employee_uuids: nil, request_options: nil)
|
520
|
+
response = @request_client.conn.post do | req |
|
521
|
+
unless request_options&.timeout_in_seconds.nil?
|
522
|
+
req.options.timeout = request_options.timeout_in_seconds
|
523
|
+
end
|
524
|
+
unless request_options&.token.nil?
|
525
|
+
req.headers["Authorization"] = request_options.token
|
526
|
+
end
|
527
|
+
unless request_options&.gusto_api_version.nil?
|
528
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
529
|
+
end
|
530
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
531
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
532
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
533
|
+
end
|
534
|
+
req.body = { **(request_options&.additional_body_parameters || {}), payroll_type: payroll_type, start_date: start_date, end_date: end_date, pay_schedule_uuid: pay_schedule_uuid, employee_uuids: employee_uuids }.compact
|
535
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_uuid}/payrolls/skip"
|
536
|
+
end
|
537
|
+
end
|
538
|
+
# Calculates gross up earnings for an employee's payroll, given net earnings. This
|
539
|
+
# endpoint is only applicable to off-cycle unprocessed payrolls.
|
540
|
+
# The gross up amount must then be mapped to the corresponding fixed compensation
|
541
|
+
# earning type to get the correct payroll amount. For example, for bonus
|
542
|
+
# off-cycles, the gross up amount should be set with the Bonus earning type in the
|
543
|
+
# payroll `fixed_compensations` field.
|
544
|
+
# scope: `payrolls:run`
|
545
|
+
#
|
546
|
+
# @param payroll_uuid [String] The UUID of the payroll
|
547
|
+
# @param employee_uuid [String] Employee UUID
|
548
|
+
# @param net_pay [String] Employee net earnings
|
549
|
+
# @param request_options [Gusto::RequestOptions]
|
550
|
+
# @return [Gusto::GrossUpPay]
|
551
|
+
# @example
|
552
|
+
# api = Gusto::Client.new(
|
553
|
+
# base_url: "https://api.example.com",
|
554
|
+
# environment: Gusto::Environment::DEMO,
|
555
|
+
# token: "YOUR_AUTH_TOKEN"
|
556
|
+
# )
|
557
|
+
# api.payroll.gross_up(
|
558
|
+
# payroll_uuid: "payroll_uuid",
|
559
|
+
# employee_uuid: "be48c41e-142d-4116-9430-5aba2313fac7",
|
560
|
+
# net_pay: "1000.00"
|
561
|
+
# )
|
562
|
+
def gross_up(payroll_uuid:, employee_uuid:, net_pay:, request_options: nil)
|
563
|
+
response = @request_client.conn.post do | req |
|
564
|
+
unless request_options&.timeout_in_seconds.nil?
|
565
|
+
req.options.timeout = request_options.timeout_in_seconds
|
566
|
+
end
|
567
|
+
unless request_options&.token.nil?
|
568
|
+
req.headers["Authorization"] = request_options.token
|
569
|
+
end
|
570
|
+
unless request_options&.gusto_api_version.nil?
|
571
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
572
|
+
end
|
573
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
574
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
575
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
576
|
+
end
|
577
|
+
req.body = { **(request_options&.additional_body_parameters || {}), employee_uuid: employee_uuid, net_pay: net_pay }.compact
|
578
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/payrolls/#{payroll_uuid}/gross_up"
|
579
|
+
end
|
580
|
+
Gusto::GrossUpPay.from_json(json_object: response.body)
|
581
|
+
end
|
582
|
+
# Performs calculations for taxes, benefits, and deductions for an unprocessed
|
583
|
+
# payroll. The calculated payroll details provide a preview of the actual values
|
584
|
+
# that will be used when the payroll is run.
|
585
|
+
# This calculation is asynchronous and a successful request responds with a 202
|
586
|
+
# HTTP status. To view the details of the calculated payroll, use the GET
|
587
|
+
# /v1/companies/{company_id}/payrolls/{payroll_id} endpoint with
|
588
|
+
# _include=taxes,benefits,deductions_ params.
|
589
|
+
# In v2023-04-01, _show_calculation=true_ is no longer required.
|
590
|
+
# If the company is blocked from running payroll due to issues like incomplete
|
591
|
+
# setup, missing information or other compliance issues, the response will be 422
|
592
|
+
# Unprocessable Entity with a categorization of the blockers as described in the
|
593
|
+
# error responses.
|
594
|
+
#
|
595
|
+
# @param company_id [String] The UUID of the company
|
596
|
+
# @param payroll_id [String] The UUID of the payroll
|
597
|
+
# @param request_options [Gusto::RequestOptions]
|
598
|
+
# @return [Void]
|
599
|
+
# @example
|
600
|
+
# api = Gusto::Client.new(
|
601
|
+
# base_url: "https://api.example.com",
|
602
|
+
# environment: Gusto::Environment::DEMO,
|
603
|
+
# token: "YOUR_AUTH_TOKEN"
|
604
|
+
# )
|
605
|
+
# api.payroll.calculate(company_id: "company_id", payroll_id: "payroll_id")
|
606
|
+
def calculate(company_id:, payroll_id:, request_options: nil)
|
607
|
+
response = @request_client.conn.put do | req |
|
608
|
+
unless request_options&.timeout_in_seconds.nil?
|
609
|
+
req.options.timeout = request_options.timeout_in_seconds
|
610
|
+
end
|
611
|
+
unless request_options&.token.nil?
|
612
|
+
req.headers["Authorization"] = request_options.token
|
613
|
+
end
|
614
|
+
unless request_options&.gusto_api_version.nil?
|
615
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
616
|
+
end
|
617
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
618
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
619
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
620
|
+
end
|
621
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
622
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
623
|
+
end
|
624
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}/calculate"
|
625
|
+
end
|
626
|
+
end
|
627
|
+
# Submits an unprocessed payroll to be calculated and run. This submission is
|
628
|
+
# asynchronous and a successful request responds with a 202 HTTP status. Upon
|
629
|
+
# success, transitions the payroll to the `processed` state.
|
630
|
+
# You should poll to ensure that payroll is processed successfully, as async
|
631
|
+
# errors only occur after async processing is complete.
|
632
|
+
# If the company is blocked from running payroll due to issues like incomplete
|
633
|
+
# setup, missing information or other compliance issues, the response will be 422
|
634
|
+
# Unprocessable Entity with a categorization of the blockers as described in the
|
635
|
+
# error responses.
|
636
|
+
# scope: `payrolls:run`
|
637
|
+
#
|
638
|
+
# @param company_id [String] The UUID of the company
|
639
|
+
# @param payroll_id [String] The UUID of the payroll
|
640
|
+
# @param submission_blockers [Array<Hash>] An array of submission_blockers, each with a selected unblock option.Request of type Array<Gusto::Payroll::PayrollSubmitRequestSubmissionBlockersItem>, as a Hash
|
641
|
+
# * :blocker_type (String)
|
642
|
+
# * :selected_option (String)
|
643
|
+
# @param request_options [Gusto::RequestOptions]
|
644
|
+
# @return [Void]
|
645
|
+
# @example
|
646
|
+
# api = Gusto::Client.new(
|
647
|
+
# base_url: "https://api.example.com",
|
648
|
+
# environment: Gusto::Environment::DEMO,
|
649
|
+
# token: "YOUR_AUTH_TOKEN"
|
650
|
+
# )
|
651
|
+
# api.payroll.submit(company_id: "company_id", payroll_id: "payroll_id")
|
652
|
+
def submit(company_id:, payroll_id:, submission_blockers: nil, request_options: nil)
|
653
|
+
response = @request_client.conn.put do | req |
|
654
|
+
unless request_options&.timeout_in_seconds.nil?
|
655
|
+
req.options.timeout = request_options.timeout_in_seconds
|
656
|
+
end
|
657
|
+
unless request_options&.token.nil?
|
658
|
+
req.headers["Authorization"] = request_options.token
|
659
|
+
end
|
660
|
+
unless request_options&.gusto_api_version.nil?
|
661
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
662
|
+
end
|
663
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
664
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
665
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
666
|
+
end
|
667
|
+
req.body = { **(request_options&.additional_body_parameters || {}), submission_blockers: submission_blockers }.compact
|
668
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}/submit"
|
669
|
+
end
|
670
|
+
end
|
671
|
+
# Transitions a `processed` payroll back to the `unprocessed` state. A payroll can
|
672
|
+
# be canceled if it meets both criteria:
|
673
|
+
# - `processed` is true
|
674
|
+
# - Current time is earlier than 3:30pm PT on the payroll_deadline
|
675
|
+
# scope: `payrolls:run`
|
676
|
+
#
|
677
|
+
# @param company_id [String] The UUID of the company
|
678
|
+
# @param payroll_id [String] The UUID of the payroll
|
679
|
+
# @param request_options [Gusto::RequestOptions]
|
680
|
+
# @return [Gusto::Payrolls::Payroll]
|
681
|
+
# @example
|
682
|
+
# api = Gusto::Client.new(
|
683
|
+
# base_url: "https://api.example.com",
|
684
|
+
# environment: Gusto::Environment::DEMO,
|
685
|
+
# token: "YOUR_AUTH_TOKEN"
|
686
|
+
# )
|
687
|
+
# api.payroll.cancel(company_id: "company_id", payroll_id: "payroll_id")
|
688
|
+
def cancel(company_id:, payroll_id:, request_options: nil)
|
689
|
+
response = @request_client.conn.put do | req |
|
690
|
+
unless request_options&.timeout_in_seconds.nil?
|
691
|
+
req.options.timeout = request_options.timeout_in_seconds
|
692
|
+
end
|
693
|
+
unless request_options&.token.nil?
|
694
|
+
req.headers["Authorization"] = request_options.token
|
695
|
+
end
|
696
|
+
unless request_options&.gusto_api_version.nil?
|
697
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
698
|
+
end
|
699
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
700
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
701
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
702
|
+
end
|
703
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
704
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
705
|
+
end
|
706
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}/cancel"
|
707
|
+
end
|
708
|
+
Gusto::Payrolls::Payroll.from_json(json_object: response.body)
|
709
|
+
end
|
710
|
+
# Get an employee's pay stub for the specified payroll. By default, an
|
711
|
+
# application/pdf response will be returned. No other content types are currently
|
712
|
+
# supported, but may be supported in the future.
|
713
|
+
# scope: `pay_stubs:read`
|
714
|
+
#
|
715
|
+
# @param payroll_id [String] The UUID of the payroll
|
716
|
+
# @param employee_id [String] The UUID of the employee
|
717
|
+
# @param request_options [Gusto::RequestOptions]
|
718
|
+
# @return [Void]
|
719
|
+
# @example
|
720
|
+
# api = Gusto::Client.new(
|
721
|
+
# base_url: "https://api.example.com",
|
722
|
+
# environment: Gusto::Environment::DEMO,
|
723
|
+
# token: "YOUR_AUTH_TOKEN"
|
724
|
+
# )
|
725
|
+
# api.payroll.get_pay_stub(payroll_id: "payroll_id", employee_id: "employee_id")
|
726
|
+
def get_pay_stub(payroll_id:, employee_id:, request_options: nil)
|
727
|
+
response = @request_client.conn.get do | req |
|
728
|
+
unless request_options&.timeout_in_seconds.nil?
|
729
|
+
req.options.timeout = request_options.timeout_in_seconds
|
730
|
+
end
|
731
|
+
unless request_options&.token.nil?
|
732
|
+
req.headers["Authorization"] = request_options.token
|
733
|
+
end
|
734
|
+
unless request_options&.gusto_api_version.nil?
|
735
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
736
|
+
end
|
737
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
738
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
739
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
740
|
+
end
|
741
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
742
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
743
|
+
end
|
744
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/payrolls/#{payroll_id}/employees/#{employee_id}/pay_stub"
|
745
|
+
end
|
746
|
+
end
|
747
|
+
# Get an employee's pay stubs
|
748
|
+
# scope: `pay_stubs:read`
|
749
|
+
#
|
750
|
+
# @param employee_id [String] The UUID of the employee
|
751
|
+
# @param request_options [Gusto::RequestOptions]
|
752
|
+
# @return [Array<Gusto::Payrolls::EmployeePayStub>]
|
753
|
+
# @example
|
754
|
+
# api = Gusto::Client.new(
|
755
|
+
# base_url: "https://api.example.com",
|
756
|
+
# environment: Gusto::Environment::DEMO,
|
757
|
+
# token: "YOUR_AUTH_TOKEN"
|
758
|
+
# )
|
759
|
+
# api.payroll.list_pay_stubs(employee_id: "employee_id")
|
760
|
+
def list_pay_stubs(employee_id:, request_options: nil)
|
761
|
+
response = @request_client.conn.get do | req |
|
762
|
+
unless request_options&.timeout_in_seconds.nil?
|
763
|
+
req.options.timeout = request_options.timeout_in_seconds
|
764
|
+
end
|
765
|
+
unless request_options&.token.nil?
|
766
|
+
req.headers["Authorization"] = request_options.token
|
767
|
+
end
|
768
|
+
unless request_options&.gusto_api_version.nil?
|
769
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
770
|
+
end
|
771
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
772
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
773
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
774
|
+
end
|
775
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
776
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
777
|
+
end
|
778
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/employees/#{employee_id}/pay_stubs"
|
779
|
+
end
|
780
|
+
parsed_json = JSON.parse(response.body)
|
781
|
+
parsed_json&.map do | item |
|
782
|
+
item = item.to_json
|
783
|
+
Gusto::Payrolls::EmployeePayStub.from_json(json_object: item)
|
784
|
+
end
|
785
|
+
end
|
786
|
+
# This endpoint initiates the generation of employee checks for the payroll
|
787
|
+
# specified by payroll_id. A generation status and corresponding generated
|
788
|
+
# document request_uuid will be returned. Use the generated document GET endpoint
|
789
|
+
# with document_type: `printable_payroll_checks` and request_uuid to poll the
|
790
|
+
# check generation process and retrieve the generated check URL upon completion.
|
791
|
+
# scope: `generated_documents:write`
|
792
|
+
#
|
793
|
+
# @param payroll_id [String] The UUID of the payroll
|
794
|
+
# @param printing_format [String] The type of check stock being printed. Check this
|
795
|
+
# [link](https://support.gusto.com/article/999877761000000/Pay-your-team-by-check)
|
796
|
+
# for more info on check types
|
797
|
+
# @param starting_check_number [Integer] The starting check number for the checks being generated
|
798
|
+
# @param request_options [Gusto::RequestOptions]
|
799
|
+
# @return [Gusto::PayrollCheck]
|
800
|
+
# @example
|
801
|
+
# api = Gusto::Client.new(
|
802
|
+
# base_url: "https://api.example.com",
|
803
|
+
# environment: Gusto::Environment::DEMO,
|
804
|
+
# token: "YOUR_AUTH_TOKEN"
|
805
|
+
# )
|
806
|
+
# api.payroll.generate_printable_checks(payroll_id: "payroll_id", printing_format: "printing_format")
|
807
|
+
def generate_printable_checks(payroll_id:, printing_format:, starting_check_number: nil, request_options: nil)
|
808
|
+
response = @request_client.conn.post do | req |
|
809
|
+
unless request_options&.timeout_in_seconds.nil?
|
810
|
+
req.options.timeout = request_options.timeout_in_seconds
|
811
|
+
end
|
812
|
+
unless request_options&.token.nil?
|
813
|
+
req.headers["Authorization"] = request_options.token
|
814
|
+
end
|
815
|
+
unless request_options&.gusto_api_version.nil?
|
816
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
817
|
+
end
|
818
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
819
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
820
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
821
|
+
end
|
822
|
+
req.body = { **(request_options&.additional_body_parameters || {}), printing_format: printing_format, starting_check_number: starting_check_number }.compact
|
823
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/payrolls/#{payroll_id}/generated_documents/printable_payroll_checks"
|
824
|
+
end
|
825
|
+
Gusto::PayrollCheck.from_json(json_object: response.body)
|
826
|
+
end
|
827
|
+
end
|
828
|
+
class AsyncPayrollClient
|
829
|
+
# @return [Gusto::AsyncRequestClient]
|
830
|
+
attr_reader :request_client
|
831
|
+
# @return [Gusto::Payroll::ExternalPayrollsClient]
|
832
|
+
attr_reader :external_payrolls
|
833
|
+
# @return [Gusto::Payroll::PaySchedulesClient]
|
834
|
+
attr_reader :pay_schedules
|
835
|
+
# @return [Gusto::Payroll::EarningTypesClient]
|
836
|
+
attr_reader :earning_types
|
837
|
+
|
838
|
+
|
839
|
+
# @param request_client [Gusto::RequestClient]
|
840
|
+
# @return [Gusto::AsyncPayrollClient]
|
841
|
+
def initialize(request_client:)
|
842
|
+
@request_client = request_client
|
843
|
+
@external_payrolls = Gusto::Payroll::AsyncExternalPayrollsClient.new(request_client: request_client)
|
844
|
+
@pay_schedules = Gusto::Payroll::AsyncPaySchedulesClient.new(request_client: request_client)
|
845
|
+
@earning_types = Gusto::Payroll::AsyncEarningTypesClient.new(request_client: request_client)
|
846
|
+
end
|
847
|
+
# Returns a list of payrolls for a company. You can change the payrolls returned
|
848
|
+
# by updating the processing_status, payroll_types, start_date, & end_date params.
|
849
|
+
# By default, will return processed, regular payrolls for the past 6 months.
|
850
|
+
# Notes:
|
851
|
+
# - Dollar amounts are returned as string representations of numeric decimals, are
|
852
|
+
# represented to the cent.
|
853
|
+
# - end_date can be at most 3 months in the future and start_date and end_date
|
854
|
+
# can't be more than 1 year apart.
|
855
|
+
# scope: `payrolls:read`
|
856
|
+
#
|
857
|
+
# @param company_id [String] The UUID of the company
|
858
|
+
# @param processing_statuses [Gusto::Payroll::PayrollListRequestProcessingStatusesItem] Whether to include processed and/or unprocessed payrolls in the response,
|
859
|
+
# defaults to processed, for multiple attributes comma separate the values, i.e.
|
860
|
+
# `?processing_statuses=processed,unprocessed`
|
861
|
+
# @param payroll_types [Gusto::Payroll::PayrollListRequestPayrollTypesItem] Whether to include regular and/or off_cycle payrolls in the response, defaults
|
862
|
+
# to regular, for multiple attributes comma separate the values, i.e.
|
863
|
+
# `?payroll_types=regular,off_cycle`
|
864
|
+
# @param include [Gusto::Payroll::PayrollListRequestIncludeItem] Include the requested attribute in the response. The risk_blockers option will
|
865
|
+
# include submission_blockers and credit_blockers if applicable. In v2023-04-01
|
866
|
+
# totals are no longer included by default. For multiple attributes comma separate
|
867
|
+
# the values, i.e. `?include=totals,payroll_status_meta`
|
868
|
+
# @param start_date [String] Return payrolls whose pay period is after the start date
|
869
|
+
# @param end_date [String] Return payrolls whose pay period is before the end date. If left empty, defaults
|
870
|
+
# to today's date.
|
871
|
+
# @param sort_order [Gusto::Payroll::PayrollListRequestSortOrder] A string indicating whether to sort resulting events in ascending (asc) or
|
872
|
+
# descending (desc) chronological order. Events are sorted by their `timestamp`.
|
873
|
+
# Defaults to asc if left empty.
|
874
|
+
# @param request_options [Gusto::RequestOptions]
|
875
|
+
# @return [Array<Gusto::Payrolls::PayrollMinimal>]
|
876
|
+
# @example
|
877
|
+
# api = Gusto::Client.new(
|
878
|
+
# base_url: "https://api.example.com",
|
879
|
+
# environment: Gusto::Environment::DEMO,
|
880
|
+
# token: "YOUR_AUTH_TOKEN"
|
881
|
+
# )
|
882
|
+
# api.payroll.list(company_id: "company_id")
|
883
|
+
def list(company_id:, processing_statuses: nil, payroll_types: nil, include: nil, start_date: nil, end_date: nil, sort_order: nil, request_options: nil)
|
884
|
+
Async do
|
885
|
+
response = @request_client.conn.get do | req |
|
886
|
+
unless request_options&.timeout_in_seconds.nil?
|
887
|
+
req.options.timeout = request_options.timeout_in_seconds
|
888
|
+
end
|
889
|
+
unless request_options&.token.nil?
|
890
|
+
req.headers["Authorization"] = request_options.token
|
891
|
+
end
|
892
|
+
unless request_options&.gusto_api_version.nil?
|
893
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
894
|
+
end
|
895
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
896
|
+
req.params = { **(request_options&.additional_query_parameters || {}), "processing_statuses": processing_statuses, "payroll_types": payroll_types, "include": include, "start_date": start_date, "end_date": end_date, "sort_order": sort_order }.compact
|
897
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
898
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
899
|
+
end
|
900
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls"
|
901
|
+
end
|
902
|
+
parsed_json = JSON.parse(response.body)
|
903
|
+
parsed_json&.map do | item |
|
904
|
+
item = item.to_json
|
905
|
+
Gusto::Payrolls::PayrollMinimal.from_json(json_object: item)
|
906
|
+
end
|
907
|
+
end
|
908
|
+
end
|
909
|
+
# Creates a new, unprocessed, off-cycle payroll.
|
910
|
+
# ## `off_cycle_reason`
|
911
|
+
# - External benefits and deductions will be included when the `off_cycle_reason`
|
912
|
+
# is set to `Correction`.
|
913
|
+
# - All benefits and deductions are blocked when the `off_cycle_reason` is set to
|
914
|
+
# `Bonus`.
|
915
|
+
# scope: `payrolls:run`
|
916
|
+
#
|
917
|
+
# @param company_id [String] The UUID of the company
|
918
|
+
# @param off_cycle [Boolean] Whether it is an off cycle payroll.
|
919
|
+
# @param off_cycle_reason [Gusto::Payroll::PayrollCreateRequestOffCycleReason] An off cycle payroll reason. Select one from the following list.
|
920
|
+
# @param start_date [String] Pay period start date.
|
921
|
+
# @param end_date [String] Pay period end date. If left empty, defaults to today's date.
|
922
|
+
# @param pay_schedule_uuid [String] A pay schedule is required for Transition from old pay schedule payroll to
|
923
|
+
# identify the matching transition pay period.
|
924
|
+
# @param employee_uuids [Array<String>] A list of employee uuids to include on the payroll.
|
925
|
+
# @param check_date [String] Payment date.
|
926
|
+
# @param withholding_pay_period [Gusto::Payroll::PayrollCreateRequestWithholdingPayPeriod] The payment schedule tax rate the payroll is based on
|
927
|
+
# @param skip_regular_deductions [Boolean] Block regular deductions and contributions for this payroll.
|
928
|
+
# @param fixed_withholding_rate [Boolean] Enable taxes to be withheld at the IRS's required rate of 22% for federal income
|
929
|
+
# taxes. State income taxes will be taxed at the state's supplemental tax rate.
|
930
|
+
# Otherwise, we'll sum the entirety of the employee's wages and withhold taxes on
|
931
|
+
# the entire amount at the rate for regular wages.
|
932
|
+
# @param request_options [Gusto::RequestOptions]
|
933
|
+
# @return [Gusto::Payrolls::PayrollPrepared]
|
934
|
+
# @example
|
935
|
+
# api = Gusto::Client.new(
|
936
|
+
# base_url: "https://api.example.com",
|
937
|
+
# environment: Gusto::Environment::DEMO,
|
938
|
+
# token: "YOUR_AUTH_TOKEN"
|
939
|
+
# )
|
940
|
+
# api.payroll.create(
|
941
|
+
# company_id: "company_id",
|
942
|
+
# off_cycle: true,
|
943
|
+
# off_cycle_reason: BONUS,
|
944
|
+
# start_date: "start_date",
|
945
|
+
# end_date: "end_date"
|
946
|
+
# )
|
947
|
+
def create(company_id:, off_cycle:, off_cycle_reason:, start_date:, end_date:, pay_schedule_uuid: nil, employee_uuids: nil, check_date: nil, withholding_pay_period: nil, skip_regular_deductions: nil, fixed_withholding_rate: nil, request_options: nil)
|
948
|
+
Async do
|
949
|
+
response = @request_client.conn.post do | req |
|
950
|
+
unless request_options&.timeout_in_seconds.nil?
|
951
|
+
req.options.timeout = request_options.timeout_in_seconds
|
952
|
+
end
|
953
|
+
unless request_options&.token.nil?
|
954
|
+
req.headers["Authorization"] = request_options.token
|
955
|
+
end
|
956
|
+
unless request_options&.gusto_api_version.nil?
|
957
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
958
|
+
end
|
959
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
960
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
961
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
962
|
+
end
|
963
|
+
req.body = { **(request_options&.additional_body_parameters || {}), off_cycle: off_cycle, off_cycle_reason: off_cycle_reason, start_date: start_date, end_date: end_date, pay_schedule_uuid: pay_schedule_uuid, employee_uuids: employee_uuids, check_date: check_date, withholding_pay_period: withholding_pay_period, skip_regular_deductions: skip_regular_deductions, fixed_withholding_rate: fixed_withholding_rate }.compact
|
964
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls"
|
965
|
+
end
|
966
|
+
Gusto::Payrolls::PayrollPrepared.from_json(json_object: response.body)
|
967
|
+
end
|
968
|
+
end
|
969
|
+
# Returns all approved Payroll Reversals for a Company.
|
970
|
+
# scope: `payrolls:read`
|
971
|
+
#
|
972
|
+
# @param company_id [String] The UUID of the company
|
973
|
+
# @param page [Float] The page that is requested. When unspecified, will load all objects unless
|
974
|
+
# endpoint forces pagination.
|
975
|
+
# @param per [Float] Number of objects per page. For majority of endpoints will default to 25
|
976
|
+
# @param request_options [Gusto::RequestOptions]
|
977
|
+
# @return [Gusto::PayrollReversal]
|
978
|
+
# @example
|
979
|
+
# api = Gusto::Client.new(
|
980
|
+
# base_url: "https://api.example.com",
|
981
|
+
# environment: Gusto::Environment::DEMO,
|
982
|
+
# token: "YOUR_AUTH_TOKEN"
|
983
|
+
# )
|
984
|
+
# api.payroll.get_reversals(company_id: "company_id")
|
985
|
+
def get_reversals(company_id:, page: nil, per: nil, request_options: nil)
|
986
|
+
Async do
|
987
|
+
response = @request_client.conn.get do | req |
|
988
|
+
unless request_options&.timeout_in_seconds.nil?
|
989
|
+
req.options.timeout = request_options.timeout_in_seconds
|
990
|
+
end
|
991
|
+
unless request_options&.token.nil?
|
992
|
+
req.headers["Authorization"] = request_options.token
|
993
|
+
end
|
994
|
+
unless request_options&.gusto_api_version.nil?
|
995
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
996
|
+
end
|
997
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
998
|
+
req.params = { **(request_options&.additional_query_parameters || {}), "page": page, "per": per }.compact
|
999
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
1000
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
1001
|
+
end
|
1002
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payroll_reversals"
|
1003
|
+
end
|
1004
|
+
Gusto::PayrollReversal.from_json(json_object: response.body)
|
1005
|
+
end
|
1006
|
+
end
|
1007
|
+
# Returns a payroll. If payroll is calculated or processed, will return
|
1008
|
+
# employee_compensations and totals.
|
1009
|
+
# Notes:
|
1010
|
+
# - Hour and dollar amounts are returned as string representations of numeric
|
1011
|
+
# decimals.
|
1012
|
+
# - Hours are represented to the thousands place; dollar amounts are represented
|
1013
|
+
# to the cent.
|
1014
|
+
# - Every eligible compensation is returned for each employee. If no data has yet
|
1015
|
+
# be inserted for a given field, it defaults to “0.00” (for fixed amounts) or
|
1016
|
+
# “0.000” (for hours ).
|
1017
|
+
# - To return future payrolls, you must include an `end_date` in the future.
|
1018
|
+
# - When include parameter with benefits value is passed, employee_benefits:read
|
1019
|
+
# scope is required to return benefits
|
1020
|
+
# - Benefits containing PHI are only visible with the
|
1021
|
+
# `employee_benefits:read:phi` scope
|
1022
|
+
# scope: `payrolls:read`
|
1023
|
+
#
|
1024
|
+
# @param company_id [String] The UUID of the company
|
1025
|
+
# @param payroll_id [String] The UUID of the payroll
|
1026
|
+
# @param include [Gusto::Payroll::PayrollGetRequestIncludeItem] Include the requested attribute in the response, for multiple attributes comma
|
1027
|
+
# separate the values, i.e. `?include=benefits,deductions,taxes`
|
1028
|
+
# @param request_options [Gusto::RequestOptions]
|
1029
|
+
# @return [Gusto::Payrolls::Payroll]
|
1030
|
+
# @example
|
1031
|
+
# api = Gusto::Client.new(
|
1032
|
+
# base_url: "https://api.example.com",
|
1033
|
+
# environment: Gusto::Environment::DEMO,
|
1034
|
+
# token: "YOUR_AUTH_TOKEN"
|
1035
|
+
# )
|
1036
|
+
# api.payroll.get(company_id: "company_id", payroll_id: "payroll_id")
|
1037
|
+
def get(company_id:, payroll_id:, include: nil, request_options: nil)
|
1038
|
+
Async do
|
1039
|
+
response = @request_client.conn.get do | req |
|
1040
|
+
unless request_options&.timeout_in_seconds.nil?
|
1041
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1042
|
+
end
|
1043
|
+
unless request_options&.token.nil?
|
1044
|
+
req.headers["Authorization"] = request_options.token
|
1045
|
+
end
|
1046
|
+
unless request_options&.gusto_api_version.nil?
|
1047
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1048
|
+
end
|
1049
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1050
|
+
req.params = { **(request_options&.additional_query_parameters || {}), "include": include }.compact
|
1051
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
1052
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
1053
|
+
end
|
1054
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}"
|
1055
|
+
end
|
1056
|
+
Gusto::Payrolls::Payroll.from_json(json_object: response.body)
|
1057
|
+
end
|
1058
|
+
end
|
1059
|
+
# This endpoint allows you to update information for one or more employees for a
|
1060
|
+
# specific **unprocessed** payroll. You can think of the **unprocessed**
|
1061
|
+
# payroll object as a template of fields that you can update. You cannot modify
|
1062
|
+
# the structure of the payroll object through this endpoint, only values
|
1063
|
+
# of the fields included in the payroll. If you do not include specific employee
|
1064
|
+
# compensations or fixed/hourly compensations in your request body, they
|
1065
|
+
# will not be removed from the payroll.
|
1066
|
+
# scope: `payrolls:write`
|
1067
|
+
#
|
1068
|
+
# @param company_id [String] The UUID of the company
|
1069
|
+
# @param payroll_id [String] The UUID of the payroll
|
1070
|
+
# @param employee_compensations [Array<Hash>] Request of type Array<Gusto::Payroll::PayrollUpdateRequestEmployeeCompensationsItem>, as a Hash
|
1071
|
+
# * :employee_uuid (String)
|
1072
|
+
# * :version (String)
|
1073
|
+
# * :excluded (Boolean)
|
1074
|
+
# * :payment_method (Gusto::Payroll::PayrollUpdateRequestEmployeeCompensationsItemPaymentMethod)
|
1075
|
+
# * :memo (String)
|
1076
|
+
# * :fixed_compensations (Array<Gusto::Payroll::PayrollUpdateRequestEmployeeCompensationsItemFixedCompensationsItem>)
|
1077
|
+
# * :hourly_compensations (Array<Gusto::Payroll::PayrollUpdateRequestEmployeeCompensationsItemHourlyCompensationsItem>)
|
1078
|
+
# * :paid_time_off (Array<Gusto::Payroll::PayrollUpdateRequestEmployeeCompensationsItemPaidTimeOffItem>)
|
1079
|
+
# @param request_options [Gusto::RequestOptions]
|
1080
|
+
# @return [Gusto::Payrolls::PayrollPrepared]
|
1081
|
+
# @example
|
1082
|
+
# api = Gusto::Client.new(
|
1083
|
+
# base_url: "https://api.example.com",
|
1084
|
+
# environment: Gusto::Environment::DEMO,
|
1085
|
+
# token: "YOUR_AUTH_TOKEN"
|
1086
|
+
# )
|
1087
|
+
# api.payroll.update(
|
1088
|
+
# company_id: "company_id",
|
1089
|
+
# payroll_id: "payroll_id",
|
1090
|
+
# employee_compensations: [{ }]
|
1091
|
+
# )
|
1092
|
+
def update(company_id:, payroll_id:, employee_compensations:, request_options: nil)
|
1093
|
+
Async do
|
1094
|
+
response = @request_client.conn.put do | req |
|
1095
|
+
unless request_options&.timeout_in_seconds.nil?
|
1096
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1097
|
+
end
|
1098
|
+
unless request_options&.token.nil?
|
1099
|
+
req.headers["Authorization"] = request_options.token
|
1100
|
+
end
|
1101
|
+
unless request_options&.gusto_api_version.nil?
|
1102
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1103
|
+
end
|
1104
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1105
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1106
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1107
|
+
end
|
1108
|
+
req.body = { **(request_options&.additional_body_parameters || {}), employee_compensations: employee_compensations }.compact
|
1109
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}"
|
1110
|
+
end
|
1111
|
+
Gusto::Payrolls::PayrollPrepared.from_json(json_object: response.body)
|
1112
|
+
end
|
1113
|
+
end
|
1114
|
+
# This endpoint allows you to delete an **unprocessed** payroll.
|
1115
|
+
# By default the payroll and associated data is deleted synchronously. To request
|
1116
|
+
# an asynchronous delete, use the `async=true` query parameter. In both cases
|
1117
|
+
# validation of ability to delete will be performed and an Unprocessable Entity
|
1118
|
+
# error will be returned if the payroll is not able to be deleted. A successful
|
1119
|
+
# synchronous delete will return `204/No Content`. When a payroll has been
|
1120
|
+
# enqueued for asynchronous deletion, `202/Accepted` will be returned.
|
1121
|
+
# scope: `payrolls:run`
|
1122
|
+
#
|
1123
|
+
# @param company_id [String] The UUID of the company
|
1124
|
+
# @param payroll_id [String] The UUID of the payroll
|
1125
|
+
# @param async [Boolean] When true, request an asynchronous delete of the payroll.
|
1126
|
+
# @param request_options [Gusto::RequestOptions]
|
1127
|
+
# @return [Void]
|
1128
|
+
# @example
|
1129
|
+
# api = Gusto::Client.new(
|
1130
|
+
# base_url: "https://api.example.com",
|
1131
|
+
# environment: Gusto::Environment::DEMO,
|
1132
|
+
# token: "YOUR_AUTH_TOKEN"
|
1133
|
+
# )
|
1134
|
+
# api.payroll.delete(company_id: "company_id", payroll_id: "payroll_id")
|
1135
|
+
def delete(company_id:, payroll_id:, async: nil, request_options: nil)
|
1136
|
+
Async do
|
1137
|
+
response = @request_client.conn.delete do | req |
|
1138
|
+
unless request_options&.timeout_in_seconds.nil?
|
1139
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1140
|
+
end
|
1141
|
+
unless request_options&.token.nil?
|
1142
|
+
req.headers["Authorization"] = request_options.token
|
1143
|
+
end
|
1144
|
+
unless request_options&.gusto_api_version.nil?
|
1145
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1146
|
+
end
|
1147
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1148
|
+
req.params = { **(request_options&.additional_query_parameters || {}), "async": async }.compact
|
1149
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
1150
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
1151
|
+
end
|
1152
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}"
|
1153
|
+
end
|
1154
|
+
end
|
1155
|
+
end
|
1156
|
+
# This endpoint will build the payroll and get it ready for making updates. This
|
1157
|
+
# includes adding/removing eligible employees from the Payroll and updating the
|
1158
|
+
# check_date, payroll_deadline, and payroll_status_meta dates & times.
|
1159
|
+
# Notes:
|
1160
|
+
# - Will null out calculated_at & totals if a payroll has already been calculated.
|
1161
|
+
# - Will return the version param used for updating the payroll
|
1162
|
+
# scope: `payrolls:write`
|
1163
|
+
#
|
1164
|
+
# @param company_id [String] The UUID of the company
|
1165
|
+
# @param payroll_id [String] The UUID of the payroll
|
1166
|
+
# @param request_options [Gusto::RequestOptions]
|
1167
|
+
# @return [Gusto::Payrolls::PayrollPrepared]
|
1168
|
+
# @example
|
1169
|
+
# api = Gusto::Client.new(
|
1170
|
+
# base_url: "https://api.example.com",
|
1171
|
+
# environment: Gusto::Environment::DEMO,
|
1172
|
+
# token: "YOUR_AUTH_TOKEN"
|
1173
|
+
# )
|
1174
|
+
# api.payroll.prepare(company_id: "company_id", payroll_id: "payroll_id")
|
1175
|
+
def prepare(company_id:, payroll_id:, request_options: nil)
|
1176
|
+
Async do
|
1177
|
+
response = @request_client.conn.put do | req |
|
1178
|
+
unless request_options&.timeout_in_seconds.nil?
|
1179
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1180
|
+
end
|
1181
|
+
unless request_options&.token.nil?
|
1182
|
+
req.headers["Authorization"] = request_options.token
|
1183
|
+
end
|
1184
|
+
unless request_options&.gusto_api_version.nil?
|
1185
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1186
|
+
end
|
1187
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1188
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1189
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1190
|
+
end
|
1191
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
1192
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
1193
|
+
end
|
1194
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}/prepare"
|
1195
|
+
end
|
1196
|
+
Gusto::Payrolls::PayrollPrepared.from_json(json_object: response.body)
|
1197
|
+
end
|
1198
|
+
end
|
1199
|
+
# Returns a payroll receipt.
|
1200
|
+
# Notes:
|
1201
|
+
# - Hour and dollar amounts are returned as string representations of numeric
|
1202
|
+
# decimals.
|
1203
|
+
# - Dollar amounts are represented to the cent.
|
1204
|
+
# - If no data has yet be inserted for a given field, it defaults to “0.00” (for
|
1205
|
+
# fixed amounts).
|
1206
|
+
# scope: `payrolls:read`
|
1207
|
+
#
|
1208
|
+
# @param payroll_uuid [String] The UUID of the payroll
|
1209
|
+
# @param request_options [Gusto::RequestOptions]
|
1210
|
+
# @return [Gusto::PayrollReceipt]
|
1211
|
+
# @example
|
1212
|
+
# api = Gusto::Client.new(
|
1213
|
+
# base_url: "https://api.example.com",
|
1214
|
+
# environment: Gusto::Environment::DEMO,
|
1215
|
+
# token: "YOUR_AUTH_TOKEN"
|
1216
|
+
# )
|
1217
|
+
# api.payroll.get_receipt(payroll_uuid: "payroll_uuid")
|
1218
|
+
def get_receipt(payroll_uuid:, request_options: nil)
|
1219
|
+
Async do
|
1220
|
+
response = @request_client.conn.get do | req |
|
1221
|
+
unless request_options&.timeout_in_seconds.nil?
|
1222
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1223
|
+
end
|
1224
|
+
unless request_options&.token.nil?
|
1225
|
+
req.headers["Authorization"] = request_options.token
|
1226
|
+
end
|
1227
|
+
unless request_options&.gusto_api_version.nil?
|
1228
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1229
|
+
end
|
1230
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1231
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1232
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1233
|
+
end
|
1234
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
1235
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
1236
|
+
end
|
1237
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/payrolls/#{payroll_uuid}/receipt"
|
1238
|
+
end
|
1239
|
+
Gusto::PayrollReceipt.from_json(json_object: response.body)
|
1240
|
+
end
|
1241
|
+
end
|
1242
|
+
# Returns a list of reasons that prevent the company from running payrolls. See
|
1243
|
+
# the [payroll blockers
|
1244
|
+
# guide](https://docs.gusto.com/embedded-payroll/docs/payroll-blockers) for a
|
1245
|
+
# complete list of reasons.
|
1246
|
+
# The list is empty if there are no payroll blockers.
|
1247
|
+
# scope: `payrolls:run`
|
1248
|
+
#
|
1249
|
+
# @param company_uuid [String] The UUID of the company
|
1250
|
+
# @param request_options [Gusto::RequestOptions]
|
1251
|
+
# @return [Array<Gusto::PayrollBlocker>]
|
1252
|
+
# @example
|
1253
|
+
# api = Gusto::Client.new(
|
1254
|
+
# base_url: "https://api.example.com",
|
1255
|
+
# environment: Gusto::Environment::DEMO,
|
1256
|
+
# token: "YOUR_AUTH_TOKEN"
|
1257
|
+
# )
|
1258
|
+
# api.payroll.get_blockers(company_uuid: "company_uuid")
|
1259
|
+
def get_blockers(company_uuid:, request_options: nil)
|
1260
|
+
Async do
|
1261
|
+
response = @request_client.conn.get do | req |
|
1262
|
+
unless request_options&.timeout_in_seconds.nil?
|
1263
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1264
|
+
end
|
1265
|
+
unless request_options&.token.nil?
|
1266
|
+
req.headers["Authorization"] = request_options.token
|
1267
|
+
end
|
1268
|
+
unless request_options&.gusto_api_version.nil?
|
1269
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1270
|
+
end
|
1271
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1272
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1273
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1274
|
+
end
|
1275
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
1276
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
1277
|
+
end
|
1278
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_uuid}/payrolls/blockers"
|
1279
|
+
end
|
1280
|
+
parsed_json = JSON.parse(response.body)
|
1281
|
+
parsed_json&.map do | item |
|
1282
|
+
item = item.to_json
|
1283
|
+
Gusto::PayrollBlocker.from_json(json_object: item)
|
1284
|
+
end
|
1285
|
+
end
|
1286
|
+
end
|
1287
|
+
# Submits a $0 payroll for employees associated with the pay schedule to skip
|
1288
|
+
# payroll. This submission is asynchronous and a successful request responds with
|
1289
|
+
# a 202 HTTP status. Upon success, the payroll is transitioned to the `processed`
|
1290
|
+
# state.
|
1291
|
+
# If the company is blocked from running payroll due to issues like incomplete
|
1292
|
+
# setup, missing information or other compliance issues, the response will be 422
|
1293
|
+
# Unprocessable Entity with a categorization of the blockers as described in the
|
1294
|
+
# error responses.
|
1295
|
+
# scope: `payrolls:run`
|
1296
|
+
#
|
1297
|
+
# @param company_uuid [String] The UUID of the company
|
1298
|
+
# @param payroll_type [Gusto::Payroll::PayrollSkipPayrollRequestPayrollType] Payroll type
|
1299
|
+
# @param start_date [String] Pay period start date
|
1300
|
+
# @param end_date [String] Pay period end date. If left empty, defaults to today's date.
|
1301
|
+
# @param pay_schedule_uuid [String] The UUID of the pay schedule
|
1302
|
+
# @param employee_uuids [Array<String>] An array of employees. This field is only applicable to new hire payroll and
|
1303
|
+
# termination payroll
|
1304
|
+
# @param request_options [Gusto::RequestOptions]
|
1305
|
+
# @return [Void]
|
1306
|
+
# @example
|
1307
|
+
# api = Gusto::Client.new(
|
1308
|
+
# base_url: "https://api.example.com",
|
1309
|
+
# environment: Gusto::Environment::DEMO,
|
1310
|
+
# token: "YOUR_AUTH_TOKEN"
|
1311
|
+
# )
|
1312
|
+
# api.payroll.skip_payroll(
|
1313
|
+
# company_uuid: "company_uuid",
|
1314
|
+
# payroll_type: REGULAR,
|
1315
|
+
# start_date: "2023-05-26",
|
1316
|
+
# end_date: "2023-06-25",
|
1317
|
+
# pay_schedule_uuid: "85100524-4b42-4d2d-bd62-9d864f9aea64"
|
1318
|
+
# )
|
1319
|
+
def skip_payroll(company_uuid:, payroll_type:, start_date: nil, end_date: nil, pay_schedule_uuid: nil, employee_uuids: nil, request_options: nil)
|
1320
|
+
Async do
|
1321
|
+
response = @request_client.conn.post do | req |
|
1322
|
+
unless request_options&.timeout_in_seconds.nil?
|
1323
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1324
|
+
end
|
1325
|
+
unless request_options&.token.nil?
|
1326
|
+
req.headers["Authorization"] = request_options.token
|
1327
|
+
end
|
1328
|
+
unless request_options&.gusto_api_version.nil?
|
1329
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1330
|
+
end
|
1331
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1332
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1333
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1334
|
+
end
|
1335
|
+
req.body = { **(request_options&.additional_body_parameters || {}), payroll_type: payroll_type, start_date: start_date, end_date: end_date, pay_schedule_uuid: pay_schedule_uuid, employee_uuids: employee_uuids }.compact
|
1336
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_uuid}/payrolls/skip"
|
1337
|
+
end
|
1338
|
+
end
|
1339
|
+
end
|
1340
|
+
# Calculates gross up earnings for an employee's payroll, given net earnings. This
|
1341
|
+
# endpoint is only applicable to off-cycle unprocessed payrolls.
|
1342
|
+
# The gross up amount must then be mapped to the corresponding fixed compensation
|
1343
|
+
# earning type to get the correct payroll amount. For example, for bonus
|
1344
|
+
# off-cycles, the gross up amount should be set with the Bonus earning type in the
|
1345
|
+
# payroll `fixed_compensations` field.
|
1346
|
+
# scope: `payrolls:run`
|
1347
|
+
#
|
1348
|
+
# @param payroll_uuid [String] The UUID of the payroll
|
1349
|
+
# @param employee_uuid [String] Employee UUID
|
1350
|
+
# @param net_pay [String] Employee net earnings
|
1351
|
+
# @param request_options [Gusto::RequestOptions]
|
1352
|
+
# @return [Gusto::GrossUpPay]
|
1353
|
+
# @example
|
1354
|
+
# api = Gusto::Client.new(
|
1355
|
+
# base_url: "https://api.example.com",
|
1356
|
+
# environment: Gusto::Environment::DEMO,
|
1357
|
+
# token: "YOUR_AUTH_TOKEN"
|
1358
|
+
# )
|
1359
|
+
# api.payroll.gross_up(
|
1360
|
+
# payroll_uuid: "payroll_uuid",
|
1361
|
+
# employee_uuid: "be48c41e-142d-4116-9430-5aba2313fac7",
|
1362
|
+
# net_pay: "1000.00"
|
1363
|
+
# )
|
1364
|
+
def gross_up(payroll_uuid:, employee_uuid:, net_pay:, request_options: nil)
|
1365
|
+
Async do
|
1366
|
+
response = @request_client.conn.post do | req |
|
1367
|
+
unless request_options&.timeout_in_seconds.nil?
|
1368
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1369
|
+
end
|
1370
|
+
unless request_options&.token.nil?
|
1371
|
+
req.headers["Authorization"] = request_options.token
|
1372
|
+
end
|
1373
|
+
unless request_options&.gusto_api_version.nil?
|
1374
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1375
|
+
end
|
1376
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1377
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1378
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1379
|
+
end
|
1380
|
+
req.body = { **(request_options&.additional_body_parameters || {}), employee_uuid: employee_uuid, net_pay: net_pay }.compact
|
1381
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/payrolls/#{payroll_uuid}/gross_up"
|
1382
|
+
end
|
1383
|
+
Gusto::GrossUpPay.from_json(json_object: response.body)
|
1384
|
+
end
|
1385
|
+
end
|
1386
|
+
# Performs calculations for taxes, benefits, and deductions for an unprocessed
|
1387
|
+
# payroll. The calculated payroll details provide a preview of the actual values
|
1388
|
+
# that will be used when the payroll is run.
|
1389
|
+
# This calculation is asynchronous and a successful request responds with a 202
|
1390
|
+
# HTTP status. To view the details of the calculated payroll, use the GET
|
1391
|
+
# /v1/companies/{company_id}/payrolls/{payroll_id} endpoint with
|
1392
|
+
# _include=taxes,benefits,deductions_ params.
|
1393
|
+
# In v2023-04-01, _show_calculation=true_ is no longer required.
|
1394
|
+
# If the company is blocked from running payroll due to issues like incomplete
|
1395
|
+
# setup, missing information or other compliance issues, the response will be 422
|
1396
|
+
# Unprocessable Entity with a categorization of the blockers as described in the
|
1397
|
+
# error responses.
|
1398
|
+
#
|
1399
|
+
# @param company_id [String] The UUID of the company
|
1400
|
+
# @param payroll_id [String] The UUID of the payroll
|
1401
|
+
# @param request_options [Gusto::RequestOptions]
|
1402
|
+
# @return [Void]
|
1403
|
+
# @example
|
1404
|
+
# api = Gusto::Client.new(
|
1405
|
+
# base_url: "https://api.example.com",
|
1406
|
+
# environment: Gusto::Environment::DEMO,
|
1407
|
+
# token: "YOUR_AUTH_TOKEN"
|
1408
|
+
# )
|
1409
|
+
# api.payroll.calculate(company_id: "company_id", payroll_id: "payroll_id")
|
1410
|
+
def calculate(company_id:, payroll_id:, request_options: nil)
|
1411
|
+
Async do
|
1412
|
+
response = @request_client.conn.put do | req |
|
1413
|
+
unless request_options&.timeout_in_seconds.nil?
|
1414
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1415
|
+
end
|
1416
|
+
unless request_options&.token.nil?
|
1417
|
+
req.headers["Authorization"] = request_options.token
|
1418
|
+
end
|
1419
|
+
unless request_options&.gusto_api_version.nil?
|
1420
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1421
|
+
end
|
1422
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1423
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1424
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1425
|
+
end
|
1426
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
1427
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
1428
|
+
end
|
1429
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}/calculate"
|
1430
|
+
end
|
1431
|
+
end
|
1432
|
+
end
|
1433
|
+
# Submits an unprocessed payroll to be calculated and run. This submission is
|
1434
|
+
# asynchronous and a successful request responds with a 202 HTTP status. Upon
|
1435
|
+
# success, transitions the payroll to the `processed` state.
|
1436
|
+
# You should poll to ensure that payroll is processed successfully, as async
|
1437
|
+
# errors only occur after async processing is complete.
|
1438
|
+
# If the company is blocked from running payroll due to issues like incomplete
|
1439
|
+
# setup, missing information or other compliance issues, the response will be 422
|
1440
|
+
# Unprocessable Entity with a categorization of the blockers as described in the
|
1441
|
+
# error responses.
|
1442
|
+
# scope: `payrolls:run`
|
1443
|
+
#
|
1444
|
+
# @param company_id [String] The UUID of the company
|
1445
|
+
# @param payroll_id [String] The UUID of the payroll
|
1446
|
+
# @param submission_blockers [Array<Hash>] An array of submission_blockers, each with a selected unblock option.Request of type Array<Gusto::Payroll::PayrollSubmitRequestSubmissionBlockersItem>, as a Hash
|
1447
|
+
# * :blocker_type (String)
|
1448
|
+
# * :selected_option (String)
|
1449
|
+
# @param request_options [Gusto::RequestOptions]
|
1450
|
+
# @return [Void]
|
1451
|
+
# @example
|
1452
|
+
# api = Gusto::Client.new(
|
1453
|
+
# base_url: "https://api.example.com",
|
1454
|
+
# environment: Gusto::Environment::DEMO,
|
1455
|
+
# token: "YOUR_AUTH_TOKEN"
|
1456
|
+
# )
|
1457
|
+
# api.payroll.submit(company_id: "company_id", payroll_id: "payroll_id")
|
1458
|
+
def submit(company_id:, payroll_id:, submission_blockers: nil, request_options: nil)
|
1459
|
+
Async do
|
1460
|
+
response = @request_client.conn.put do | req |
|
1461
|
+
unless request_options&.timeout_in_seconds.nil?
|
1462
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1463
|
+
end
|
1464
|
+
unless request_options&.token.nil?
|
1465
|
+
req.headers["Authorization"] = request_options.token
|
1466
|
+
end
|
1467
|
+
unless request_options&.gusto_api_version.nil?
|
1468
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1469
|
+
end
|
1470
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1471
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1472
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1473
|
+
end
|
1474
|
+
req.body = { **(request_options&.additional_body_parameters || {}), submission_blockers: submission_blockers }.compact
|
1475
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}/submit"
|
1476
|
+
end
|
1477
|
+
end
|
1478
|
+
end
|
1479
|
+
# Transitions a `processed` payroll back to the `unprocessed` state. A payroll can
|
1480
|
+
# be canceled if it meets both criteria:
|
1481
|
+
# - `processed` is true
|
1482
|
+
# - Current time is earlier than 3:30pm PT on the payroll_deadline
|
1483
|
+
# scope: `payrolls:run`
|
1484
|
+
#
|
1485
|
+
# @param company_id [String] The UUID of the company
|
1486
|
+
# @param payroll_id [String] The UUID of the payroll
|
1487
|
+
# @param request_options [Gusto::RequestOptions]
|
1488
|
+
# @return [Gusto::Payrolls::Payroll]
|
1489
|
+
# @example
|
1490
|
+
# api = Gusto::Client.new(
|
1491
|
+
# base_url: "https://api.example.com",
|
1492
|
+
# environment: Gusto::Environment::DEMO,
|
1493
|
+
# token: "YOUR_AUTH_TOKEN"
|
1494
|
+
# )
|
1495
|
+
# api.payroll.cancel(company_id: "company_id", payroll_id: "payroll_id")
|
1496
|
+
def cancel(company_id:, payroll_id:, request_options: nil)
|
1497
|
+
Async do
|
1498
|
+
response = @request_client.conn.put do | req |
|
1499
|
+
unless request_options&.timeout_in_seconds.nil?
|
1500
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1501
|
+
end
|
1502
|
+
unless request_options&.token.nil?
|
1503
|
+
req.headers["Authorization"] = request_options.token
|
1504
|
+
end
|
1505
|
+
unless request_options&.gusto_api_version.nil?
|
1506
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1507
|
+
end
|
1508
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1509
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1510
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1511
|
+
end
|
1512
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
1513
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
1514
|
+
end
|
1515
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/payrolls/#{payroll_id}/cancel"
|
1516
|
+
end
|
1517
|
+
Gusto::Payrolls::Payroll.from_json(json_object: response.body)
|
1518
|
+
end
|
1519
|
+
end
|
1520
|
+
# Get an employee's pay stub for the specified payroll. By default, an
|
1521
|
+
# application/pdf response will be returned. No other content types are currently
|
1522
|
+
# supported, but may be supported in the future.
|
1523
|
+
# scope: `pay_stubs:read`
|
1524
|
+
#
|
1525
|
+
# @param payroll_id [String] The UUID of the payroll
|
1526
|
+
# @param employee_id [String] The UUID of the employee
|
1527
|
+
# @param request_options [Gusto::RequestOptions]
|
1528
|
+
# @return [Void]
|
1529
|
+
# @example
|
1530
|
+
# api = Gusto::Client.new(
|
1531
|
+
# base_url: "https://api.example.com",
|
1532
|
+
# environment: Gusto::Environment::DEMO,
|
1533
|
+
# token: "YOUR_AUTH_TOKEN"
|
1534
|
+
# )
|
1535
|
+
# api.payroll.get_pay_stub(payroll_id: "payroll_id", employee_id: "employee_id")
|
1536
|
+
def get_pay_stub(payroll_id:, employee_id:, request_options: nil)
|
1537
|
+
Async do
|
1538
|
+
response = @request_client.conn.get do | req |
|
1539
|
+
unless request_options&.timeout_in_seconds.nil?
|
1540
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1541
|
+
end
|
1542
|
+
unless request_options&.token.nil?
|
1543
|
+
req.headers["Authorization"] = request_options.token
|
1544
|
+
end
|
1545
|
+
unless request_options&.gusto_api_version.nil?
|
1546
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1547
|
+
end
|
1548
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1549
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1550
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1551
|
+
end
|
1552
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
1553
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
1554
|
+
end
|
1555
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/payrolls/#{payroll_id}/employees/#{employee_id}/pay_stub"
|
1556
|
+
end
|
1557
|
+
end
|
1558
|
+
end
|
1559
|
+
# Get an employee's pay stubs
|
1560
|
+
# scope: `pay_stubs:read`
|
1561
|
+
#
|
1562
|
+
# @param employee_id [String] The UUID of the employee
|
1563
|
+
# @param request_options [Gusto::RequestOptions]
|
1564
|
+
# @return [Array<Gusto::Payrolls::EmployeePayStub>]
|
1565
|
+
# @example
|
1566
|
+
# api = Gusto::Client.new(
|
1567
|
+
# base_url: "https://api.example.com",
|
1568
|
+
# environment: Gusto::Environment::DEMO,
|
1569
|
+
# token: "YOUR_AUTH_TOKEN"
|
1570
|
+
# )
|
1571
|
+
# api.payroll.list_pay_stubs(employee_id: "employee_id")
|
1572
|
+
def list_pay_stubs(employee_id:, request_options: nil)
|
1573
|
+
Async do
|
1574
|
+
response = @request_client.conn.get do | req |
|
1575
|
+
unless request_options&.timeout_in_seconds.nil?
|
1576
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1577
|
+
end
|
1578
|
+
unless request_options&.token.nil?
|
1579
|
+
req.headers["Authorization"] = request_options.token
|
1580
|
+
end
|
1581
|
+
unless request_options&.gusto_api_version.nil?
|
1582
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1583
|
+
end
|
1584
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1585
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1586
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1587
|
+
end
|
1588
|
+
unless request_options.nil? || request_options&.additional_body_parameters.nil?
|
1589
|
+
req.body = { **(request_options&.additional_body_parameters || {}) }.compact
|
1590
|
+
end
|
1591
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/employees/#{employee_id}/pay_stubs"
|
1592
|
+
end
|
1593
|
+
parsed_json = JSON.parse(response.body)
|
1594
|
+
parsed_json&.map do | item |
|
1595
|
+
item = item.to_json
|
1596
|
+
Gusto::Payrolls::EmployeePayStub.from_json(json_object: item)
|
1597
|
+
end
|
1598
|
+
end
|
1599
|
+
end
|
1600
|
+
# This endpoint initiates the generation of employee checks for the payroll
|
1601
|
+
# specified by payroll_id. A generation status and corresponding generated
|
1602
|
+
# document request_uuid will be returned. Use the generated document GET endpoint
|
1603
|
+
# with document_type: `printable_payroll_checks` and request_uuid to poll the
|
1604
|
+
# check generation process and retrieve the generated check URL upon completion.
|
1605
|
+
# scope: `generated_documents:write`
|
1606
|
+
#
|
1607
|
+
# @param payroll_id [String] The UUID of the payroll
|
1608
|
+
# @param printing_format [String] The type of check stock being printed. Check this
|
1609
|
+
# [link](https://support.gusto.com/article/999877761000000/Pay-your-team-by-check)
|
1610
|
+
# for more info on check types
|
1611
|
+
# @param starting_check_number [Integer] The starting check number for the checks being generated
|
1612
|
+
# @param request_options [Gusto::RequestOptions]
|
1613
|
+
# @return [Gusto::PayrollCheck]
|
1614
|
+
# @example
|
1615
|
+
# api = Gusto::Client.new(
|
1616
|
+
# base_url: "https://api.example.com",
|
1617
|
+
# environment: Gusto::Environment::DEMO,
|
1618
|
+
# token: "YOUR_AUTH_TOKEN"
|
1619
|
+
# )
|
1620
|
+
# api.payroll.generate_printable_checks(payroll_id: "payroll_id", printing_format: "printing_format")
|
1621
|
+
def generate_printable_checks(payroll_id:, printing_format:, starting_check_number: nil, request_options: nil)
|
1622
|
+
Async do
|
1623
|
+
response = @request_client.conn.post do | req |
|
1624
|
+
unless request_options&.timeout_in_seconds.nil?
|
1625
|
+
req.options.timeout = request_options.timeout_in_seconds
|
1626
|
+
end
|
1627
|
+
unless request_options&.token.nil?
|
1628
|
+
req.headers["Authorization"] = request_options.token
|
1629
|
+
end
|
1630
|
+
unless request_options&.gusto_api_version.nil?
|
1631
|
+
req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
|
1632
|
+
end
|
1633
|
+
req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
|
1634
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
1635
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
1636
|
+
end
|
1637
|
+
req.body = { **(request_options&.additional_body_parameters || {}), printing_format: printing_format, starting_check_number: starting_check_number }.compact
|
1638
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/v1/payrolls/#{payroll_id}/generated_documents/printable_payroll_checks"
|
1639
|
+
end
|
1640
|
+
Gusto::PayrollCheck.from_json(json_object: response.body)
|
1641
|
+
end
|
1642
|
+
end
|
1643
|
+
end
|
1644
|
+
end
|