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.
Files changed (515) hide show
  1. checksums.yaml +7 -0
  2. data/lib/base_gusto.rb +175 -0
  3. data/lib/core/file_utilities.rb +27 -0
  4. data/lib/environment.rb +9 -0
  5. data/lib/fern_gusto/ach_transactions/client.rb +119 -0
  6. data/lib/fern_gusto/admins/types/admin.rb +82 -0
  7. data/lib/fern_gusto/companies/attachments/client.rb +335 -0
  8. data/lib/fern_gusto/companies/attachments/types/attachments_create_request_category.rb +15 -0
  9. data/lib/fern_gusto/companies/attachments/types/attachments_get_download_url_response.rb +56 -0
  10. data/lib/fern_gusto/companies/bank_accounts/client.rb +435 -0
  11. data/lib/fern_gusto/companies/bank_accounts/types/bank_accounts_create_request_account_type.rb +15 -0
  12. data/lib/fern_gusto/companies/benefits/client.rb +862 -0
  13. data/lib/fern_gusto/companies/client.rb +1104 -0
  14. data/lib/fern_gusto/companies/departments/client.rb +587 -0
  15. data/lib/fern_gusto/companies/departments/types/departments_add_people_request_contractors_item.rb +59 -0
  16. data/lib/fern_gusto/companies/departments/types/departments_add_people_request_employees_item.rb +59 -0
  17. data/lib/fern_gusto/companies/departments/types/departments_remove_people_request_contractors_item.rb +59 -0
  18. data/lib/fern_gusto/companies/departments/types/departments_remove_people_request_employees_item.rb +59 -0
  19. data/lib/fern_gusto/companies/employees/client.rb +376 -0
  20. data/lib/fern_gusto/companies/external_payrolls/client.rb +605 -0
  21. data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_request_external_payroll_items_item.rb +98 -0
  22. data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_request_external_payroll_items_item_benefits_item.rb +79 -0
  23. data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_request_external_payroll_items_item_earnings_item.rb +87 -0
  24. data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_request_external_payroll_items_item_earnings_item_earning_type.rb +15 -0
  25. data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_request_external_payroll_items_item_taxes_item.rb +69 -0
  26. data/lib/fern_gusto/companies/external_payrolls/types/external_payrolls_update_tax_liabilities_request_liability_selections_item.rb +80 -0
  27. data/lib/fern_gusto/companies/federal_tax_details/client.rb +212 -0
  28. data/lib/fern_gusto/companies/federal_tax_details/types/federal_tax_details_update_request_tax_payer_type.rb +25 -0
  29. data/lib/fern_gusto/companies/forms/client.rb +345 -0
  30. data/lib/fern_gusto/companies/industry_selection/client.rb +207 -0
  31. data/lib/fern_gusto/companies/locations/client.rb +417 -0
  32. data/lib/fern_gusto/companies/pay_schedules/client.rb +377 -0
  33. data/lib/fern_gusto/companies/payment_configs/client.rb +198 -0
  34. data/lib/fern_gusto/companies/payment_configs/types/payment_configs_update_request_payment_speed.rb +19 -0
  35. data/lib/fern_gusto/companies/signatories/client.rb +513 -0
  36. data/lib/fern_gusto/companies/signatories/types/signatories_create_request_home_address.rb +89 -0
  37. data/lib/fern_gusto/companies/signatories/types/signatories_update_request_home_address.rb +88 -0
  38. data/lib/fern_gusto/companies/tax_requirements/client.rb +367 -0
  39. data/lib/fern_gusto/companies/tax_requirements/types/tax_requirements_list_response_item.rb +75 -0
  40. data/lib/fern_gusto/companies/tax_requirements/types/tax_requirements_update_state_request_requirement_sets_item.rb +88 -0
  41. data/lib/fern_gusto/companies/tax_requirements/types/tax_requirements_update_state_request_requirement_sets_item_requirements_item.rb +70 -0
  42. data/lib/fern_gusto/companies/types/companies_accept_terms_response.rb +56 -0
  43. data/lib/fern_gusto/companies/types/companies_create_request_company.rb +83 -0
  44. data/lib/fern_gusto/companies/types/companies_create_request_user.rb +81 -0
  45. data/lib/fern_gusto/companies/types/companies_create_response.rb +82 -0
  46. data/lib/fern_gusto/companies/types/companies_get_custom_fields_response.rb +59 -0
  47. data/lib/fern_gusto/companies/types/companies_migrate_to_embedded_payroll_response.rb +68 -0
  48. data/lib/fern_gusto/companies/types/companies_retrieve_terms_response.rb +56 -0
  49. data/lib/fern_gusto/companies/types/company.rb +223 -0
  50. data/lib/fern_gusto/companies/types/company_company_status.rb +21 -0
  51. data/lib/fern_gusto/companies/types/company_compensations.rb +85 -0
  52. data/lib/fern_gusto/companies/types/company_compensations_fixed_item.rb +55 -0
  53. data/lib/fern_gusto/companies/types/company_compensations_hourly_item.rb +65 -0
  54. data/lib/fern_gusto/companies/types/company_compensations_paid_time_off_item.rb +55 -0
  55. data/lib/fern_gusto/companies/types/company_entity_type.rb +23 -0
  56. data/lib/fern_gusto/companies/types/company_funding_type.rb +15 -0
  57. data/lib/fern_gusto/companies/types/company_onboarding_status.rb +77 -0
  58. data/lib/fern_gusto/companies/types/company_onboarding_status_onboarding_steps_item.rb +97 -0
  59. data/lib/fern_gusto/companies/types/company_pay_schedule_type.rb +15 -0
  60. data/lib/fern_gusto/companies/types/company_primary_payroll_admin.rb +80 -0
  61. data/lib/fern_gusto/companies/types/company_primary_signatory.rb +100 -0
  62. data/lib/fern_gusto/companies/types/company_primary_signatory_home_address.rb +93 -0
  63. data/lib/fern_gusto/companies/types/company_tier.rb +20 -0
  64. data/lib/fern_gusto/company_attachment/types/company_attachment.rb +81 -0
  65. data/lib/fern_gusto/company_attachment/types/company_attachment_category.rb +13 -0
  66. data/lib/fern_gusto/company_bank_accounts/types/company_bank_account.rb +157 -0
  67. data/lib/fern_gusto/company_bank_accounts/types/company_bank_account_account_type.rb +13 -0
  68. data/lib/fern_gusto/company_bank_accounts/types/company_bank_account_plaid_status.rb +14 -0
  69. data/lib/fern_gusto/company_bank_accounts/types/company_bank_account_verification_status.rb +19 -0
  70. data/lib/fern_gusto/company_bank_accounts/types/company_bank_account_verification_type.rb +17 -0
  71. data/lib/fern_gusto/company_benefits/types/benefit_summary.rb +104 -0
  72. data/lib/fern_gusto/company_benefits/types/benefit_summary_employees.rb +113 -0
  73. data/lib/fern_gusto/company_benefits/types/benefit_summary_employees_payroll_benefits.rb +107 -0
  74. data/lib/fern_gusto/company_benefits/types/benefit_summary_employees_payroll_benefits_pay_period.rb +67 -0
  75. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements.rb +156 -0
  76. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_catch_up.rb +86 -0
  77. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_catch_up_default_value.rb +67 -0
  78. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_company_contribution_annual_maximum.rb +88 -0
  79. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_company_contribution_annual_maximum_default_value.rb +68 -0
  80. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_contribution.rb +86 -0
  81. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_contribution_default_value.rb +67 -0
  82. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_coverage_amount.rb +87 -0
  83. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_coverage_amount_default_value.rb +67 -0
  84. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_coverage_salary_multiplier.rb +88 -0
  85. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_coverage_salary_multiplier_default_value.rb +67 -0
  86. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_deduct_as_percentage.rb +88 -0
  87. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_deduct_as_percentage_default_value.rb +67 -0
  88. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_employee_deduction.rb +88 -0
  89. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_employee_deduction_default_value.rb +67 -0
  90. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_limit_option.rb +86 -0
  91. data/lib/fern_gusto/company_benefits/types/benefit_type_requirements_limit_option_default_value.rb +67 -0
  92. data/lib/fern_gusto/contractor/types/contractor_onboarding_info.rb +78 -0
  93. data/lib/fern_gusto/contractor/types/contractor_onboarding_status_onboarding_status.rb +14 -0
  94. data/lib/fern_gusto/contractor/types/contractor_onboarding_status_onboarding_steps_item.rb +88 -0
  95. data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_for_group.rb +145 -0
  96. data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_for_group_payment_method.rb +15 -0
  97. data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_for_group_status.rb +16 -0
  98. data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_for_group_wage_type.rb +13 -0
  99. data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group.rb +127 -0
  100. data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group_minimal.rb +116 -0
  101. data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group_minimal_status.rb +16 -0
  102. data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group_minimal_totals.rb +74 -0
  103. data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group_status.rb +16 -0
  104. data/lib/fern_gusto/contractor_payment_groups/types/contractor_payment_group_totals.rb +74 -0
  105. data/lib/fern_gusto/contractor_payment_method/types/contractor_bank_account.rb +94 -0
  106. data/lib/fern_gusto/contractor_payment_method/types/contractor_bank_account_account_type.rb +13 -0
  107. data/lib/fern_gusto/contractor_payment_method/types/contractor_payment_method.rb +96 -0
  108. data/lib/fern_gusto/contractor_payment_method/types/contractor_payment_method_split_by.rb +15 -0
  109. data/lib/fern_gusto/contractor_payment_method/types/contractor_payment_method_type.rb +14 -0
  110. data/lib/fern_gusto/contractor_payments/types/contractor_payment.rb +146 -0
  111. data/lib/fern_gusto/contractor_payments/types/contractor_payment_payment_method.rb +15 -0
  112. data/lib/fern_gusto/contractor_payments/types/contractor_payment_status.rb +13 -0
  113. data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary.rb +81 -0
  114. data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary_by_dates.rb +81 -0
  115. data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary_by_dates_contractor_payments_item.rb +93 -0
  116. data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary_by_dates_total.rb +67 -0
  117. data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary_contractor_payments_item.rb +86 -0
  118. data/lib/fern_gusto/contractor_payments/types/contractor_payment_summary_total.rb +67 -0
  119. data/lib/fern_gusto/contractor_payments/types/contractor_payment_wage_type.rb +13 -0
  120. data/lib/fern_gusto/contractors/client.rb +1025 -0
  121. data/lib/fern_gusto/contractors/documents/client.rb +269 -0
  122. data/lib/fern_gusto/contractors/documents/types/documents_sign_request_fields_item.rb +67 -0
  123. data/lib/fern_gusto/contractors/forms/client.rb +343 -0
  124. data/lib/fern_gusto/contractors/payment_groups/client.rb +569 -0
  125. data/lib/fern_gusto/contractors/payment_groups/types/payment_groups_create_request_contractor_payments_item.rb +102 -0
  126. data/lib/fern_gusto/contractors/payment_groups/types/payment_groups_create_request_contractor_payments_item_payment_method.rb +15 -0
  127. data/lib/fern_gusto/contractors/payment_groups/types/payment_groups_preview_request_contractor_payments_item.rb +102 -0
  128. data/lib/fern_gusto/contractors/payment_groups/types/payment_groups_preview_request_contractor_payments_item_payment_method.rb +15 -0
  129. data/lib/fern_gusto/contractors/payment_method/client.rb +369 -0
  130. data/lib/fern_gusto/contractors/payment_method/types/payment_method_create_bank_account_request_account_type.rb +14 -0
  131. data/lib/fern_gusto/contractors/payment_method/types/payment_method_update_request_type.rb +17 -0
  132. data/lib/fern_gusto/contractors/payments/client.rb +558 -0
  133. data/lib/fern_gusto/contractors/payments/types/payments_create_request_payment_method.rb +15 -0
  134. data/lib/fern_gusto/contractors/payments/types/payments_list_response.rb +62 -0
  135. data/lib/fern_gusto/contractors/types/contractor.rb +227 -0
  136. data/lib/fern_gusto/contractors/types/contractor_address.rb +94 -0
  137. data/lib/fern_gusto/contractors/types/contractor_onboarding_status.rb +18 -0
  138. data/lib/fern_gusto/contractors/types/contractor_type.rb +13 -0
  139. data/lib/fern_gusto/contractors/types/contractor_wage_type.rb +13 -0
  140. data/lib/fern_gusto/custom_fields/types/company_custom_field.rb +88 -0
  141. data/lib/fern_gusto/custom_fields/types/custom_field_type.rb +16 -0
  142. data/lib/fern_gusto/custom_fields/types/employee_custom_field.rb +104 -0
  143. data/lib/fern_gusto/documents/types/document.rb +167 -0
  144. data/lib/fern_gusto/documents/types/document_fields_item.rb +114 -0
  145. data/lib/fern_gusto/documents/types/document_pages_item.rb +65 -0
  146. data/lib/fern_gusto/documents/types/document_recipient_type.rb +15 -0
  147. data/lib/fern_gusto/documents/types/document_signed.rb +137 -0
  148. data/lib/fern_gusto/documents/types/document_signed_recipient_type.rb +15 -0
  149. data/lib/fern_gusto/earning_types/types/earning_type.rb +66 -0
  150. data/lib/fern_gusto/employee_employments/types/unprocessed_termination_pay_period.rb +101 -0
  151. data/lib/fern_gusto/employee_payment_method/types/employee_bank_account.rb +94 -0
  152. data/lib/fern_gusto/employee_payment_method/types/employee_bank_account_account_type.rb +13 -0
  153. data/lib/fern_gusto/employee_payment_method/types/employee_payment_method_info.rb +96 -0
  154. data/lib/fern_gusto/employee_payment_method/types/employee_payment_method_split_by.rb +15 -0
  155. data/lib/fern_gusto/employee_payment_method/types/employee_payment_method_type.rb +14 -0
  156. data/lib/fern_gusto/employee_tax_setup/types/employee_federal_tax.rb +144 -0
  157. data/lib/fern_gusto/employee_tax_setup/types/employee_federal_tax_w4data_type.rb +13 -0
  158. data/lib/fern_gusto/employee_tax_setup/types/employee_state_tax.rb +90 -0
  159. data/lib/fern_gusto/employee_tax_setup/types/employee_state_tax_answer.rb +74 -0
  160. data/lib/fern_gusto/employee_tax_setup/types/employee_state_tax_input_question_format.rb +69 -0
  161. data/lib/fern_gusto/employee_tax_setup/types/employee_state_tax_input_question_format_options_item.rb +67 -0
  162. data/lib/fern_gusto/employee_tax_setup/types/employee_state_tax_question.rb +96 -0
  163. data/lib/fern_gusto/employees/adresses/client.rb +885 -0
  164. data/lib/fern_gusto/employees/benefits/client.rb +656 -0
  165. data/lib/fern_gusto/employees/benefits/types/benefits_create_request_contribution.rb +93 -0
  166. data/lib/fern_gusto/employees/benefits/types/benefits_create_request_contribution_type.rb +23 -0
  167. data/lib/fern_gusto/employees/benefits/types/benefits_create_request_contribution_value.rb +67 -0
  168. data/lib/fern_gusto/employees/benefits/types/benefits_create_request_contribution_value_item.rb +80 -0
  169. data/lib/fern_gusto/employees/benefits/types/benefits_create_request_deduction_reduces_taxable_income.rb +18 -0
  170. data/lib/fern_gusto/employees/benefits/types/benefits_update_request_contribution.rb +93 -0
  171. data/lib/fern_gusto/employees/benefits/types/benefits_update_request_contribution_type.rb +23 -0
  172. data/lib/fern_gusto/employees/benefits/types/benefits_update_request_contribution_value.rb +67 -0
  173. data/lib/fern_gusto/employees/benefits/types/benefits_update_request_contribution_value_item.rb +80 -0
  174. data/lib/fern_gusto/employees/benefits/types/benefits_update_request_deduction_reduces_taxable_income.rb +18 -0
  175. data/lib/fern_gusto/employees/client.rb +822 -0
  176. data/lib/fern_gusto/employees/employments/client.rb +799 -0
  177. data/lib/fern_gusto/employees/employments/types/employments_get_history_response_item.rb +95 -0
  178. data/lib/fern_gusto/employees/employments/types/employments_get_history_response_item_employment_status.rb +20 -0
  179. data/lib/fern_gusto/employees/forms/client.rb +433 -0
  180. data/lib/fern_gusto/employees/forms/types/forms_generate_w2response.rb +132 -0
  181. data/lib/fern_gusto/employees/garnishments/client.rb +558 -0
  182. data/lib/fern_gusto/employees/garnishments/types/garnishments_create_request_garnishment_type.rb +20 -0
  183. data/lib/fern_gusto/employees/jobs_and_compensations/client.rb +938 -0
  184. data/lib/fern_gusto/employees/jobs_and_compensations/types/jobs_and_compensations_create_compensation_request_minimum_wages_item.rb +62 -0
  185. data/lib/fern_gusto/employees/jobs_and_compensations/types/jobs_and_compensations_create_compensation_request_payment_unit.rb +19 -0
  186. data/lib/fern_gusto/employees/jobs_and_compensations/types/jobs_and_compensations_update_compensation_request_minimum_wages_item.rb +62 -0
  187. data/lib/fern_gusto/employees/jobs_and_compensations/types/jobs_and_compensations_update_compensation_request_payment_unit.rb +19 -0
  188. data/lib/fern_gusto/employees/payment_method/client.rb +484 -0
  189. data/lib/fern_gusto/employees/payment_method/types/payment_method_create_bank_account_request_account_type.rb +14 -0
  190. data/lib/fern_gusto/employees/payment_method/types/payment_method_update_bank_account_request_account_type.rb +14 -0
  191. data/lib/fern_gusto/employees/payment_method/types/payment_method_update_request_split_by.rb +17 -0
  192. data/lib/fern_gusto/employees/payment_method/types/payment_method_update_request_splits_item.rb +83 -0
  193. data/lib/fern_gusto/employees/payment_method/types/payment_method_update_request_type.rb +16 -0
  194. data/lib/fern_gusto/employees/tax_setup/client.rb +422 -0
  195. data/lib/fern_gusto/employees/tax_setup/types/tax_setup_update_state_taxes_request_states_item.rb +73 -0
  196. data/lib/fern_gusto/employees/tax_setup/types/tax_setup_update_state_taxes_request_states_item_questions_item.rb +73 -0
  197. data/lib/fern_gusto/employees/tax_setup/types/tax_setup_update_state_taxes_request_states_item_questions_item_answers_item.rb +77 -0
  198. data/lib/fern_gusto/employees/types/employee.rb +281 -0
  199. data/lib/fern_gusto/employees/types/employee_current_employment_status.rb +20 -0
  200. data/lib/fern_gusto/employees/types/employee_onboarding_info.rb +77 -0
  201. data/lib/fern_gusto/employees/types/employee_onboarding_status.rb +19 -0
  202. data/lib/fern_gusto/employees/types/employee_onboarding_status_onboarding_steps_item.rb +88 -0
  203. data/lib/fern_gusto/employees/types/employee_payment_method.rb +13 -0
  204. data/lib/fern_gusto/employees/types/employees_get_custom_fields_response.rb +59 -0
  205. data/lib/fern_gusto/employees/types/employees_get_request_include.rb +12 -0
  206. data/lib/fern_gusto/events/client.rb +144 -0
  207. data/lib/fern_gusto/events/types/events_list_request_sort_order.rb +12 -0
  208. data/lib/fern_gusto/external_payrolls/types/external_payroll.rb +158 -0
  209. data/lib/fern_gusto/external_payrolls/types/external_payroll_applicable_benefits_item.rb +73 -0
  210. data/lib/fern_gusto/external_payrolls/types/external_payroll_applicable_earnings_item.rb +87 -0
  211. data/lib/fern_gusto/external_payrolls/types/external_payroll_applicable_taxes_item.rb +85 -0
  212. data/lib/fern_gusto/external_payrolls/types/external_payroll_basic.rb +101 -0
  213. data/lib/fern_gusto/external_payrolls/types/external_payroll_basic_status.rb +16 -0
  214. data/lib/fern_gusto/external_payrolls/types/external_payroll_external_payroll_items_item.rb +93 -0
  215. data/lib/fern_gusto/external_payrolls/types/external_payroll_external_payroll_items_item_benefits_item.rb +74 -0
  216. data/lib/fern_gusto/external_payrolls/types/external_payroll_external_payroll_items_item_earnings_item.rb +81 -0
  217. data/lib/fern_gusto/external_payrolls/types/external_payroll_external_payroll_items_item_taxes_item.rb +67 -0
  218. data/lib/fern_gusto/external_payrolls/types/external_payroll_metadata.rb +56 -0
  219. data/lib/fern_gusto/external_payrolls/types/external_payroll_status.rb +16 -0
  220. data/lib/fern_gusto/external_payrolls/types/external_payroll_tax_suggestions.rb +72 -0
  221. data/lib/fern_gusto/external_payrolls/types/external_payroll_tax_suggestions_tax_suggestions.rb +68 -0
  222. data/lib/fern_gusto/external_payrolls/types/tax_liabilities_selections.rb +86 -0
  223. data/lib/fern_gusto/external_payrolls/types/tax_liabilities_selections_possible_liabilities.rb +75 -0
  224. data/lib/fern_gusto/federal_tax_details/types/federal_tax_details.rb +140 -0
  225. data/lib/fern_gusto/flows/client.rb +113 -0
  226. data/lib/fern_gusto/flows/types/flow.rb +66 -0
  227. data/lib/fern_gusto/flows/types/flows_create_request_entity_type.rb +14 -0
  228. data/lib/fern_gusto/forms/types/form.rb +123 -0
  229. data/lib/fern_gusto/forms/types/form1099.rb +126 -0
  230. data/lib/fern_gusto/generated_documents/client.rb +106 -0
  231. data/lib/fern_gusto/holiday_pay_policies/client.rb +599 -0
  232. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_add_employees_request_employees_item.rb +57 -0
  233. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays.rb +198 -0
  234. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_christmas_day.rb +57 -0
  235. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_columbus_day.rb +57 -0
  236. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_independence_day.rb +57 -0
  237. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_juneteenth.rb +57 -0
  238. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_labor_day.rb +57 -0
  239. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_memorial_day.rb +57 -0
  240. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_mlk_day.rb +57 -0
  241. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_new_years_day.rb +57 -0
  242. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_presidents_day.rb +57 -0
  243. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_thanksgiving.rb +57 -0
  244. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_create_request_federal_holidays_veterans_day.rb +57 -0
  245. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_remove_employees_request_employees_item.rb +57 -0
  246. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays.rb +198 -0
  247. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_christmas_day.rb +57 -0
  248. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_columbus_day.rb +57 -0
  249. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_independence_day.rb +57 -0
  250. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_juneteenth.rb +57 -0
  251. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_labor_day.rb +57 -0
  252. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_memorial_day.rb +57 -0
  253. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_mlk_day.rb +57 -0
  254. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_new_years_day.rb +57 -0
  255. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_presidents_day.rb +57 -0
  256. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_thanksgiving.rb +57 -0
  257. data/lib/fern_gusto/holiday_pay_policies/types/holiday_pay_policies_update_request_federal_holidays_veterans_day.rb +57 -0
  258. data/lib/fern_gusto/industry/types/industry.rb +87 -0
  259. data/lib/fern_gusto/invoices/client.rb +132 -0
  260. data/lib/fern_gusto/jobs_and_compensations/types/compensation.rb +120 -0
  261. data/lib/fern_gusto/jobs_and_compensations/types/compensation_payment_unit.rb +17 -0
  262. data/lib/fern_gusto/jobs_and_compensations/types/job.rb +161 -0
  263. data/lib/fern_gusto/locations/types/company_address.rb +103 -0
  264. data/lib/fern_gusto/locations/types/location.rb +171 -0
  265. data/lib/fern_gusto/notifications/client.rb +120 -0
  266. data/lib/fern_gusto/pay_schedules/types/pay_schedule.rb +151 -0
  267. data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment.rb +103 -0
  268. data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_department.rb +65 -0
  269. data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_employee.rb +65 -0
  270. data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_employee_change.rb +105 -0
  271. data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_pay_period.rb +80 -0
  272. data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_preview.rb +71 -0
  273. data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_preview_type.rb +15 -0
  274. data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_transition_pay_period.rb +68 -0
  275. data/lib/fern_gusto/pay_schedules/types/pay_schedule_assignment_type.rb +15 -0
  276. data/lib/fern_gusto/pay_schedules/types/pay_schedule_frequency.rb +17 -0
  277. data/lib/fern_gusto/payment_configs/types/payment_configs.rb +79 -0
  278. data/lib/fern_gusto/payroll/client.rb +1644 -0
  279. data/lib/fern_gusto/payroll/earning_types/client.rb +350 -0
  280. data/lib/fern_gusto/payroll/earning_types/types/earning_types_get_response.rb +74 -0
  281. data/lib/fern_gusto/payroll/external_payrolls/client.rb +199 -0
  282. data/lib/fern_gusto/payroll/pay_schedules/client.rb +584 -0
  283. data/lib/fern_gusto/payroll/pay_schedules/types/pay_schedules_create_request_frequency.rb +17 -0
  284. data/lib/fern_gusto/payroll/pay_schedules/types/pay_schedules_preview_request_frequency.rb +16 -0
  285. data/lib/fern_gusto/payroll/pay_schedules/types/pay_schedules_preview_response.rb +72 -0
  286. data/lib/fern_gusto/payroll/pay_schedules/types/pay_schedules_preview_response_pay_periods_item.rb +83 -0
  287. data/lib/fern_gusto/payroll/pay_schedules/types/pay_schedules_update_request_frequency.rb +17 -0
  288. data/lib/fern_gusto/payroll/types/payroll_create_request_off_cycle_reason.rb +15 -0
  289. data/lib/fern_gusto/payroll/types/payroll_create_request_withholding_pay_period.rb +18 -0
  290. data/lib/fern_gusto/payroll/types/payroll_get_request_include_item.rb +14 -0
  291. data/lib/fern_gusto/payroll/types/payroll_list_request_include_item.rb +13 -0
  292. data/lib/fern_gusto/payroll/types/payroll_list_request_payroll_types_item.rb +13 -0
  293. data/lib/fern_gusto/payroll/types/payroll_list_request_processing_statuses_item.rb +12 -0
  294. data/lib/fern_gusto/payroll/types/payroll_list_request_sort_order.rb +12 -0
  295. data/lib/fern_gusto/payroll/types/payroll_skip_payroll_request_payroll_type.rb +15 -0
  296. data/lib/fern_gusto/payroll/types/payroll_submit_request_submission_blockers_item.rb +67 -0
  297. data/lib/fern_gusto/payroll/types/payroll_update_request_employee_compensations_item.rb +133 -0
  298. data/lib/fern_gusto/payroll/types/payroll_update_request_employee_compensations_item_fixed_compensations_item.rb +79 -0
  299. data/lib/fern_gusto/payroll/types/payroll_update_request_employee_compensations_item_hourly_compensations_item.rb +79 -0
  300. data/lib/fern_gusto/payroll/types/payroll_update_request_employee_compensations_item_paid_time_off_item.rb +85 -0
  301. data/lib/fern_gusto/payroll/types/payroll_update_request_employee_compensations_item_payment_method.rb +13 -0
  302. data/lib/fern_gusto/payrolls/types/employee_pay_stub.rb +94 -0
  303. data/lib/fern_gusto/payrolls/types/paid_time_off.rb +123 -0
  304. data/lib/fern_gusto/payrolls/types/paid_time_off_name.rb +14 -0
  305. data/lib/fern_gusto/payrolls/types/pay_period.rb +86 -0
  306. data/lib/fern_gusto/payrolls/types/pay_period_payroll.rb +107 -0
  307. data/lib/fern_gusto/payrolls/types/pay_period_payroll_payroll_type.rb +13 -0
  308. data/lib/fern_gusto/payrolls/types/payroll.rb +285 -0
  309. data/lib/fern_gusto/payrolls/types/payroll_minimal.rb +250 -0
  310. data/lib/fern_gusto/payrolls/types/payroll_prepared.rb +250 -0
  311. data/lib/fern_gusto/recovery_cases/client.rb +198 -0
  312. data/lib/fern_gusto/reports/client.rb +306 -0
  313. data/lib/fern_gusto/reports/types/reports_create_request_columns_item.rb +91 -0
  314. data/lib/fern_gusto/reports/types/reports_create_request_employment_status.rb +18 -0
  315. data/lib/fern_gusto/reports/types/reports_create_request_employment_type.rb +16 -0
  316. data/lib/fern_gusto/reports/types/reports_create_request_file_type.rb +13 -0
  317. data/lib/fern_gusto/reports/types/reports_create_request_groupings_item.rb +14 -0
  318. data/lib/fern_gusto/reports/types/reports_create_request_payment_method.rb +13 -0
  319. data/lib/fern_gusto/signatories/types/signatory.rb +175 -0
  320. data/lib/fern_gusto/signatories/types/signatory_home_address.rb +93 -0
  321. data/lib/fern_gusto/signatories/types/signatory_identity_verification_status.rb +28 -0
  322. data/lib/fern_gusto/terminations/types/termination.rb +109 -0
  323. data/lib/fern_gusto/time_off_policies/client.rb +863 -0
  324. data/lib/fern_gusto/time_off_policies/types/time_off_policies_add_employees_request_employees_item.rb +67 -0
  325. data/lib/fern_gusto/time_off_policies/types/time_off_policies_create_request_accrual_method.rb +19 -0
  326. data/lib/fern_gusto/time_off_policies/types/time_off_policies_remove_employees_request_employees_item.rb +57 -0
  327. data/lib/fern_gusto/time_off_policies/types/time_off_policies_update_balance_request_employees_item.rb +67 -0
  328. data/lib/fern_gusto/time_off_policies/types/time_off_policies_update_request_accrual_method.rb +19 -0
  329. data/lib/fern_gusto/time_off_requests/types/time_off_request.rb +141 -0
  330. data/lib/fern_gusto/time_off_requests/types/time_off_request_approver.rb +66 -0
  331. data/lib/fern_gusto/time_off_requests/types/time_off_request_employee.rb +66 -0
  332. data/lib/fern_gusto/time_off_requests/types/time_off_request_initiator.rb +66 -0
  333. data/lib/fern_gusto/time_off_requests/types/time_off_request_request_type.rb +13 -0
  334. data/lib/fern_gusto/time_off_requests/types/time_off_request_status.rb +14 -0
  335. data/lib/fern_gusto/token/client.rb +270 -0
  336. data/lib/fern_gusto/token/types/token_get_info_response.rb +85 -0
  337. data/lib/fern_gusto/token/types/token_get_info_response_resource.rb +64 -0
  338. data/lib/fern_gusto/token/types/token_get_info_response_resource_owner.rb +65 -0
  339. data/lib/fern_gusto/token/types/token_get_info_response_resource_owner_type.rb +13 -0
  340. data/lib/fern_gusto/token/types/token_get_system_access_token_response.rb +77 -0
  341. data/lib/fern_gusto/types/accruing_time_off_hour.rb +64 -0
  342. data/lib/fern_gusto/types/ach_transaction.rb +162 -0
  343. data/lib/fern_gusto/types/ach_transaction_payment_direction.rb +11 -0
  344. data/lib/fern_gusto/types/ach_transaction_payment_event_type.rb +11 -0
  345. data/lib/fern_gusto/types/ach_transaction_payment_status.rb +13 -0
  346. data/lib/fern_gusto/types/ach_transaction_recipient_type.rb +11 -0
  347. data/lib/fern_gusto/types/address.rb +111 -0
  348. data/lib/fern_gusto/types/authentication.rb +96 -0
  349. data/lib/fern_gusto/types/child_support_data.rb +58 -0
  350. data/lib/fern_gusto/types/child_support_data_agencies_item.rb +104 -0
  351. data/lib/fern_gusto/types/child_support_data_agencies_item_fips_codes_item.rb +67 -0
  352. data/lib/fern_gusto/types/child_support_data_agencies_item_required_attributes_item.rb +70 -0
  353. data/lib/fern_gusto/types/child_support_data_agencies_item_required_attributes_item_key.rb +14 -0
  354. data/lib/fern_gusto/types/company_benefit.rb +135 -0
  355. data/lib/fern_gusto/types/company_benefit_with_employee_benefits.rb +148 -0
  356. data/lib/fern_gusto/types/company_benefit_with_employee_benefits_employee_benefits_item.rb +115 -0
  357. data/lib/fern_gusto/types/company_benefit_with_employee_benefits_employee_benefits_item_contribution.rb +91 -0
  358. data/lib/fern_gusto/types/company_benefit_with_employee_benefits_employee_benefits_item_contribution_value.rb +61 -0
  359. data/lib/fern_gusto/types/company_benefit_with_employee_benefits_employee_benefits_item_contribution_value_tiers.rb +60 -0
  360. data/lib/fern_gusto/types/company_benefit_with_employee_benefits_employee_benefits_item_contribution_value_tiers_tiers_item.rb +86 -0
  361. data/lib/fern_gusto/types/contractor_address_info.rb +118 -0
  362. data/lib/fern_gusto/types/contractor_body.rb +200 -0
  363. data/lib/fern_gusto/types/contractor_body_type.rb +11 -0
  364. data/lib/fern_gusto/types/contractor_body_wage_type.rb +11 -0
  365. data/lib/fern_gusto/types/contractor_payment_receipt.rb +161 -0
  366. data/lib/fern_gusto/types/contractor_payment_receipt_contractor_payments_item.rb +120 -0
  367. data/lib/fern_gusto/types/contractor_payment_receipt_licensee.rb +92 -0
  368. data/lib/fern_gusto/types/contractor_payment_receipt_totals.rb +54 -0
  369. data/lib/fern_gusto/types/create_report.rb +77 -0
  370. data/lib/fern_gusto/types/department.rb +103 -0
  371. data/lib/fern_gusto/types/department_contractors_item.rb +53 -0
  372. data/lib/fern_gusto/types/department_employees_item.rb +53 -0
  373. data/lib/fern_gusto/types/document_pdf.rb +63 -0
  374. data/lib/fern_gusto/types/employee_address.rb +139 -0
  375. data/lib/fern_gusto/types/employee_benefit.rb +220 -0
  376. data/lib/fern_gusto/types/employee_benefit_base_object.rb +199 -0
  377. data/lib/fern_gusto/types/employee_benefit_base_object_contribution.rb +89 -0
  378. data/lib/fern_gusto/types/employee_benefit_base_object_contribution_value.rb +61 -0
  379. data/lib/fern_gusto/types/employee_benefit_base_object_contribution_value_tiers.rb +59 -0
  380. data/lib/fern_gusto/types/employee_benefit_base_object_contribution_value_tiers_tiers_item.rb +85 -0
  381. data/lib/fern_gusto/types/employee_benefit_base_object_deduction_reduces_taxable_income.rb +14 -0
  382. data/lib/fern_gusto/types/employee_benefit_for_company_benefit.rb +220 -0
  383. data/lib/fern_gusto/types/employee_work_address.rb +137 -0
  384. data/lib/fern_gusto/types/entity_error_object.rb +102 -0
  385. data/lib/fern_gusto/types/entity_error_object_errors_item.rb +89 -0
  386. data/lib/fern_gusto/types/event.rb +99 -0
  387. data/lib/fern_gusto/types/flsa_status_type.rb +23 -0
  388. data/lib/fern_gusto/types/form_pdf.rb +63 -0
  389. data/lib/fern_gusto/types/garnishment.rb +172 -0
  390. data/lib/fern_gusto/types/garnishment_child_support.rb +113 -0
  391. data/lib/fern_gusto/types/garnishment_child_support_payment_period.rb +14 -0
  392. data/lib/fern_gusto/types/garnishment_garnishment_type.rb +16 -0
  393. data/lib/fern_gusto/types/generated_document.rb +70 -0
  394. data/lib/fern_gusto/types/gross_up_pay.rb +53 -0
  395. data/lib/fern_gusto/types/historical_employee_body.rb +156 -0
  396. data/lib/fern_gusto/types/historical_employee_body_employee_state_taxes.rb +80 -0
  397. data/lib/fern_gusto/types/historical_employee_body_home_address.rb +84 -0
  398. data/lib/fern_gusto/types/historical_employee_body_job.rb +53 -0
  399. data/lib/fern_gusto/types/historical_employee_body_termination.rb +53 -0
  400. data/lib/fern_gusto/types/historical_employee_body_work_address.rb +53 -0
  401. data/lib/fern_gusto/types/holiday_pay_policy.rb +88 -0
  402. data/lib/fern_gusto/types/holiday_pay_policy_employees_item.rb +53 -0
  403. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item.rb +179 -0
  404. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_columbus_day.rb +72 -0
  405. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_independence_day.rb +72 -0
  406. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_juneteenth.rb +72 -0
  407. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_labor_day.rb +72 -0
  408. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_memorial_day.rb +72 -0
  409. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_mlk_day.rb +72 -0
  410. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_new_years_day.rb +72 -0
  411. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_presidents_day.rb +72 -0
  412. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_thanksgiving.rb +72 -0
  413. data/lib/fern_gusto/types/holiday_pay_policy_federal_holidays_item_veterans_day.rb +72 -0
  414. data/lib/fern_gusto/types/invoice_data.rb +58 -0
  415. data/lib/fern_gusto/types/invoice_data_active_companies_item.rb +91 -0
  416. data/lib/fern_gusto/types/minimum_wage.rb +96 -0
  417. data/lib/fern_gusto/types/notification.rb +125 -0
  418. data/lib/fern_gusto/types/notification_resources_item.rb +85 -0
  419. data/lib/fern_gusto/types/off_cycle_reason_type.rb +19 -0
  420. data/lib/fern_gusto/types/paid_holidays.rb +61 -0
  421. data/lib/fern_gusto/types/paid_holidays_schema.rb +77 -0
  422. data/lib/fern_gusto/types/pay_schedule_assignment_body.rb +111 -0
  423. data/lib/fern_gusto/types/pay_schedule_assignment_body_departments_item.rb +65 -0
  424. data/lib/fern_gusto/types/pay_schedule_assignment_body_employees_item.rb +64 -0
  425. data/lib/fern_gusto/types/pay_schedule_assignment_body_type.rb +13 -0
  426. data/lib/fern_gusto/types/payment_method_bank_account.rb +87 -0
  427. data/lib/fern_gusto/types/payroll_blocker.rb +63 -0
  428. data/lib/fern_gusto/types/payroll_blockers_error.rb +60 -0
  429. data/lib/fern_gusto/types/payroll_blockers_error_errors_item.rb +83 -0
  430. data/lib/fern_gusto/types/payroll_blockers_error_errors_item_metadata.rb +54 -0
  431. data/lib/fern_gusto/types/payroll_check.rb +84 -0
  432. data/lib/fern_gusto/types/payroll_company_taxes_type.rb +6 -0
  433. data/lib/fern_gusto/types/payroll_company_taxes_type_item.rb +70 -0
  434. data/lib/fern_gusto/types/payroll_credit_blockers_type.rb +6 -0
  435. data/lib/fern_gusto/types/payroll_credit_blockers_type_item.rb +89 -0
  436. data/lib/fern_gusto/types/payroll_credit_blockers_type_item_status.rb +13 -0
  437. data/lib/fern_gusto/types/payroll_credit_blockers_type_item_unblock_options_item.rb +72 -0
  438. data/lib/fern_gusto/types/payroll_employee_compensations_type.rb +6 -0
  439. data/lib/fern_gusto/types/payroll_employee_compensations_type_item.rb +216 -0
  440. data/lib/fern_gusto/types/payroll_employee_compensations_type_item_benefits_item.rb +79 -0
  441. data/lib/fern_gusto/types/payroll_employee_compensations_type_item_deductions_item.rb +65 -0
  442. data/lib/fern_gusto/types/payroll_employee_compensations_type_item_fixed_compensations_item.rb +74 -0
  443. data/lib/fern_gusto/types/payroll_employee_compensations_type_item_hourly_compensations_item.rb +92 -0
  444. data/lib/fern_gusto/types/payroll_employee_compensations_type_item_paid_time_off_item.rb +76 -0
  445. data/lib/fern_gusto/types/payroll_employee_compensations_type_item_payment_method.rb +11 -0
  446. data/lib/fern_gusto/types/payroll_employee_compensations_type_item_taxes_item.rb +70 -0
  447. data/lib/fern_gusto/types/payroll_fixed_compensation_types_type.rb +6 -0
  448. data/lib/fern_gusto/types/payroll_fixed_compensation_types_type_item.rb +54 -0
  449. data/lib/fern_gusto/types/payroll_pay_period_type.rb +70 -0
  450. data/lib/fern_gusto/types/payroll_payment_speed_changed_type.rb +86 -0
  451. data/lib/fern_gusto/types/payroll_payroll_status_meta_type.rb +92 -0
  452. data/lib/fern_gusto/types/payroll_processing_request.rb +68 -0
  453. data/lib/fern_gusto/types/payroll_processing_request_status.rb +14 -0
  454. data/lib/fern_gusto/types/payroll_receipt.rb +177 -0
  455. data/lib/fern_gusto/types/payroll_receipt_employee_compensations_item.rb +116 -0
  456. data/lib/fern_gusto/types/payroll_receipt_licensee.rb +92 -0
  457. data/lib/fern_gusto/types/payroll_receipt_taxes_item.rb +63 -0
  458. data/lib/fern_gusto/types/payroll_receipt_totals.rb +85 -0
  459. data/lib/fern_gusto/types/payroll_reversal.rb +91 -0
  460. data/lib/fern_gusto/types/payroll_submission_blockers_type.rb +6 -0
  461. data/lib/fern_gusto/types/payroll_submission_blockers_type_item.rb +89 -0
  462. data/lib/fern_gusto/types/payroll_submission_blockers_type_item_status.rb +11 -0
  463. data/lib/fern_gusto/types/payroll_submission_blockers_type_item_unblock_options_item.rb +72 -0
  464. data/lib/fern_gusto/types/payroll_totals_type.rb +199 -0
  465. data/lib/fern_gusto/types/payroll_withholding_pay_period_type.rb +17 -0
  466. data/lib/fern_gusto/types/recovery_case.rb +131 -0
  467. data/lib/fern_gusto/types/recovery_case_status.rb +14 -0
  468. data/lib/fern_gusto/types/rehire.rb +116 -0
  469. data/lib/fern_gusto/types/rehire_body.rb +91 -0
  470. data/lib/fern_gusto/types/rehire_body_employment_status.rb +16 -0
  471. data/lib/fern_gusto/types/rehire_employment_status.rb +16 -0
  472. data/lib/fern_gusto/types/report.rb +72 -0
  473. data/lib/fern_gusto/types/report_template.rb +77 -0
  474. data/lib/fern_gusto/types/supported_benefit.rb +122 -0
  475. data/lib/fern_gusto/types/tax_requirement.rb +111 -0
  476. data/lib/fern_gusto/types/tax_requirement_applicable_if_item.rb +69 -0
  477. data/lib/fern_gusto/types/tax_requirement_applicable_if_item_value.rb +72 -0
  478. data/lib/fern_gusto/types/tax_requirement_effective_from.rb +5 -0
  479. data/lib/fern_gusto/types/tax_requirement_metadata.rb +182 -0
  480. data/lib/fern_gusto/types/tax_requirement_metadata_options_item.rb +70 -0
  481. data/lib/fern_gusto/types/tax_requirement_metadata_rate_type.rb +13 -0
  482. data/lib/fern_gusto/types/tax_requirement_metadata_type.rb +31 -0
  483. data/lib/fern_gusto/types/tax_requirement_metadata_validation.rb +81 -0
  484. data/lib/fern_gusto/types/tax_requirement_metadata_validation_type.rb +11 -0
  485. data/lib/fern_gusto/types/tax_requirement_set.rb +90 -0
  486. data/lib/fern_gusto/types/tax_requirements_state.rb +75 -0
  487. data/lib/fern_gusto/types/time_off_activity.rb +107 -0
  488. data/lib/fern_gusto/types/time_off_activity_time_off_type.rb +11 -0
  489. data/lib/fern_gusto/types/time_off_policy.rb +183 -0
  490. data/lib/fern_gusto/types/time_off_policy_employees_item.rb +53 -0
  491. data/lib/fern_gusto/types/time_off_policy_policy_type.rb +11 -0
  492. data/lib/fern_gusto/types/unprocessable_entity_error_body.rb +59 -0
  493. data/lib/fern_gusto/types/unprocessable_entity_error_body_errors.rb +57 -0
  494. data/lib/fern_gusto/types/unprocessable_entity_error_body_errors_base_item.rb +72 -0
  495. data/lib/fern_gusto/types/unprocessable_entity_error_body_item.rb +65 -0
  496. data/lib/fern_gusto/types/unprocessable_entity_error_body_item_questions_item.rb +69 -0
  497. data/lib/fern_gusto/types/unprocessable_entity_error_body_item_questions_item_answers_item.rb +72 -0
  498. data/lib/fern_gusto/types/unprocessable_entity_error_object.rb +63 -0
  499. data/lib/fern_gusto/types/versionable.rb +57 -0
  500. data/lib/fern_gusto/types/versionable_required.rb +55 -0
  501. data/lib/fern_gusto/types/wire_in_request.rb +170 -0
  502. data/lib/fern_gusto/types/wire_in_request_status.rb +14 -0
  503. data/lib/fern_gusto/webhooks/client.rb +627 -0
  504. data/lib/fern_gusto/webhooks/types/webhook_subscription.rb +82 -0
  505. data/lib/fern_gusto/webhooks/types/webhook_subscription_status.rb +14 -0
  506. data/lib/fern_gusto/webhooks/types/webhook_subscription_subscription_types_item.rb +25 -0
  507. data/lib/fern_gusto/webhooks/types/webhooks_create_request_subscription_types_item.rb +25 -0
  508. data/lib/fern_gusto/webhooks/types/webhooks_update_request_subscription_types_item.rb +25 -0
  509. data/lib/fern_gusto/wire_in_requests/client.rb +273 -0
  510. data/lib/fern_gusto.rb +310 -0
  511. data/lib/gemconfig.rb +13 -0
  512. data/lib/gusto_legacy.rb +19 -0
  513. data/lib/requests.rb +206 -0
  514. data/lib/types_export.rb +461 -0
  515. metadata +671 -0
@@ -0,0 +1,1025 @@
1
+ # frozen_string_literal: true
2
+ require_relative "../../requests"
3
+ require_relative "payment_method/client"
4
+ require_relative "forms/client"
5
+ require_relative "documents/client"
6
+ require_relative "payments/client"
7
+ require_relative "payment_groups/client"
8
+ require_relative "types/contractor"
9
+ require "json"
10
+ require_relative "../types/contractor_body"
11
+ require_relative "../types/contractor_body_type"
12
+ require_relative "../types/contractor_body_wage_type"
13
+ require_relative "../contractor/types/contractor_onboarding_info"
14
+ require_relative "../types/contractor_address_info"
15
+ require "async"
16
+ require "async"
17
+ require "async"
18
+ require "async"
19
+ require "async"
20
+ require "async"
21
+ require "async"
22
+ require "async"
23
+ require "async"
24
+ require_relative "../../requests"
25
+
26
+ module Gusto
27
+ class ContractorsClient
28
+ # @return [Gusto::RequestClient]
29
+ attr_reader :request_client
30
+ # @return [Gusto::Contractors::PaymentMethodClient]
31
+ attr_reader :payment_method
32
+ # @return [Gusto::Contractors::FormsClient]
33
+ attr_reader :forms
34
+ # @return [Gusto::Contractors::DocumentsClient]
35
+ attr_reader :documents
36
+ # @return [Gusto::Contractors::PaymentsClient]
37
+ attr_reader :payments
38
+ # @return [Gusto::Contractors::PaymentGroupsClient]
39
+ attr_reader :payment_groups
40
+
41
+
42
+ # @param request_client [Gusto::RequestClient]
43
+ # @return [Gusto::ContractorsClient]
44
+ def initialize(request_client:)
45
+ @request_client = request_client
46
+ @payment_method = Gusto::Contractors::PaymentMethodClient.new(request_client: request_client)
47
+ @forms = Gusto::Contractors::FormsClient.new(request_client: request_client)
48
+ @documents = Gusto::Contractors::DocumentsClient.new(request_client: request_client)
49
+ @payments = Gusto::Contractors::PaymentsClient.new(request_client: request_client)
50
+ @payment_groups = Gusto::Contractors::PaymentGroupsClient.new(request_client: request_client)
51
+ end
52
+ # Get all contractors, active and inactive, individual and business, for a
53
+ # company.
54
+ # scope: `contractors:read`
55
+ #
56
+ # @param company_id [String] The UUID of the company
57
+ # @param page [Float] The page that is requested. When unspecified, will load all objects unless
58
+ # endpoint forces pagination.
59
+ # @param per [Float] Number of objects per page. For majority of endpoints will default to 25
60
+ # @param search_term [String] A string to search for in the object's names
61
+ # @param request_options [Gusto::RequestOptions]
62
+ # @return [Array<Gusto::Contractors::Contractor>]
63
+ # @example
64
+ # api = Gusto::Client.new(
65
+ # base_url: "https://api.example.com",
66
+ # environment: Gusto::Environment::DEMO,
67
+ # token: "YOUR_AUTH_TOKEN"
68
+ # )
69
+ # api.contractors.list(company_id: "company_id")
70
+ def list(company_id:, page: nil, per: nil, search_term: nil, request_options: nil)
71
+ response = @request_client.conn.get do | req |
72
+ unless request_options&.timeout_in_seconds.nil?
73
+ req.options.timeout = request_options.timeout_in_seconds
74
+ end
75
+ unless request_options&.token.nil?
76
+ req.headers["Authorization"] = request_options.token
77
+ end
78
+ unless request_options&.gusto_api_version.nil?
79
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
80
+ end
81
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
82
+ req.params = { **(request_options&.additional_query_parameters || {}), "page": page, "per": per, "search_term": search_term }.compact
83
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
84
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
85
+ end
86
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/contractors"
87
+ end
88
+ parsed_json = JSON.parse(response.body)
89
+ parsed_json&.map do | item |
90
+ item = item.to_json
91
+ Gusto::Contractors::Contractor.from_json(json_object: item)
92
+ end
93
+ end
94
+ # Create an individual or business contractor.
95
+ # scope: `contractors:manage`
96
+ #
97
+ # @param company_id [String] The UUID of the company
98
+ # @param request [Hash] Request of type Gusto::ContractorBody, as a Hash
99
+ # * :type (Gusto::ContractorBodyType)
100
+ # * :wage_type (Gusto::ContractorBodyWageType)
101
+ # * :start_date (String)
102
+ # * :hourly_rate (String)
103
+ # * :self_onboarding (Boolean)
104
+ # * :email (String)
105
+ # * :first_name (String)
106
+ # * :last_name (String)
107
+ # * :middle_initial (String)
108
+ # * :file_new_hire_report (Boolean)
109
+ # * :work_state (String)
110
+ # * :ssn (String)
111
+ # * :business_name (String)
112
+ # * :ein (String)
113
+ # * :is_active (Boolean)
114
+ # @param request_options [Gusto::RequestOptions]
115
+ # @return [Gusto::Contractors::Contractor]
116
+ # @example
117
+ # api = Gusto::Client.new(
118
+ # base_url: "https://api.example.com",
119
+ # environment: Gusto::Environment::DEMO,
120
+ # token: "YOUR_AUTH_TOKEN"
121
+ # )
122
+ # api.contractors.create(company_id: "company_id", request: { type: INDIVIDUAL, wage_type: FIXED, start_date: "2020-04-01", self_onboarding: true, email: "johnson@johnson.com", first_name: "Johnson", last_name: "Johnson", file_new_hire_report: true, work_state: "CA" })
123
+ def create(company_id:, request:, request_options: nil)
124
+ response = @request_client.conn.post do | req |
125
+ unless request_options&.timeout_in_seconds.nil?
126
+ req.options.timeout = request_options.timeout_in_seconds
127
+ end
128
+ unless request_options&.token.nil?
129
+ req.headers["Authorization"] = request_options.token
130
+ end
131
+ unless request_options&.gusto_api_version.nil?
132
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
133
+ end
134
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
135
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
136
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
137
+ end
138
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
139
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/contractors"
140
+ end
141
+ Gusto::Contractors::Contractor.from_json(json_object: response.body)
142
+ end
143
+ # Get a contractor.
144
+ # scope: `contractors:read`
145
+ #
146
+ # @param contractor_id [String] The UUID of the contractor
147
+ # @param request_options [Gusto::RequestOptions]
148
+ # @return [Gusto::Contractors::Contractor]
149
+ # @example
150
+ # api = Gusto::Client.new(
151
+ # base_url: "https://api.example.com",
152
+ # environment: Gusto::Environment::DEMO,
153
+ # token: "YOUR_AUTH_TOKEN"
154
+ # )
155
+ # api.contractors.get(contractor_id: "contractor_id")
156
+ def get(contractor_id:, request_options: nil)
157
+ response = @request_client.conn.get do | req |
158
+ unless request_options&.timeout_in_seconds.nil?
159
+ req.options.timeout = request_options.timeout_in_seconds
160
+ end
161
+ unless request_options&.token.nil?
162
+ req.headers["Authorization"] = request_options.token
163
+ end
164
+ unless request_options&.gusto_api_version.nil?
165
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
166
+ end
167
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
168
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
169
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
170
+ end
171
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
172
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
173
+ end
174
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_id}"
175
+ end
176
+ Gusto::Contractors::Contractor.from_json(json_object: response.body)
177
+ end
178
+ # Update a contractor.
179
+ # scope: `contractors:write`
180
+ # > 🚧 Warning
181
+ # >
182
+ # > Watch out when changing a contractor's type (when the contractor is finished
183
+ # onboarding). Specifically, changing contractor type can be dangerous since Gusto
184
+ # won’t recognize and file two separate 1099s if they simply change from business
185
+ # to individual
186
+ #
187
+ # @param contractor_id [String] The UUID of the contractor
188
+ # @param version [String] The current version of the object. See the [versioning
189
+ # guide](https://docs.gusto.com/embedded-payroll/docs/idempotency) for information
190
+ # on how to use this field.
191
+ # @param type [Gusto::ContractorBodyType] The contractor type.
192
+ # @param wage_type [Gusto::ContractorBodyWageType] The contractor’s wage type.
193
+ # @param start_date [String] The day when the contractor will start working for the company.
194
+ # @param hourly_rate [String] The contractor’s hourly rate. This attribute is required if the wage_type is
195
+ # `Hourly`.
196
+ # @param self_onboarding [Boolean] Whether the contractor or the payroll admin will complete onboarding in Gusto.
197
+ # Self-onboarding is recommended so that contractors receive Gusto accounts.
198
+ # If self_onboarding is true, then email is required.
199
+ # @param email [String] The contractor’s email address.
200
+ # @param first_name [String] The contractor’s first name.
201
+ # This attribute is required for `Individual` contractors and will be ignored for
202
+ # `Business` contractors.
203
+ # @param last_name [String] The contractor’s last name.
204
+ # This attribute is required for `Individual` contractors and will be ignored for
205
+ # `Business` contractors.
206
+ # @param middle_initial [String] The contractor’s middle initial.
207
+ # This attribute is optional for `Individual` contractors and will be ignored for
208
+ # `Business` contractors.
209
+ # @param file_new_hire_report [Boolean] The boolean flag indicating whether Gusto will file a new hire report for the
210
+ # contractor.
211
+ # This attribute is optional for `Individual` contractors and will be ignored for
212
+ # `Business` contractors.
213
+ # @param work_state [String] State where the contractor will be conducting the majority of their work for the
214
+ # company.
215
+ # This value is used when generating the new hire report.
216
+ # This attribute is required for `Individual` contractors if
217
+ # `file_new_hire_report` is true and will be ignored for `Business` contractors.
218
+ # @param ssn [String] This attribute is optional for `Individual` contractors and will be ignored for
219
+ # `Business` contractors.
220
+ # Social security number is needed to file the annual 1099 tax form.
221
+ # @param business_name [String] The name of the contractor business. This attribute is required for `Business`
222
+ # contractors and will be ignored for `Individual` contractors.
223
+ # @param ein [String] The employer identification number of the contractor business.
224
+ # This attribute is optional for `Business` contractors and will be ignored for
225
+ # `Individual` contractors.
226
+ # @param is_active [Boolean] The status of the contractor. If the contractor's start date is in the future,
227
+ # updating this field to true means we are setting the start date to today.
228
+ # @param request_options [Gusto::RequestOptions]
229
+ # @return [Gusto::Contractors::Contractor]
230
+ # @example
231
+ # api = Gusto::Client.new(
232
+ # base_url: "https://api.example.com",
233
+ # environment: Gusto::Environment::DEMO,
234
+ # token: "YOUR_AUTH_TOKEN"
235
+ # )
236
+ # api.contractors.update(contractor_id: "contractor_id")
237
+ def update(contractor_id:, version:, type: nil, wage_type: nil, start_date: nil, hourly_rate: nil, self_onboarding: nil, email: nil, first_name: nil, last_name: nil, middle_initial: nil, file_new_hire_report: nil, work_state: nil, ssn: nil, business_name: nil, ein: nil, is_active: nil, request_options: nil)
238
+ response = @request_client.conn.put do | req |
239
+ unless request_options&.timeout_in_seconds.nil?
240
+ req.options.timeout = request_options.timeout_in_seconds
241
+ end
242
+ unless request_options&.token.nil?
243
+ req.headers["Authorization"] = request_options.token
244
+ end
245
+ unless request_options&.gusto_api_version.nil?
246
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
247
+ end
248
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
249
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
250
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
251
+ end
252
+ req.body = { **(request_options&.additional_body_parameters || {}), version: version, type: type, wage_type: wage_type, start_date: start_date, hourly_rate: hourly_rate, self_onboarding: self_onboarding, email: email, first_name: first_name, last_name: last_name, middle_initial: middle_initial, file_new_hire_report: file_new_hire_report, work_state: work_state, ssn: ssn, business_name: business_name, ein: ein, is_active: is_active }.compact
253
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_id}"
254
+ end
255
+ Gusto::Contractors::Contractor.from_json(json_object: response.body)
256
+ end
257
+ # A contractor can only be deleted when there are no contractor payments.
258
+ # scope: `contractors:manage`
259
+ #
260
+ # @param contractor_id [String] The UUID of the contractor
261
+ # @param request_options [Gusto::RequestOptions]
262
+ # @return [Void]
263
+ # @example
264
+ # api = Gusto::Client.new(
265
+ # base_url: "https://api.example.com",
266
+ # environment: Gusto::Environment::DEMO,
267
+ # token: "YOUR_AUTH_TOKEN"
268
+ # )
269
+ # api.contractors.delete(contractor_id: "contractor_id")
270
+ def delete(contractor_id:, request_options: nil)
271
+ response = @request_client.conn.delete do | req |
272
+ unless request_options&.timeout_in_seconds.nil?
273
+ req.options.timeout = request_options.timeout_in_seconds
274
+ end
275
+ unless request_options&.token.nil?
276
+ req.headers["Authorization"] = request_options.token
277
+ end
278
+ unless request_options&.gusto_api_version.nil?
279
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
280
+ end
281
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
282
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
283
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
284
+ end
285
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
286
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
287
+ end
288
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_id}"
289
+ end
290
+ end
291
+ # Retrieves a contractor's onboarding status. The data returned helps inform the
292
+ # required onboarding steps and respective completion status.
293
+ # scope: `contractors:read`
294
+ # ## onboarding_status
295
+ # ### Admin-facilitated onboarding
296
+ # | onboarding_status |
297
+ # Description |
298
+ # | :---------------------------- |
299
+ # ------------------------------------------------------------------------: |
300
+ # | `admin_onboarding_incomplete` | Admin needs to enter basic
301
+ # information about the contractor. |
302
+ # | `admin_onboarding_review` | All information has been completed and admin
303
+ # needs to confirm onboarding. |
304
+ # | `onboarding_completed` | Contractor has been
305
+ # fully onboarded and verified. |
306
+ # ### Contractor self-onboarding
307
+ # | onboarding_status | Description
308
+ # |
309
+ # | ----------------------------- |
310
+ # --------------------------------------------------------------------------------
311
+ # |
312
+ # | `admin_onboarding_incomplete` | Admin needs to enter basic information about
313
+ # the contractor.
314
+ # |
315
+ # | `self_onboarding_not_invited` | Admin has the intention to invite the
316
+ # contractor to self-onboard (e.g., marking a checkbox), but the system has not
317
+ # yet sent the invitation. |
318
+ # | `self_onboarding_invited` | Contractor has been sent an invitation to
319
+ # self-onboard.
320
+ # |
321
+ # | `self_onboarding_started` | Contractor has started the self-onboarding
322
+ # process.
323
+ # |
324
+ # | `self_onboarding_review` | Admin needs to review contractors's entered
325
+ # information and confirm onboarding.
326
+ # |
327
+ # | `onboarding_completed` | Contractor has been fully onboarded and
328
+ # verified.
329
+ # |
330
+ # ## onboarding_steps
331
+ # | onboarding_steps |
332
+ # Requirement(s) to be completed |
333
+ # | :--------------------- |
334
+ # -------------------------------------------------------------------------------:
335
+ # |
336
+ # | `basic_details` | Add individual contractor's first name, last name,
337
+ # social security number or Business name and EIN depending on the contractor type
338
+ # |
339
+ # | `add_address` |
340
+ # Add contractor address. |
341
+ # | `compensation_details` |
342
+ # Add contractor compensation. |
343
+ # | `payment_details` |
344
+ # Set up contractor's direct deposit or set to check. |
345
+ # | `sign_documents` |
346
+ # Contractor forms (e.g., W9) are generated & signed. |
347
+ # | `file_new_hire_report` |
348
+ # Contractor new hire report is generated. |
349
+ #
350
+ # @param contractor_uuid [String] The UUID of the contractor
351
+ # @param request_options [Gusto::RequestOptions]
352
+ # @return [Gusto::Contractor::ContractorOnboardingInfo]
353
+ # @example
354
+ # api = Gusto::Client.new(
355
+ # base_url: "https://api.example.com",
356
+ # environment: Gusto::Environment::DEMO,
357
+ # token: "YOUR_AUTH_TOKEN"
358
+ # )
359
+ # api.contractors.get_onboarding_status(contractor_uuid: "contractor_uuid")
360
+ def get_onboarding_status(contractor_uuid:, request_options: nil)
361
+ response = @request_client.conn.get do | req |
362
+ unless request_options&.timeout_in_seconds.nil?
363
+ req.options.timeout = request_options.timeout_in_seconds
364
+ end
365
+ unless request_options&.token.nil?
366
+ req.headers["Authorization"] = request_options.token
367
+ end
368
+ unless request_options&.gusto_api_version.nil?
369
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
370
+ end
371
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
372
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
373
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
374
+ end
375
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
376
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
377
+ end
378
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_uuid}/onboarding_status"
379
+ end
380
+ Gusto::Contractor::ContractorOnboardingInfo.from_json(json_object: response.body)
381
+ end
382
+ # Updates a contractor's onboarding status.
383
+ # scope: `contractors:write`
384
+ # Below is a list of valid onboarding status changes depending on the intended
385
+ # action to be performed on behalf of the contractor.
386
+ # | Action | current
387
+ # onboarding_status | new onboarding_status |
388
+ # | :---------------------------------------- |
389
+ # :------------------------------------------------------------: |
390
+ # ----------------------------: |
391
+ # | Mark a contractor as self-onboarding |
392
+ # `admin_onboarding_incomplete` | `self_onboarding_not_invited` |
393
+ # | Invite a contractor to self-onboard | `admin_onboarding_incomplete` or
394
+ # `self_onboarding_not_invited` | `self_onboarding_invited` |
395
+ # | Cancel a contractor's self-onboarding | `self_onboarding_invited` or
396
+ # `self_onboarding_not_invited` | `admin_onboarding_incomplete` |
397
+ # | Review a contractor's self-onboarded info |
398
+ # `self_onboarding_started` | `self_onboarding_review` |
399
+ # | Finish a contractor's onboarding | `admin_onboarding_incomplete` or
400
+ # `self_onboarding_review` | `onboarding_completed` |
401
+ #
402
+ # @param contractor_uuid [String] The UUID of the contractor
403
+ # @param request_options [Gusto::RequestOptions]
404
+ # @return [Gusto::Contractor::ContractorOnboardingInfo]
405
+ # @example
406
+ # api = Gusto::Client.new(
407
+ # base_url: "https://api.example.com",
408
+ # environment: Gusto::Environment::DEMO,
409
+ # token: "YOUR_AUTH_TOKEN"
410
+ # )
411
+ # api.contractors.update_onboarding_status(contractor_uuid: "contractor_uuid")
412
+ def update_onboarding_status(contractor_uuid:, request_options: nil)
413
+ response = @request_client.conn.put do | req |
414
+ unless request_options&.timeout_in_seconds.nil?
415
+ req.options.timeout = request_options.timeout_in_seconds
416
+ end
417
+ unless request_options&.token.nil?
418
+ req.headers["Authorization"] = request_options.token
419
+ end
420
+ unless request_options&.gusto_api_version.nil?
421
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
422
+ end
423
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
424
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
425
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
426
+ end
427
+ req.body = { **(request_options&.additional_body_parameters || {}), "onboarding_status": "onboarding_completed" }.compact
428
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_uuid}/onboarding_status"
429
+ end
430
+ Gusto::Contractor::ContractorOnboardingInfo.from_json(json_object: response.body)
431
+ end
432
+ # The address of a contractor is used to determine certain tax information about
433
+ # them. Addresses are geocoded on create and update to ensure validity.
434
+ # scope: `contractors:read`
435
+ #
436
+ # @param contractor_uuid [String] The UUID of the contractor
437
+ # @param request_options [Gusto::RequestOptions]
438
+ # @return [Gusto::ContractorAddressInfo]
439
+ # @example
440
+ # api = Gusto::Client.new(
441
+ # base_url: "https://api.example.com",
442
+ # environment: Gusto::Environment::DEMO,
443
+ # token: "YOUR_AUTH_TOKEN"
444
+ # )
445
+ # api.contractors.get_address(contractor_uuid: "contractor_uuid")
446
+ def get_address(contractor_uuid:, request_options: nil)
447
+ response = @request_client.conn.get do | req |
448
+ unless request_options&.timeout_in_seconds.nil?
449
+ req.options.timeout = request_options.timeout_in_seconds
450
+ end
451
+ unless request_options&.token.nil?
452
+ req.headers["Authorization"] = request_options.token
453
+ end
454
+ unless request_options&.gusto_api_version.nil?
455
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
456
+ end
457
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
458
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
459
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
460
+ end
461
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
462
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
463
+ end
464
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_uuid}/address"
465
+ end
466
+ Gusto::ContractorAddressInfo.from_json(json_object: response.body)
467
+ end
468
+ # The address of a contractor is used to determine certain tax information about
469
+ # them. Addresses are geocoded on create and update to ensure validity.
470
+ # scope: `contractors:write`
471
+ #
472
+ # @param contractor_uuid [String] The UUID of the contractor
473
+ # @param version [String] The current version of the object. See the [versioning
474
+ # guide](https://docs.gusto.com/embedded-payroll/docs/idempotency) for information
475
+ # on how to use this field.
476
+ # @param street1 [String]
477
+ # @param street2 [String]
478
+ # @param city [String]
479
+ # @param state [String]
480
+ # @param zip [String]
481
+ # @param request_options [Gusto::RequestOptions]
482
+ # @return [Gusto::ContractorAddressInfo]
483
+ # @example
484
+ # api = Gusto::Client.new(
485
+ # base_url: "https://api.example.com",
486
+ # environment: Gusto::Environment::DEMO,
487
+ # token: "YOUR_AUTH_TOKEN"
488
+ # )
489
+ # api.contractors.update_address(
490
+ # contractor_uuid: "contractor_uuid",
491
+ # street1: "300 3rd Street",
492
+ # city: "San Francisco",
493
+ # state: "CA",
494
+ # zip: "94107"
495
+ # )
496
+ def update_address(contractor_uuid:, version:, street1: nil, street2: nil, city: nil, state: nil, zip: nil, request_options: nil)
497
+ response = @request_client.conn.put do | req |
498
+ unless request_options&.timeout_in_seconds.nil?
499
+ req.options.timeout = request_options.timeout_in_seconds
500
+ end
501
+ unless request_options&.token.nil?
502
+ req.headers["Authorization"] = request_options.token
503
+ end
504
+ unless request_options&.gusto_api_version.nil?
505
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
506
+ end
507
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
508
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
509
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
510
+ end
511
+ req.body = { **(request_options&.additional_body_parameters || {}), version: version, street_1: street1, street_2: street2, city: city, state: state, zip: zip }.compact
512
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_uuid}/address"
513
+ end
514
+ Gusto::ContractorAddressInfo.from_json(json_object: response.body)
515
+ end
516
+ end
517
+ class AsyncContractorsClient
518
+ # @return [Gusto::AsyncRequestClient]
519
+ attr_reader :request_client
520
+ # @return [Gusto::Contractors::PaymentMethodClient]
521
+ attr_reader :payment_method
522
+ # @return [Gusto::Contractors::FormsClient]
523
+ attr_reader :forms
524
+ # @return [Gusto::Contractors::DocumentsClient]
525
+ attr_reader :documents
526
+ # @return [Gusto::Contractors::PaymentsClient]
527
+ attr_reader :payments
528
+ # @return [Gusto::Contractors::PaymentGroupsClient]
529
+ attr_reader :payment_groups
530
+
531
+
532
+ # @param request_client [Gusto::RequestClient]
533
+ # @return [Gusto::AsyncContractorsClient]
534
+ def initialize(request_client:)
535
+ @request_client = request_client
536
+ @payment_method = Gusto::Contractors::AsyncPaymentMethodClient.new(request_client: request_client)
537
+ @forms = Gusto::Contractors::AsyncFormsClient.new(request_client: request_client)
538
+ @documents = Gusto::Contractors::AsyncDocumentsClient.new(request_client: request_client)
539
+ @payments = Gusto::Contractors::AsyncPaymentsClient.new(request_client: request_client)
540
+ @payment_groups = Gusto::Contractors::AsyncPaymentGroupsClient.new(request_client: request_client)
541
+ end
542
+ # Get all contractors, active and inactive, individual and business, for a
543
+ # company.
544
+ # scope: `contractors:read`
545
+ #
546
+ # @param company_id [String] The UUID of the company
547
+ # @param page [Float] The page that is requested. When unspecified, will load all objects unless
548
+ # endpoint forces pagination.
549
+ # @param per [Float] Number of objects per page. For majority of endpoints will default to 25
550
+ # @param search_term [String] A string to search for in the object's names
551
+ # @param request_options [Gusto::RequestOptions]
552
+ # @return [Array<Gusto::Contractors::Contractor>]
553
+ # @example
554
+ # api = Gusto::Client.new(
555
+ # base_url: "https://api.example.com",
556
+ # environment: Gusto::Environment::DEMO,
557
+ # token: "YOUR_AUTH_TOKEN"
558
+ # )
559
+ # api.contractors.list(company_id: "company_id")
560
+ def list(company_id:, page: nil, per: nil, search_term: nil, request_options: nil)
561
+ Async do
562
+ response = @request_client.conn.get do | req |
563
+ unless request_options&.timeout_in_seconds.nil?
564
+ req.options.timeout = request_options.timeout_in_seconds
565
+ end
566
+ unless request_options&.token.nil?
567
+ req.headers["Authorization"] = request_options.token
568
+ end
569
+ unless request_options&.gusto_api_version.nil?
570
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
571
+ end
572
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
573
+ req.params = { **(request_options&.additional_query_parameters || {}), "page": page, "per": per, "search_term": search_term }.compact
574
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
575
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
576
+ end
577
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/contractors"
578
+ end
579
+ parsed_json = JSON.parse(response.body)
580
+ parsed_json&.map do | item |
581
+ item = item.to_json
582
+ Gusto::Contractors::Contractor.from_json(json_object: item)
583
+ end
584
+ end
585
+ end
586
+ # Create an individual or business contractor.
587
+ # scope: `contractors:manage`
588
+ #
589
+ # @param company_id [String] The UUID of the company
590
+ # @param request [Hash] Request of type Gusto::ContractorBody, as a Hash
591
+ # * :type (Gusto::ContractorBodyType)
592
+ # * :wage_type (Gusto::ContractorBodyWageType)
593
+ # * :start_date (String)
594
+ # * :hourly_rate (String)
595
+ # * :self_onboarding (Boolean)
596
+ # * :email (String)
597
+ # * :first_name (String)
598
+ # * :last_name (String)
599
+ # * :middle_initial (String)
600
+ # * :file_new_hire_report (Boolean)
601
+ # * :work_state (String)
602
+ # * :ssn (String)
603
+ # * :business_name (String)
604
+ # * :ein (String)
605
+ # * :is_active (Boolean)
606
+ # @param request_options [Gusto::RequestOptions]
607
+ # @return [Gusto::Contractors::Contractor]
608
+ # @example
609
+ # api = Gusto::Client.new(
610
+ # base_url: "https://api.example.com",
611
+ # environment: Gusto::Environment::DEMO,
612
+ # token: "YOUR_AUTH_TOKEN"
613
+ # )
614
+ # api.contractors.create(company_id: "company_id", request: { type: INDIVIDUAL, wage_type: FIXED, start_date: "2020-04-01", self_onboarding: true, email: "johnson@johnson.com", first_name: "Johnson", last_name: "Johnson", file_new_hire_report: true, work_state: "CA" })
615
+ def create(company_id:, request:, request_options: nil)
616
+ Async do
617
+ response = @request_client.conn.post do | req |
618
+ unless request_options&.timeout_in_seconds.nil?
619
+ req.options.timeout = request_options.timeout_in_seconds
620
+ end
621
+ unless request_options&.token.nil?
622
+ req.headers["Authorization"] = request_options.token
623
+ end
624
+ unless request_options&.gusto_api_version.nil?
625
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
626
+ end
627
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
628
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
629
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
630
+ end
631
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
632
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/companies/#{company_id}/contractors"
633
+ end
634
+ Gusto::Contractors::Contractor.from_json(json_object: response.body)
635
+ end
636
+ end
637
+ # Get a contractor.
638
+ # scope: `contractors:read`
639
+ #
640
+ # @param contractor_id [String] The UUID of the contractor
641
+ # @param request_options [Gusto::RequestOptions]
642
+ # @return [Gusto::Contractors::Contractor]
643
+ # @example
644
+ # api = Gusto::Client.new(
645
+ # base_url: "https://api.example.com",
646
+ # environment: Gusto::Environment::DEMO,
647
+ # token: "YOUR_AUTH_TOKEN"
648
+ # )
649
+ # api.contractors.get(contractor_id: "contractor_id")
650
+ def get(contractor_id:, request_options: nil)
651
+ Async do
652
+ response = @request_client.conn.get do | req |
653
+ unless request_options&.timeout_in_seconds.nil?
654
+ req.options.timeout = request_options.timeout_in_seconds
655
+ end
656
+ unless request_options&.token.nil?
657
+ req.headers["Authorization"] = request_options.token
658
+ end
659
+ unless request_options&.gusto_api_version.nil?
660
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
661
+ end
662
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
663
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
664
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
665
+ end
666
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
667
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
668
+ end
669
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_id}"
670
+ end
671
+ Gusto::Contractors::Contractor.from_json(json_object: response.body)
672
+ end
673
+ end
674
+ # Update a contractor.
675
+ # scope: `contractors:write`
676
+ # > 🚧 Warning
677
+ # >
678
+ # > Watch out when changing a contractor's type (when the contractor is finished
679
+ # onboarding). Specifically, changing contractor type can be dangerous since Gusto
680
+ # won’t recognize and file two separate 1099s if they simply change from business
681
+ # to individual
682
+ #
683
+ # @param contractor_id [String] The UUID of the contractor
684
+ # @param version [String] The current version of the object. See the [versioning
685
+ # guide](https://docs.gusto.com/embedded-payroll/docs/idempotency) for information
686
+ # on how to use this field.
687
+ # @param type [Gusto::ContractorBodyType] The contractor type.
688
+ # @param wage_type [Gusto::ContractorBodyWageType] The contractor’s wage type.
689
+ # @param start_date [String] The day when the contractor will start working for the company.
690
+ # @param hourly_rate [String] The contractor’s hourly rate. This attribute is required if the wage_type is
691
+ # `Hourly`.
692
+ # @param self_onboarding [Boolean] Whether the contractor or the payroll admin will complete onboarding in Gusto.
693
+ # Self-onboarding is recommended so that contractors receive Gusto accounts.
694
+ # If self_onboarding is true, then email is required.
695
+ # @param email [String] The contractor’s email address.
696
+ # @param first_name [String] The contractor’s first name.
697
+ # This attribute is required for `Individual` contractors and will be ignored for
698
+ # `Business` contractors.
699
+ # @param last_name [String] The contractor’s last name.
700
+ # This attribute is required for `Individual` contractors and will be ignored for
701
+ # `Business` contractors.
702
+ # @param middle_initial [String] The contractor’s middle initial.
703
+ # This attribute is optional for `Individual` contractors and will be ignored for
704
+ # `Business` contractors.
705
+ # @param file_new_hire_report [Boolean] The boolean flag indicating whether Gusto will file a new hire report for the
706
+ # contractor.
707
+ # This attribute is optional for `Individual` contractors and will be ignored for
708
+ # `Business` contractors.
709
+ # @param work_state [String] State where the contractor will be conducting the majority of their work for the
710
+ # company.
711
+ # This value is used when generating the new hire report.
712
+ # This attribute is required for `Individual` contractors if
713
+ # `file_new_hire_report` is true and will be ignored for `Business` contractors.
714
+ # @param ssn [String] This attribute is optional for `Individual` contractors and will be ignored for
715
+ # `Business` contractors.
716
+ # Social security number is needed to file the annual 1099 tax form.
717
+ # @param business_name [String] The name of the contractor business. This attribute is required for `Business`
718
+ # contractors and will be ignored for `Individual` contractors.
719
+ # @param ein [String] The employer identification number of the contractor business.
720
+ # This attribute is optional for `Business` contractors and will be ignored for
721
+ # `Individual` contractors.
722
+ # @param is_active [Boolean] The status of the contractor. If the contractor's start date is in the future,
723
+ # updating this field to true means we are setting the start date to today.
724
+ # @param request_options [Gusto::RequestOptions]
725
+ # @return [Gusto::Contractors::Contractor]
726
+ # @example
727
+ # api = Gusto::Client.new(
728
+ # base_url: "https://api.example.com",
729
+ # environment: Gusto::Environment::DEMO,
730
+ # token: "YOUR_AUTH_TOKEN"
731
+ # )
732
+ # api.contractors.update(contractor_id: "contractor_id")
733
+ def update(contractor_id:, version:, type: nil, wage_type: nil, start_date: nil, hourly_rate: nil, self_onboarding: nil, email: nil, first_name: nil, last_name: nil, middle_initial: nil, file_new_hire_report: nil, work_state: nil, ssn: nil, business_name: nil, ein: nil, is_active: nil, request_options: nil)
734
+ Async do
735
+ response = @request_client.conn.put do | req |
736
+ unless request_options&.timeout_in_seconds.nil?
737
+ req.options.timeout = request_options.timeout_in_seconds
738
+ end
739
+ unless request_options&.token.nil?
740
+ req.headers["Authorization"] = request_options.token
741
+ end
742
+ unless request_options&.gusto_api_version.nil?
743
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
744
+ end
745
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
746
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
747
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
748
+ end
749
+ req.body = { **(request_options&.additional_body_parameters || {}), version: version, type: type, wage_type: wage_type, start_date: start_date, hourly_rate: hourly_rate, self_onboarding: self_onboarding, email: email, first_name: first_name, last_name: last_name, middle_initial: middle_initial, file_new_hire_report: file_new_hire_report, work_state: work_state, ssn: ssn, business_name: business_name, ein: ein, is_active: is_active }.compact
750
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_id}"
751
+ end
752
+ Gusto::Contractors::Contractor.from_json(json_object: response.body)
753
+ end
754
+ end
755
+ # A contractor can only be deleted when there are no contractor payments.
756
+ # scope: `contractors:manage`
757
+ #
758
+ # @param contractor_id [String] The UUID of the contractor
759
+ # @param request_options [Gusto::RequestOptions]
760
+ # @return [Void]
761
+ # @example
762
+ # api = Gusto::Client.new(
763
+ # base_url: "https://api.example.com",
764
+ # environment: Gusto::Environment::DEMO,
765
+ # token: "YOUR_AUTH_TOKEN"
766
+ # )
767
+ # api.contractors.delete(contractor_id: "contractor_id")
768
+ def delete(contractor_id:, request_options: nil)
769
+ Async do
770
+ response = @request_client.conn.delete do | req |
771
+ unless request_options&.timeout_in_seconds.nil?
772
+ req.options.timeout = request_options.timeout_in_seconds
773
+ end
774
+ unless request_options&.token.nil?
775
+ req.headers["Authorization"] = request_options.token
776
+ end
777
+ unless request_options&.gusto_api_version.nil?
778
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
779
+ end
780
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
781
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
782
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
783
+ end
784
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
785
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
786
+ end
787
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_id}"
788
+ end
789
+ end
790
+ end
791
+ # Retrieves a contractor's onboarding status. The data returned helps inform the
792
+ # required onboarding steps and respective completion status.
793
+ # scope: `contractors:read`
794
+ # ## onboarding_status
795
+ # ### Admin-facilitated onboarding
796
+ # | onboarding_status |
797
+ # Description |
798
+ # | :---------------------------- |
799
+ # ------------------------------------------------------------------------: |
800
+ # | `admin_onboarding_incomplete` | Admin needs to enter basic
801
+ # information about the contractor. |
802
+ # | `admin_onboarding_review` | All information has been completed and admin
803
+ # needs to confirm onboarding. |
804
+ # | `onboarding_completed` | Contractor has been
805
+ # fully onboarded and verified. |
806
+ # ### Contractor self-onboarding
807
+ # | onboarding_status | Description
808
+ # |
809
+ # | ----------------------------- |
810
+ # --------------------------------------------------------------------------------
811
+ # |
812
+ # | `admin_onboarding_incomplete` | Admin needs to enter basic information about
813
+ # the contractor.
814
+ # |
815
+ # | `self_onboarding_not_invited` | Admin has the intention to invite the
816
+ # contractor to self-onboard (e.g., marking a checkbox), but the system has not
817
+ # yet sent the invitation. |
818
+ # | `self_onboarding_invited` | Contractor has been sent an invitation to
819
+ # self-onboard.
820
+ # |
821
+ # | `self_onboarding_started` | Contractor has started the self-onboarding
822
+ # process.
823
+ # |
824
+ # | `self_onboarding_review` | Admin needs to review contractors's entered
825
+ # information and confirm onboarding.
826
+ # |
827
+ # | `onboarding_completed` | Contractor has been fully onboarded and
828
+ # verified.
829
+ # |
830
+ # ## onboarding_steps
831
+ # | onboarding_steps |
832
+ # Requirement(s) to be completed |
833
+ # | :--------------------- |
834
+ # -------------------------------------------------------------------------------:
835
+ # |
836
+ # | `basic_details` | Add individual contractor's first name, last name,
837
+ # social security number or Business name and EIN depending on the contractor type
838
+ # |
839
+ # | `add_address` |
840
+ # Add contractor address. |
841
+ # | `compensation_details` |
842
+ # Add contractor compensation. |
843
+ # | `payment_details` |
844
+ # Set up contractor's direct deposit or set to check. |
845
+ # | `sign_documents` |
846
+ # Contractor forms (e.g., W9) are generated & signed. |
847
+ # | `file_new_hire_report` |
848
+ # Contractor new hire report is generated. |
849
+ #
850
+ # @param contractor_uuid [String] The UUID of the contractor
851
+ # @param request_options [Gusto::RequestOptions]
852
+ # @return [Gusto::Contractor::ContractorOnboardingInfo]
853
+ # @example
854
+ # api = Gusto::Client.new(
855
+ # base_url: "https://api.example.com",
856
+ # environment: Gusto::Environment::DEMO,
857
+ # token: "YOUR_AUTH_TOKEN"
858
+ # )
859
+ # api.contractors.get_onboarding_status(contractor_uuid: "contractor_uuid")
860
+ def get_onboarding_status(contractor_uuid:, request_options: nil)
861
+ Async do
862
+ response = @request_client.conn.get do | req |
863
+ unless request_options&.timeout_in_seconds.nil?
864
+ req.options.timeout = request_options.timeout_in_seconds
865
+ end
866
+ unless request_options&.token.nil?
867
+ req.headers["Authorization"] = request_options.token
868
+ end
869
+ unless request_options&.gusto_api_version.nil?
870
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
871
+ end
872
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
873
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
874
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
875
+ end
876
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
877
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
878
+ end
879
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_uuid}/onboarding_status"
880
+ end
881
+ Gusto::Contractor::ContractorOnboardingInfo.from_json(json_object: response.body)
882
+ end
883
+ end
884
+ # Updates a contractor's onboarding status.
885
+ # scope: `contractors:write`
886
+ # Below is a list of valid onboarding status changes depending on the intended
887
+ # action to be performed on behalf of the contractor.
888
+ # | Action | current
889
+ # onboarding_status | new onboarding_status |
890
+ # | :---------------------------------------- |
891
+ # :------------------------------------------------------------: |
892
+ # ----------------------------: |
893
+ # | Mark a contractor as self-onboarding |
894
+ # `admin_onboarding_incomplete` | `self_onboarding_not_invited` |
895
+ # | Invite a contractor to self-onboard | `admin_onboarding_incomplete` or
896
+ # `self_onboarding_not_invited` | `self_onboarding_invited` |
897
+ # | Cancel a contractor's self-onboarding | `self_onboarding_invited` or
898
+ # `self_onboarding_not_invited` | `admin_onboarding_incomplete` |
899
+ # | Review a contractor's self-onboarded info |
900
+ # `self_onboarding_started` | `self_onboarding_review` |
901
+ # | Finish a contractor's onboarding | `admin_onboarding_incomplete` or
902
+ # `self_onboarding_review` | `onboarding_completed` |
903
+ #
904
+ # @param contractor_uuid [String] The UUID of the contractor
905
+ # @param request_options [Gusto::RequestOptions]
906
+ # @return [Gusto::Contractor::ContractorOnboardingInfo]
907
+ # @example
908
+ # api = Gusto::Client.new(
909
+ # base_url: "https://api.example.com",
910
+ # environment: Gusto::Environment::DEMO,
911
+ # token: "YOUR_AUTH_TOKEN"
912
+ # )
913
+ # api.contractors.update_onboarding_status(contractor_uuid: "contractor_uuid")
914
+ def update_onboarding_status(contractor_uuid:, request_options: nil)
915
+ Async do
916
+ response = @request_client.conn.put do | req |
917
+ unless request_options&.timeout_in_seconds.nil?
918
+ req.options.timeout = request_options.timeout_in_seconds
919
+ end
920
+ unless request_options&.token.nil?
921
+ req.headers["Authorization"] = request_options.token
922
+ end
923
+ unless request_options&.gusto_api_version.nil?
924
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
925
+ end
926
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
927
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
928
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
929
+ end
930
+ req.body = { **(request_options&.additional_body_parameters || {}), "onboarding_status": "onboarding_completed" }.compact
931
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_uuid}/onboarding_status"
932
+ end
933
+ Gusto::Contractor::ContractorOnboardingInfo.from_json(json_object: response.body)
934
+ end
935
+ end
936
+ # The address of a contractor is used to determine certain tax information about
937
+ # them. Addresses are geocoded on create and update to ensure validity.
938
+ # scope: `contractors:read`
939
+ #
940
+ # @param contractor_uuid [String] The UUID of the contractor
941
+ # @param request_options [Gusto::RequestOptions]
942
+ # @return [Gusto::ContractorAddressInfo]
943
+ # @example
944
+ # api = Gusto::Client.new(
945
+ # base_url: "https://api.example.com",
946
+ # environment: Gusto::Environment::DEMO,
947
+ # token: "YOUR_AUTH_TOKEN"
948
+ # )
949
+ # api.contractors.get_address(contractor_uuid: "contractor_uuid")
950
+ def get_address(contractor_uuid:, request_options: nil)
951
+ Async do
952
+ response = @request_client.conn.get do | req |
953
+ unless request_options&.timeout_in_seconds.nil?
954
+ req.options.timeout = request_options.timeout_in_seconds
955
+ end
956
+ unless request_options&.token.nil?
957
+ req.headers["Authorization"] = request_options.token
958
+ end
959
+ unless request_options&.gusto_api_version.nil?
960
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
961
+ end
962
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
963
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
964
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
965
+ end
966
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
967
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
968
+ end
969
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_uuid}/address"
970
+ end
971
+ Gusto::ContractorAddressInfo.from_json(json_object: response.body)
972
+ end
973
+ end
974
+ # The address of a contractor is used to determine certain tax information about
975
+ # them. Addresses are geocoded on create and update to ensure validity.
976
+ # scope: `contractors:write`
977
+ #
978
+ # @param contractor_uuid [String] The UUID of the contractor
979
+ # @param version [String] The current version of the object. See the [versioning
980
+ # guide](https://docs.gusto.com/embedded-payroll/docs/idempotency) for information
981
+ # on how to use this field.
982
+ # @param street1 [String]
983
+ # @param street2 [String]
984
+ # @param city [String]
985
+ # @param state [String]
986
+ # @param zip [String]
987
+ # @param request_options [Gusto::RequestOptions]
988
+ # @return [Gusto::ContractorAddressInfo]
989
+ # @example
990
+ # api = Gusto::Client.new(
991
+ # base_url: "https://api.example.com",
992
+ # environment: Gusto::Environment::DEMO,
993
+ # token: "YOUR_AUTH_TOKEN"
994
+ # )
995
+ # api.contractors.update_address(
996
+ # contractor_uuid: "contractor_uuid",
997
+ # street1: "300 3rd Street",
998
+ # city: "San Francisco",
999
+ # state: "CA",
1000
+ # zip: "94107"
1001
+ # )
1002
+ def update_address(contractor_uuid:, version:, street1: nil, street2: nil, city: nil, state: nil, zip: nil, request_options: nil)
1003
+ Async do
1004
+ response = @request_client.conn.put do | req |
1005
+ unless request_options&.timeout_in_seconds.nil?
1006
+ req.options.timeout = request_options.timeout_in_seconds
1007
+ end
1008
+ unless request_options&.token.nil?
1009
+ req.headers["Authorization"] = request_options.token
1010
+ end
1011
+ unless request_options&.gusto_api_version.nil?
1012
+ req.headers["X-Gusto-API-Version"] = request_options.gusto_api_version
1013
+ end
1014
+ req.headers = { **(req.headers || {}), **@request_client.get_headers, **(request_options&.additional_headers || {}) }.compact
1015
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
1016
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
1017
+ end
1018
+ req.body = { **(request_options&.additional_body_parameters || {}), version: version, street_1: street1, street_2: street2, city: city, state: state, zip: zip }.compact
1019
+ req.url "#{@request_client.get_url(request_options: request_options)}/v1/contractors/#{contractor_uuid}/address"
1020
+ end
1021
+ Gusto::ContractorAddressInfo.from_json(json_object: response.body)
1022
+ end
1023
+ end
1024
+ end
1025
+ end