gusto_embedded_client 0.3.0 → 0.3.1

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 (122) hide show
  1. checksums.yaml +4 -4
  2. data/lib/gusto_embedded/client.rb +2 -1
  3. data/lib/gusto_embedded/companybenefits.rb +30 -2
  4. data/lib/gusto_embedded/contractorpayments.rb +16 -2
  5. data/lib/gusto_embedded/earningtypes.rb +16 -2
  6. data/lib/gusto_embedded/employeebenefits.rb +30 -2
  7. data/lib/gusto_embedded/employeepaymentmethod.rb +30 -2
  8. data/lib/gusto_embedded/externalpayrolls.rb +60 -4
  9. data/lib/gusto_embedded/information_requests.rb +6 -3
  10. data/lib/gusto_embedded/models/errors/payroll_digest_conflict_error.rb +32 -0
  11. data/lib/gusto_embedded/models/errors/payroll_digest_conflict_error.rbi +13 -0
  12. data/lib/gusto_embedded/models/errors/payroll_digest_conflict_error_errors.rb +44 -0
  13. data/lib/gusto_embedded/models/errors/payroll_digest_conflict_error_errors.rbi +19 -0
  14. data/lib/gusto_embedded/models/errors/payroll_digest_conflict_error_metadata.rb +32 -0
  15. data/lib/gusto_embedded/models/errors/payroll_digest_conflict_error_metadata.rbi +13 -0
  16. data/lib/gusto_embedded/models/errors.rb +3 -0
  17. data/lib/gusto_embedded/models/operations/get_information_requests_request.rb +6 -2
  18. data/lib/gusto_embedded/models/operations/get_information_requests_request.rbi +2 -0
  19. data/lib/gusto_embedded/models/operations/get_v1_companies_company_id_payrolls_payroll_id_request.rb +3 -3
  20. data/lib/gusto_embedded/models/operations/get_v1_companies_company_uuid_contractors_request.rb +1 -1
  21. data/lib/gusto_embedded/models/operations/get_v1_company_forms_request.rb +3 -3
  22. data/lib/gusto_embedded/models/operations/get_v1_payroll_digests_payroll_digest_uuid_header_x_gusto_api_version.rb +18 -0
  23. data/lib/gusto_embedded/models/operations/get_v1_payroll_digests_payroll_digest_uuid_header_x_gusto_api_version.rbi +11 -0
  24. data/lib/gusto_embedded/models/operations/get_v1_payroll_digests_payroll_digest_uuid_request.rb +36 -0
  25. data/lib/gusto_embedded/models/operations/get_v1_payroll_digests_payroll_digest_uuid_request.rbi +15 -0
  26. data/lib/gusto_embedded/models/operations/get_v1_payroll_digests_payroll_digest_uuid_response.rb +44 -0
  27. data/lib/gusto_embedded/models/operations/get_v1_payroll_digests_payroll_digest_uuid_response.rbi +19 -0
  28. data/lib/gusto_embedded/models/operations/get_v1_payroll_digests_payroll_digest_uuid_security.rb +32 -0
  29. data/lib/gusto_embedded/models/operations/get_v1_payroll_digests_payroll_digest_uuid_security.rbi +13 -0
  30. data/lib/gusto_embedded/models/operations/post_v1_companies_company_id_reports_employees_annual_fica_wage_response.rb +5 -5
  31. data/lib/gusto_embedded/models/operations/post_v1_companies_company_id_reports_employees_annual_fica_wage_response.rbi +2 -2
  32. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_batch.rb +36 -0
  33. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_batch.rbi +15 -0
  34. data/lib/gusto_embedded/models/operations/{sort_by.rb → post_v1_payroll_digests_batch_action.rb} +3 -4
  35. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_batch_action.rbi +11 -0
  36. data/lib/gusto_embedded/models/operations/{queryparam_sort_by.rb → post_v1_payroll_digests_entity_type.rb} +3 -4
  37. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_entity_type.rbi +11 -0
  38. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_header_x_gusto_api_version.rb +18 -0
  39. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_header_x_gusto_api_version.rbi +11 -0
  40. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_request.rb +36 -0
  41. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_request.rbi +15 -0
  42. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_requestbody.rb +40 -0
  43. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_requestbody.rbi +17 -0
  44. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_response.rb +44 -0
  45. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_response.rbi +19 -0
  46. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_security.rb +32 -0
  47. data/lib/gusto_embedded/models/operations/post_v1_payroll_digests_security.rbi +13 -0
  48. data/lib/gusto_embedded/models/operations/put_v1_companies_company_id_payrolls_payroll_id_prepare_request.rb +3 -3
  49. data/lib/gusto_embedded/models/operations/split_by.rb +1 -1
  50. data/lib/gusto_embedded/models/operations.rb +12 -4
  51. data/lib/gusto_embedded/models/shared/ach_transaction_recipient_type.rb +1 -1
  52. data/lib/gusto_embedded/models/shared/batch_action.rb +18 -0
  53. data/lib/gusto_embedded/models/{operations/sort_by.rbi → shared/batch_action.rbi} +2 -2
  54. data/lib/gusto_embedded/models/shared/blockers.rb +36 -0
  55. data/lib/gusto_embedded/models/shared/blockers.rbi +15 -0
  56. data/lib/gusto_embedded/models/shared/columns.rb +2 -0
  57. data/lib/gusto_embedded/models/shared/deduction_reduces_taxable_income.rb +1 -1
  58. data/lib/gusto_embedded/models/shared/employee_benefit.rb +6 -6
  59. data/lib/gusto_embedded/models/shared/employee_benefit.rbi +2 -2
  60. data/lib/gusto_embedded/models/shared/employee_benefit_create_request_deduction_reduces_taxable_income.rb +1 -1
  61. data/lib/gusto_embedded/models/shared/employee_benefit_create_request_limit_option.rb +1 -6
  62. data/lib/gusto_embedded/models/shared/employee_benefit_for_company_benefit.rb +6 -6
  63. data/lib/gusto_embedded/models/shared/employee_benefit_for_company_benefit.rbi +2 -2
  64. data/lib/gusto_embedded/models/shared/employee_benefit_for_company_benefit_deduction_reduces_taxable_income.rb +1 -1
  65. data/lib/gusto_embedded/models/shared/employee_benefit_update_request.rb +6 -6
  66. data/lib/gusto_embedded/models/shared/employee_benefit_update_request.rbi +2 -2
  67. data/lib/gusto_embedded/models/shared/employee_benefit_update_request_deduction_reduces_taxable_income.rb +1 -1
  68. data/lib/gusto_embedded/models/shared/employee_benefit_update_request_limit_option.rb +1 -6
  69. data/lib/gusto_embedded/models/shared/employee_state_taxes_list.rb +6 -2
  70. data/lib/gusto_embedded/models/shared/employee_state_taxes_list.rbi +2 -0
  71. data/lib/gusto_embedded/models/{operations/post_v1_companies_company_id_reports_employees_annual_fica_wage_responsebody.rb → shared/employees_annual_fica_wage_report_acceptance.rb} +6 -6
  72. data/lib/gusto_embedded/models/{operations/post_v1_companies_company_id_reports_employees_annual_fica_wage_responsebody.rbi → shared/employees_annual_fica_wage_report_acceptance.rbi} +2 -2
  73. data/lib/gusto_embedded/models/shared/entity_type.rb +1 -1
  74. data/lib/gusto_embedded/models/shared/funding_type.rb +4 -2
  75. data/lib/gusto_embedded/models/shared/garnishment_request_garnishment_type.rb +1 -1
  76. data/lib/gusto_embedded/models/shared/information_request_type.rb +1 -1
  77. data/lib/gusto_embedded/models/shared/integration_type.rb +1 -1
  78. data/lib/gusto_embedded/models/shared/name.rb +1 -1
  79. data/lib/gusto_embedded/models/shared/pay_schedule.rb +40 -0
  80. data/lib/gusto_embedded/models/shared/pay_schedule.rbi +17 -0
  81. data/lib/gusto_embedded/models/shared/payroll_digest.rb +44 -0
  82. data/lib/gusto_embedded/models/shared/payroll_digest.rbi +19 -0
  83. data/lib/gusto_embedded/models/shared/payroll_digest_results.rb +68 -0
  84. data/lib/gusto_embedded/models/shared/payroll_digest_results.rbi +31 -0
  85. data/lib/gusto_embedded/models/shared/payroll_digest_results_category.rb +21 -0
  86. data/lib/gusto_embedded/models/shared/payroll_digest_results_category.rbi +11 -0
  87. data/lib/gusto_embedded/models/shared/payroll_digest_results_entity_type.rb +18 -0
  88. data/lib/gusto_embedded/models/shared/payroll_digest_results_entity_type.rbi +11 -0
  89. data/lib/gusto_embedded/models/shared/payroll_digest_results_exclusions.rb +52 -0
  90. data/lib/gusto_embedded/models/shared/payroll_digest_results_exclusions.rbi +23 -0
  91. data/lib/gusto_embedded/models/shared/payroll_digest_results_exclusions_entity_type.rb +18 -0
  92. data/lib/gusto_embedded/models/shared/payroll_digest_results_exclusions_entity_type.rbi +11 -0
  93. data/lib/gusto_embedded/models/shared/payroll_digest_results_exclusions_status.rb +18 -0
  94. data/lib/gusto_embedded/models/shared/payroll_digest_results_exclusions_status.rbi +11 -0
  95. data/lib/gusto_embedded/models/shared/payroll_digest_results_pay_period.rb +44 -0
  96. data/lib/gusto_embedded/models/shared/payroll_digest_results_pay_period.rbi +19 -0
  97. data/lib/gusto_embedded/models/shared/payroll_digest_results_results.rb +56 -0
  98. data/lib/gusto_embedded/models/shared/payroll_digest_results_results.rbi +25 -0
  99. data/lib/gusto_embedded/models/shared/payroll_digest_results_results_status.rb +20 -0
  100. data/lib/gusto_embedded/models/shared/payroll_digest_results_results_status.rbi +11 -0
  101. data/lib/gusto_embedded/models/shared/payroll_digest_results_status.rb +21 -0
  102. data/lib/gusto_embedded/models/shared/payroll_digest_results_status.rbi +11 -0
  103. data/lib/gusto_embedded/models/shared/payroll_digest_results_totals.rb +40 -0
  104. data/lib/gusto_embedded/models/shared/payroll_digest_results_totals.rbi +17 -0
  105. data/lib/gusto_embedded/models/shared/payroll_digest_status.rb +21 -0
  106. data/lib/gusto_embedded/models/shared/payroll_digest_status.rbi +11 -0
  107. data/lib/gusto_embedded/models/shared/payroll_employee_compensations_type_payment_method.rb +1 -1
  108. data/lib/gusto_embedded/models/shared/payroll_show_payment_method.rb +1 -1
  109. data/lib/gusto_embedded/models/shared/payroll_unprocessed_employee_compensations_type_payment_method.rb +1 -1
  110. data/lib/gusto_embedded/models/shared/payrolls.rb +60 -0
  111. data/lib/gusto_embedded/models/shared/payrolls.rbi +27 -0
  112. data/lib/gusto_embedded/models/shared/update_garnishment_request_garnishment_type.rb +1 -1
  113. data/lib/gusto_embedded/models/shared.rb +18 -0
  114. data/lib/gusto_embedded/payroll_digests.rb +342 -0
  115. data/lib/gusto_embedded/reports.rb +2 -2
  116. data/lib/gusto_embedded/sdkconfiguration.rb +3 -3
  117. data/lib/gusto_embedded/time_off_requests.rb +30 -2
  118. data/lib/gusto_embedded_client.rb +1 -0
  119. metadata +69 -10
  120. data/lib/gusto_embedded/models/operations/get_v1_company_forms_queryparam_sort_by.rb +0 -23
  121. data/lib/gusto_embedded/models/operations/get_v1_company_forms_queryparam_sort_by.rbi +0 -11
  122. data/lib/gusto_embedded/models/operations/queryparam_sort_by.rbi +0 -11
@@ -0,0 +1,40 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+
11
+ class PaySchedule
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # UUID of the pay schedule.
16
+ field :uuid, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('uuid') } }
17
+ # Human-friendly pay frequency (e.g. "Every other week").
18
+ field :frequency, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('frequency') } }
19
+ # Custom name for the pay schedule, when set.
20
+ field :custom_name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('custom_name') } }
21
+
22
+ sig { params(uuid: T.nilable(::String), frequency: T.nilable(::String), custom_name: T.nilable(::String)).void }
23
+ def initialize(uuid: nil, frequency: nil, custom_name: nil)
24
+ @uuid = uuid
25
+ @frequency = frequency
26
+ @custom_name = custom_name
27
+ end
28
+
29
+ sig { params(other: T.untyped).returns(T::Boolean) }
30
+ def ==(other)
31
+ return false unless other.is_a? self.class
32
+ return false unless @uuid == other.uuid
33
+ return false unless @frequency == other.frequency
34
+ return false unless @custom_name == other.custom_name
35
+ true
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PaySchedule
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PaySchedule
11
+ def uuid(); end
12
+ def uuid=(str_); end
13
+ def frequency(); end
14
+ def frequency=(str_); end
15
+ def custom_name(); end
16
+ def custom_name=(str_); end
17
+ end
@@ -0,0 +1,44 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+ # A payroll digest batch request.
11
+ class PayrollDigest
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The unique identifier of the payroll digest batch.
16
+ field :uuid, ::String, { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('uuid'), required: true } }
17
+ # The idempotency key provided when creating the batch.
18
+ field :idempotency_key, ::String, { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('idempotency_key'), required: true } }
19
+ # The action being performed on the batch.
20
+ field :batch_action, Models::Shared::BatchAction, { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('batch_action'), required: true, 'decoder': ::GustoEmbedded::Utils.enum_from_string(Models::Shared::BatchAction, false) } }
21
+ # The lifecycle status of the batch request itself. Terminal values are `completed` (processing finished — inspect `results` and `exclusions` for per-company outcomes) and `failed` (request failed; can be retried). This is distinct from the per-company `status` returned inside `results[]` and `exclusions[]`.
22
+ field :status, Models::Shared::PayrollDigestStatus, { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('status'), required: true, 'decoder': ::GustoEmbedded::Utils.enum_from_string(Models::Shared::PayrollDigestStatus, false) } }
23
+
24
+ sig { params(uuid: ::String, idempotency_key: ::String, batch_action: Models::Shared::BatchAction, status: Models::Shared::PayrollDigestStatus).void }
25
+ def initialize(uuid:, idempotency_key:, batch_action:, status:)
26
+ @uuid = uuid
27
+ @idempotency_key = idempotency_key
28
+ @batch_action = batch_action
29
+ @status = status
30
+ end
31
+
32
+ sig { params(other: T.untyped).returns(T::Boolean) }
33
+ def ==(other)
34
+ return false unless other.is_a? self.class
35
+ return false unless @uuid == other.uuid
36
+ return false unless @idempotency_key == other.idempotency_key
37
+ return false unless @batch_action == other.batch_action
38
+ return false unless @status == other.status
39
+ true
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigest
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigest
11
+ def uuid(); end
12
+ def uuid=(str_); end
13
+ def idempotency_key(); end
14
+ def idempotency_key=(str_); end
15
+ def batch_action(); end
16
+ def batch_action=(str_); end
17
+ def status(); end
18
+ def status=(str_); end
19
+ end
@@ -0,0 +1,68 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+ # A payroll digest batch with processing results.
11
+ class PayrollDigestResults
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The unique identifier of the payroll digest batch.
16
+ field :uuid, ::String, { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('uuid'), required: true } }
17
+ # The idempotency key provided when creating the batch.
18
+ field :idempotency_key, ::String, { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('idempotency_key'), required: true } }
19
+ # The lifecycle status of the batch request itself. Terminal values are `completed` (processing finished — inspect `results` and `exclusions` for per-company outcomes) and `failed` (request failed; can be retried). This is distinct from the per-company `status` returned inside `results[]` and `exclusions[]`.
20
+ field :status, Models::Shared::PayrollDigestResultsStatus, { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('status'), required: true, 'decoder': ::GustoEmbedded::Utils.enum_from_string(Models::Shared::PayrollDigestResultsStatus, false) } }
21
+ # The timestamp when the batch was submitted.
22
+ field :submitted_at, ::DateTime, { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('submitted_at'), required: true, 'decoder': ::GustoEmbedded::Utils.datetime_from_iso_format(false) } }
23
+ # The number of companies successfully processed. Only present once the batch reaches a terminal status.
24
+ field :processed_items, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('processed_items') } }
25
+ # The number of companies excluded from processing. Only present once the batch reaches a terminal status.
26
+ field :excluded_items, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('excluded_items') } }
27
+ # Per-company results. Only present once the batch reaches a terminal status. Includes successfully processed companies (with their `payrolls` array, which may be empty when the company has no payrolls in the date window).
28
+ field :results, Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::PayrollDigestResultsResults)), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('results') } }
29
+ # Companies that could not be processed. Only present once the batch reaches a terminal status. Every UUID submitted in the POST batch appears in exactly one of `results` or `exclusions`.
30
+ field :exclusions, Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::PayrollDigestResultsExclusions)), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('exclusions') } }
31
+ # The timestamp when the batch processing completed.
32
+ field :completed_at, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('completed_at'), 'decoder': ::GustoEmbedded::Utils.datetime_from_iso_format(true) } }
33
+ # The number of companies submitted in the batch.
34
+ field :submitted_items, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('submitted_items') } }
35
+
36
+ sig { params(uuid: ::String, idempotency_key: ::String, status: Models::Shared::PayrollDigestResultsStatus, submitted_at: ::DateTime, processed_items: T.nilable(::Integer), excluded_items: T.nilable(::Integer), results: T.nilable(T::Array[Models::Shared::PayrollDigestResultsResults]), exclusions: T.nilable(T::Array[Models::Shared::PayrollDigestResultsExclusions]), completed_at: T.nilable(::DateTime), submitted_items: T.nilable(::Integer)).void }
37
+ def initialize(uuid:, idempotency_key:, status:, submitted_at:, processed_items: nil, excluded_items: nil, results: nil, exclusions: nil, completed_at: nil, submitted_items: nil)
38
+ @uuid = uuid
39
+ @idempotency_key = idempotency_key
40
+ @status = status
41
+ @submitted_at = submitted_at
42
+ @processed_items = processed_items
43
+ @excluded_items = excluded_items
44
+ @results = results
45
+ @exclusions = exclusions
46
+ @completed_at = completed_at
47
+ @submitted_items = submitted_items
48
+ end
49
+
50
+ sig { params(other: T.untyped).returns(T::Boolean) }
51
+ def ==(other)
52
+ return false unless other.is_a? self.class
53
+ return false unless @uuid == other.uuid
54
+ return false unless @idempotency_key == other.idempotency_key
55
+ return false unless @status == other.status
56
+ return false unless @submitted_at == other.submitted_at
57
+ return false unless @processed_items == other.processed_items
58
+ return false unless @excluded_items == other.excluded_items
59
+ return false unless @results == other.results
60
+ return false unless @exclusions == other.exclusions
61
+ return false unless @completed_at == other.completed_at
62
+ return false unless @submitted_items == other.submitted_items
63
+ true
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,31 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigestResults
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigestResults
11
+ def uuid(); end
12
+ def uuid=(str_); end
13
+ def idempotency_key(); end
14
+ def idempotency_key=(str_); end
15
+ def status(); end
16
+ def status=(str_); end
17
+ def submitted_at(); end
18
+ def submitted_at=(str_); end
19
+ def processed_items(); end
20
+ def processed_items=(str_); end
21
+ def excluded_items(); end
22
+ def excluded_items=(str_); end
23
+ def results(); end
24
+ def results=(str_); end
25
+ def exclusions(); end
26
+ def exclusions=(str_); end
27
+ def completed_at(); end
28
+ def completed_at=(str_); end
29
+ def submitted_items(); end
30
+ def submitted_items=(str_); end
31
+ end
@@ -0,0 +1,21 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+ # PayrollDigestResultsCategory - Machine-readable category for why the company was excluded.
11
+ class PayrollDigestResultsCategory < T::Enum
12
+ enums do
13
+ NOT_FOUND = new('not_found')
14
+ COMPANY_INACTIVE = new('company_inactive')
15
+ DUPLICATE = new('duplicate')
16
+ INTERNAL_ERROR = new('internal_error')
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsCategory
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsCategory
11
+ end
@@ -0,0 +1,18 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+ # PayrollDigestResultsEntityType - The type of entity this result represents.
11
+ class PayrollDigestResultsEntityType < T::Enum
12
+ enums do
13
+ COMPANY = new('company')
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsEntityType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsEntityType
11
+ end
@@ -0,0 +1,52 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+
11
+ class PayrollDigestResultsExclusions
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The index of this company in the original POST batch array.
16
+ field :idx, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('idx') } }
17
+ # The type of entity this exclusion represents.
18
+ field :entity_type, Crystalline::Nilable.new(Models::Shared::PayrollDigestResultsExclusionsEntityType), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('entity_type'), 'decoder': ::GustoEmbedded::Utils.enum_from_string(Models::Shared::PayrollDigestResultsExclusionsEntityType, true) } }
19
+ # The UUID of the excluded company.
20
+ field :uuid, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('uuid') } }
21
+ # The status of this company's digest computation.
22
+ field :status, Crystalline::Nilable.new(Models::Shared::PayrollDigestResultsExclusionsStatus), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('status'), 'decoder': ::GustoEmbedded::Utils.enum_from_string(Models::Shared::PayrollDigestResultsExclusionsStatus, true) } }
23
+ # Machine-readable category for why the company was excluded.
24
+ field :category, Crystalline::Nilable.new(Models::Shared::PayrollDigestResultsCategory), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('category'), 'decoder': ::GustoEmbedded::Utils.enum_from_string(Models::Shared::PayrollDigestResultsCategory, true) } }
25
+ # Human-readable explanation for the exclusion.
26
+ field :message, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('message') } }
27
+
28
+ sig { params(idx: T.nilable(::Integer), entity_type: T.nilable(Models::Shared::PayrollDigestResultsExclusionsEntityType), uuid: T.nilable(::String), status: T.nilable(Models::Shared::PayrollDigestResultsExclusionsStatus), category: T.nilable(Models::Shared::PayrollDigestResultsCategory), message: T.nilable(::String)).void }
29
+ def initialize(idx: nil, entity_type: nil, uuid: nil, status: nil, category: nil, message: nil)
30
+ @idx = idx
31
+ @entity_type = entity_type
32
+ @uuid = uuid
33
+ @status = status
34
+ @category = category
35
+ @message = message
36
+ end
37
+
38
+ sig { params(other: T.untyped).returns(T::Boolean) }
39
+ def ==(other)
40
+ return false unless other.is_a? self.class
41
+ return false unless @idx == other.idx
42
+ return false unless @entity_type == other.entity_type
43
+ return false unless @uuid == other.uuid
44
+ return false unless @status == other.status
45
+ return false unless @category == other.category
46
+ return false unless @message == other.message
47
+ true
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,23 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsExclusions
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsExclusions
11
+ def idx(); end
12
+ def idx=(str_); end
13
+ def entity_type(); end
14
+ def entity_type=(str_); end
15
+ def uuid(); end
16
+ def uuid=(str_); end
17
+ def status(); end
18
+ def status=(str_); end
19
+ def category(); end
20
+ def category=(str_); end
21
+ def message(); end
22
+ def message=(str_); end
23
+ end
@@ -0,0 +1,18 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+ # PayrollDigestResultsExclusionsEntityType - The type of entity this exclusion represents.
11
+ class PayrollDigestResultsExclusionsEntityType < T::Enum
12
+ enums do
13
+ COMPANY = new('company')
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsExclusionsEntityType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsExclusionsEntityType
11
+ end
@@ -0,0 +1,18 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+ # PayrollDigestResultsExclusionsStatus - The status of this company's digest computation.
11
+ class PayrollDigestResultsExclusionsStatus < T::Enum
12
+ enums do
13
+ FAILED = new('failed')
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsExclusionsStatus
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsExclusionsStatus
11
+ end
@@ -0,0 +1,44 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+
11
+ class PayrollDigestResultsPayPeriod
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # First day of the pay period.
16
+ field :start_date, Crystalline::Nilable.new(::Date), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('start_date'), 'decoder': ::GustoEmbedded::Utils.date_from_iso_format(true) } }
17
+ # Last day of the pay period.
18
+ field :end_date, Crystalline::Nilable.new(::Date), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('end_date'), 'decoder': ::GustoEmbedded::Utils.date_from_iso_format(true) } }
19
+ # The date employees get paid.
20
+ field :check_date, Crystalline::Nilable.new(::Date), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('check_date'), 'decoder': ::GustoEmbedded::Utils.date_from_iso_format(true) } }
21
+ # The deadline to run payroll for this pay period.
22
+ field :run_payroll_by, Crystalline::Nilable.new(::Date), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('run_payroll_by'), 'decoder': ::GustoEmbedded::Utils.date_from_iso_format(true) } }
23
+
24
+ sig { params(start_date: T.nilable(::Date), end_date: T.nilable(::Date), check_date: T.nilable(::Date), run_payroll_by: T.nilable(::Date)).void }
25
+ def initialize(start_date: nil, end_date: nil, check_date: nil, run_payroll_by: nil)
26
+ @start_date = start_date
27
+ @end_date = end_date
28
+ @check_date = check_date
29
+ @run_payroll_by = run_payroll_by
30
+ end
31
+
32
+ sig { params(other: T.untyped).returns(T::Boolean) }
33
+ def ==(other)
34
+ return false unless other.is_a? self.class
35
+ return false unless @start_date == other.start_date
36
+ return false unless @end_date == other.end_date
37
+ return false unless @check_date == other.check_date
38
+ return false unless @run_payroll_by == other.run_payroll_by
39
+ true
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsPayPeriod
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsPayPeriod
11
+ def start_date(); end
12
+ def start_date=(str_); end
13
+ def end_date(); end
14
+ def end_date=(str_); end
15
+ def check_date(); end
16
+ def check_date=(str_); end
17
+ def run_payroll_by(); end
18
+ def run_payroll_by=(str_); end
19
+ end
@@ -0,0 +1,56 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+
11
+ class PayrollDigestResultsResults
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The index of this company in the original POST batch array.
16
+ field :idx, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('idx') } }
17
+ # The type of entity this result represents.
18
+ field :entity_type, Crystalline::Nilable.new(Models::Shared::PayrollDigestResultsEntityType), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('entity_type'), 'decoder': ::GustoEmbedded::Utils.enum_from_string(Models::Shared::PayrollDigestResultsEntityType, true) } }
19
+ # The UUID of the company.
20
+ field :uuid, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('uuid') } }
21
+ # The legal/display name of the company.
22
+ field :name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('name') } }
23
+ # The status of this company's digest computation.
24
+ field :status, Crystalline::Nilable.new(Models::Shared::PayrollDigestResultsResultsStatus), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('status'), 'decoder': ::GustoEmbedded::Utils.enum_from_string(Models::Shared::PayrollDigestResultsResultsStatus, true) } }
25
+ # Reasons the company cannot currently run payroll. Applies to every payroll in this company's `payrolls` array — blockers are evaluated at the company level, not per payroll. Empty when there are no blockers.
26
+ field :blockers, Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::Blockers)), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('blockers') } }
27
+ # Payrolls for this company within the digest date window (7 days past, 30–60 days future). May be empty.
28
+ field :payrolls, Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::Payrolls)), { 'format_json': { 'letter_case': ::GustoEmbedded::Utils.field_name('payrolls') } }
29
+
30
+ sig { params(idx: T.nilable(::Integer), entity_type: T.nilable(Models::Shared::PayrollDigestResultsEntityType), uuid: T.nilable(::String), name: T.nilable(::String), status: T.nilable(Models::Shared::PayrollDigestResultsResultsStatus), blockers: T.nilable(T::Array[Models::Shared::Blockers]), payrolls: T.nilable(T::Array[Models::Shared::Payrolls])).void }
31
+ def initialize(idx: nil, entity_type: nil, uuid: nil, name: nil, status: nil, blockers: nil, payrolls: nil)
32
+ @idx = idx
33
+ @entity_type = entity_type
34
+ @uuid = uuid
35
+ @name = name
36
+ @status = status
37
+ @blockers = blockers
38
+ @payrolls = payrolls
39
+ end
40
+
41
+ sig { params(other: T.untyped).returns(T::Boolean) }
42
+ def ==(other)
43
+ return false unless other.is_a? self.class
44
+ return false unless @idx == other.idx
45
+ return false unless @entity_type == other.entity_type
46
+ return false unless @uuid == other.uuid
47
+ return false unless @name == other.name
48
+ return false unless @status == other.status
49
+ return false unless @blockers == other.blockers
50
+ return false unless @payrolls == other.payrolls
51
+ true
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,25 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsResults
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsResults
11
+ def idx(); end
12
+ def idx=(str_); end
13
+ def entity_type(); end
14
+ def entity_type=(str_); end
15
+ def uuid(); end
16
+ def uuid=(str_); end
17
+ def name(); end
18
+ def name=(str_); end
19
+ def status(); end
20
+ def status=(str_); end
21
+ def blockers(); end
22
+ def blockers=(str_); end
23
+ def payrolls(); end
24
+ def payrolls=(str_); end
25
+ end
@@ -0,0 +1,20 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+ # PayrollDigestResultsResultsStatus - The status of this company's digest computation.
11
+ class PayrollDigestResultsResultsStatus < T::Enum
12
+ enums do
13
+ SUCCESS = new('success')
14
+ PARTIAL_SUCCESS = new('partial_success')
15
+ FAILED = new('failed')
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsResultsStatus
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsResultsStatus
11
+ end
@@ -0,0 +1,21 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module GustoEmbedded
8
+ module Models
9
+ module Shared
10
+ # PayrollDigestResultsStatus - The lifecycle status of the batch request itself. Terminal values are `completed` (processing finished — inspect `results` and `exclusions` for per-company outcomes) and `failed` (request failed; can be retried). This is distinct from the per-company `status` returned inside `results[]` and `exclusions[]`.
11
+ class PayrollDigestResultsStatus < T::Enum
12
+ enums do
13
+ PENDING = new('pending')
14
+ PROCESSING = new('processing')
15
+ COMPLETED = new('completed')
16
+ FAILED = new('failed')
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsStatus
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class GustoEmbedded::Models::Shared::PayrollDigestResultsStatus
11
+ end