kombo 1.2.9 → 1.2.10

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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/lib/kombo/ats.rb +6 -2
  3. data/lib/kombo/general.rb +15 -5
  4. data/lib/kombo/hris.rb +0 -2
  5. data/lib/kombo/models/shared/amount.rb +1 -1
  6. data/lib/kombo/models/shared/amount_ytd.rb +36 -0
  7. data/lib/kombo/models/shared/amount_ytd.rbi +15 -0
  8. data/lib/kombo/models/shared/domestic_bank_routing.rb +1 -1
  9. data/lib/kombo/models/shared/domestic_bank_routing_type.rb +1 -0
  10. data/lib/kombo/models/shared/gethrisgroupspositiveresponse_result.rb +6 -2
  11. data/lib/kombo/models/shared/gethrisgroupspositiveresponse_result.rbi +2 -0
  12. data/lib/kombo/models/shared/gethrislegalentitiespositiveresponse_result.rb +6 -2
  13. data/lib/kombo/models/shared/gethrislegalentitiespositiveresponse_result.rbi +2 -0
  14. data/lib/kombo/models/shared/gethrislocationspositiveresponse_result.rb +6 -2
  15. data/lib/kombo/models/shared/gethrislocationspositiveresponse_result.rbi +2 -0
  16. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_gross_pay.rb +1 -1
  17. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_net_pay.rb +1 -1
  18. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_paid_amount.rb +1 -1
  19. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_gross_pay.rb +1 -1
  20. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_net_pay.rb +1 -1
  21. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_paid_amount.rb +1 -1
  22. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_result.rb +6 -2
  23. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_result.rbi +2 -0
  24. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_totals.rb +14 -2
  25. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_totals.rbi +6 -0
  26. data/lib/kombo/models/shared/gross_pay_ytd.rb +36 -0
  27. data/lib/kombo/models/shared/gross_pay_ytd.rbi +15 -0
  28. data/lib/kombo/models/shared/integration_tool.rb +5 -1
  29. data/lib/kombo/models/shared/line_item.rb +14 -2
  30. data/lib/kombo/models/shared/line_item.rbi +6 -0
  31. data/lib/kombo/models/shared/net_pay_ytd.rb +36 -0
  32. data/lib/kombo/models/shared/net_pay_ytd.rbi +15 -0
  33. data/lib/kombo/models/shared/paid_amount_ytd.rb +36 -0
  34. data/lib/kombo/models/shared/paid_amount_ytd.rbi +15 -0
  35. data/lib/kombo/models/shared/pay_code.rb +36 -0
  36. data/lib/kombo/models/shared/pay_code.rbi +15 -0
  37. data/lib/kombo/models/shared/postatsapplicationsapplicationidnotesrequestbody.rb +6 -2
  38. data/lib/kombo/models/shared/postatsapplicationsapplicationidnotesrequestbody.rbi +2 -0
  39. data/lib/kombo/models/shared/postatsapplicationsapplicationidresultlinksrequestbody_remote_fields.rb +6 -2
  40. data/lib/kombo/models/shared/postatsapplicationsapplicationidresultlinksrequestbody_remote_fields.rbi +2 -0
  41. data/lib/kombo/models/shared/postatsapplicationsapplicationidresultlinksrequestbody_traffit.rb +32 -0
  42. data/lib/kombo/models/shared/postatsapplicationsapplicationidresultlinksrequestbody_traffit.rbi +13 -0
  43. data/lib/kombo/models/shared/postatscandidatescandidateidresultlinksrequestbody_remote_fields.rb +6 -2
  44. data/lib/kombo/models/shared/postatscandidatescandidateidresultlinksrequestbody_remote_fields.rbi +2 -0
  45. data/lib/kombo/models/shared/postatscandidatescandidateidresultlinksrequestbody_traffit.rb +32 -0
  46. data/lib/kombo/models/shared/postatscandidatescandidateidresultlinksrequestbody_traffit.rbi +13 -0
  47. data/lib/kombo/models/shared/postatscandidatesrequestbody_emplypeople.rb +32 -0
  48. data/lib/kombo/models/shared/postatscandidatesrequestbody_emplypeople.rbi +13 -0
  49. data/lib/kombo/models/shared/postatscandidatesrequestbody_fountain.rb +44 -0
  50. data/lib/kombo/models/shared/postatscandidatesrequestbody_fountain.rbi +19 -0
  51. data/lib/kombo/models/shared/postatscandidatesrequestbody_icims.rb +32 -0
  52. data/lib/kombo/models/shared/postatscandidatesrequestbody_icims.rbi +13 -0
  53. data/lib/kombo/models/shared/postatscandidatesrequestbody_remote_fields.rb +14 -2
  54. data/lib/kombo/models/shared/postatscandidatesrequestbody_remote_fields.rbi +6 -0
  55. data/lib/kombo/models/shared/postatscandidatesrequestbody_talentsoft.rb +6 -2
  56. data/lib/kombo/models/shared/postatscandidatesrequestbody_talentsoft.rbi +2 -0
  57. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_emplypeople.rb +32 -0
  58. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_emplypeople.rbi +13 -0
  59. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_fountain.rb +44 -0
  60. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_fountain.rbi +19 -0
  61. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_icims.rb +32 -0
  62. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_icims.rbi +13 -0
  63. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_remote_fields.rb +14 -2
  64. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_remote_fields.rbi +6 -0
  65. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_talentsoft.rb +6 -2
  66. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_talentsoft.rbi +2 -0
  67. data/lib/kombo/models/shared/putatsapplicationsapplicationidstagerequestbody_lever.rb +32 -0
  68. data/lib/kombo/models/shared/putatsapplicationsapplicationidstagerequestbody_lever.rbi +13 -0
  69. data/lib/kombo/models/shared/putatsapplicationsapplicationidstagerequestbody_remote_fields.rb +6 -2
  70. data/lib/kombo/models/shared/putatsapplicationsapplicationidstagerequestbody_remote_fields.rbi +2 -0
  71. data/lib/kombo/models/shared/work_location.rb +6 -2
  72. data/lib/kombo/models/shared/work_location.rbi +2 -0
  73. data/lib/kombo/models/shared.rb +14 -0
  74. data/lib/kombo/sdkconfiguration.rb +3 -3
  75. metadata +30 -2
@@ -91,6 +91,7 @@ module Kombo
91
91
  TALENTCLUE = new('talentclue')
92
92
  INRECRUITING = new('inrecruiting')
93
93
  JOBADDER = new('jobadder')
94
+ JOBADDERJOBBOARD = new('jobadderjobboard')
94
95
  UBEEO = new('ubeeo')
95
96
  CONNEXYS = new('connexys')
96
97
  HR4YOU = new('hr4you')
@@ -121,6 +122,7 @@ module Kombo
121
122
  SANDBOX = new('sandbox')
122
123
  GUIDECOM = new('guidecom')
123
124
  SPOTT = new('spott')
125
+ STARDEX = new('stardex')
124
126
  LOGICMELON = new('logicmelon')
125
127
  LOXO = new('loxo')
126
128
  KULA = new('kula')
@@ -129,10 +131,12 @@ module Kombo
129
131
  PAGEUP = new('pageup')
130
132
  TALENT360 = new('talent360')
131
133
  EMPLYPEOPLE = new('emplypeople')
134
+ HIBOB = new('hibob')
132
135
  WORKDAYCUSTOMREPORT = new('workdaycustomreport')
133
136
  WORKDAYCUSTOMREPORTSFTP = new('workdaycustomreportsftp')
134
137
  UKGPROWFM = new('ukgprowfm')
135
138
  ADPDECIDIUM = new('adpdecidium')
139
+ ADPLINK = new('adplink')
136
140
  PAYFITCUSTOMER = new('payfitcustomer')
137
141
  PAYFITPARTNER = new('payfitpartner')
138
142
  PAYFIT = new('payfit')
@@ -140,7 +144,6 @@ module Kombo
140
144
  FOURTH = new('fourth')
141
145
  KENJO = new('kenjo')
142
146
  HEAVENHR = new('heavenhr')
143
- HIBOB = new('hibob')
144
147
  CEZANNEHR = new('cezannehr')
145
148
  ENTRAID = new('entraid')
146
149
  AZUREAD = new('azuread')
@@ -208,6 +211,7 @@ module Kombo
208
211
  NIBELIS = new('nibelis')
209
212
  PEOPLEXD = new('peoplexd')
210
213
  ZELLIS = new('zellis')
214
+ VEDA = new('veda')
211
215
  SFTP = new('sftp')
212
216
  SFTPFETCH = new('sftpfetch')
213
217
  THREE_HUNDRED_AND_SIXTYLEARNING = new('360learning')
@@ -16,17 +16,26 @@ module Kombo
16
16
  field :id, ::String, { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('id'), required: true } }
17
17
  # The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. This value may include the item's position on the payslip, which can change if the payslip is edited.
18
18
  field :remote_id, ::String, { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('remote_id'), required: true } }
19
+ # The pay code (salary type) this line item belongs to in the remote system.
20
+ field :pay_code, Models::Shared::PayCode, { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('pay_code'), required: true } }
19
21
  # The name of the salary type.
20
22
  field :name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('name'), required: true } }
23
+ # A key-value store of fields not covered by the schema. [Read more](/custom-fields)
24
+ field :custom_fields, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::Object)), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('custom_fields'), required: true } }
21
25
  # The amount of the line item.
22
26
  field :amount, Crystalline::Nilable.new(Models::Shared::Amount), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('amount') } }
27
+ # The year-to-date amount of the line item as returned by the remote system. Kombo never calculates this value. `null` when the remote API does not provide a year-to-date amount.
28
+ field :amount_ytd, Crystalline::Nilable.new(Models::Shared::AmountYtd), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('amount_ytd') } }
23
29
 
24
- sig { params(id: ::String, remote_id: ::String, name: T.nilable(::String), amount: T.nilable(Models::Shared::Amount)).void }
25
- def initialize(id:, remote_id:, name: nil, amount: nil)
30
+ sig { params(id: ::String, remote_id: ::String, pay_code: Models::Shared::PayCode, name: T.nilable(::String), custom_fields: T.nilable(T::Hash[Symbol, ::Object]), amount: T.nilable(Models::Shared::Amount), amount_ytd: T.nilable(Models::Shared::AmountYtd)).void }
31
+ def initialize(id:, remote_id:, pay_code:, name: nil, custom_fields: nil, amount: nil, amount_ytd: nil)
26
32
  @id = id
27
33
  @remote_id = remote_id
34
+ @pay_code = pay_code
28
35
  @name = name
36
+ @custom_fields = custom_fields
29
37
  @amount = amount
38
+ @amount_ytd = amount_ytd
30
39
  end
31
40
 
32
41
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -34,8 +43,11 @@ module Kombo
34
43
  return false unless other.is_a? self.class
35
44
  return false unless @id == other.id
36
45
  return false unless @remote_id == other.remote_id
46
+ return false unless @pay_code == other.pay_code
37
47
  return false unless @name == other.name
48
+ return false unless @custom_fields == other.custom_fields
38
49
  return false unless @amount == other.amount
50
+ return false unless @amount_ytd == other.amount_ytd
39
51
  true
40
52
  end
41
53
  end
@@ -12,8 +12,14 @@ class Kombo::Models::Shared::LineItem
12
12
  def id=(str_); end
13
13
  def remote_id(); end
14
14
  def remote_id=(str_); end
15
+ def pay_code(); end
16
+ def pay_code=(str_); end
15
17
  def name(); end
16
18
  def name=(str_); end
19
+ def custom_fields(); end
20
+ def custom_fields=(str_); end
17
21
  def amount(); end
18
22
  def amount=(str_); end
23
+ def amount_ytd(); end
24
+ def amount_ytd=(str_); end
19
25
  end
@@ -0,0 +1,36 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Kombo
8
+ module Models
9
+ module Shared
10
+ # The year-to-date net pay as returned by the remote system. Kombo never calculates this value. `null` when the remote API does not provide a year-to-date amount.
11
+ class NetPayYtd
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The [ISO 4217 currency code](https://www.iso.org/iso-4217-currency-codes.html) the value is denominated in.
16
+ field :currency, ::String, { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('currency'), required: true } }
17
+ # The monetary value. See the integration’s limitations for whether this value is rounded. Rounded values use mathematical rounding (half away from zero).
18
+ field :value, ::Float, { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('value'), required: true } }
19
+
20
+ sig { params(currency: ::String, value: ::Float).void }
21
+ def initialize(currency:, value:)
22
+ @currency = currency
23
+ @value = value
24
+ end
25
+
26
+ sig { params(other: T.untyped).returns(T::Boolean) }
27
+ def ==(other)
28
+ return false unless other.is_a? self.class
29
+ return false unless @currency == other.currency
30
+ return false unless @value == other.value
31
+ true
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,15 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Kombo::Models::Shared::NetPayYtd
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Shared::NetPayYtd
11
+ def currency(); end
12
+ def currency=(str_); end
13
+ def value(); end
14
+ def value=(str_); end
15
+ end
@@ -0,0 +1,36 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Kombo
8
+ module Models
9
+ module Shared
10
+ # The year-to-date paid amount as returned by the remote system. Kombo never calculates this value. `null` when the remote API does not provide a year-to-date amount.
11
+ class PaidAmountYtd
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The [ISO 4217 currency code](https://www.iso.org/iso-4217-currency-codes.html) the value is denominated in.
16
+ field :currency, ::String, { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('currency'), required: true } }
17
+ # The monetary value. See the integration’s limitations for whether this value is rounded. Rounded values use mathematical rounding (half away from zero).
18
+ field :value, ::Float, { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('value'), required: true } }
19
+
20
+ sig { params(currency: ::String, value: ::Float).void }
21
+ def initialize(currency:, value:)
22
+ @currency = currency
23
+ @value = value
24
+ end
25
+
26
+ sig { params(other: T.untyped).returns(T::Boolean) }
27
+ def ==(other)
28
+ return false unless other.is_a? self.class
29
+ return false unless @currency == other.currency
30
+ return false unless @value == other.value
31
+ true
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,15 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Kombo::Models::Shared::PaidAmountYtd
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Shared::PaidAmountYtd
11
+ def currency(); end
12
+ def currency=(str_); end
13
+ def value(); end
14
+ def value=(str_); end
15
+ end
@@ -0,0 +1,36 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Kombo
8
+ module Models
9
+ module Shared
10
+ # The pay code (salary type) this line item belongs to in the remote system.
11
+ class PayCode
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key.
16
+ field :remote_id, ::String, { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('remote_id'), required: true } }
17
+ # The name of the salary type as it appears in the remote system.
18
+ field :remote_label, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('remote_label'), required: true } }
19
+
20
+ sig { params(remote_id: ::String, remote_label: T.nilable(::String)).void }
21
+ def initialize(remote_id:, remote_label: nil)
22
+ @remote_id = remote_id
23
+ @remote_label = remote_label
24
+ end
25
+
26
+ sig { params(other: T.untyped).returns(T::Boolean) }
27
+ def ==(other)
28
+ return false unless other.is_a? self.class
29
+ return false unless @remote_id == other.remote_id
30
+ return false unless @remote_label == other.remote_label
31
+ true
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,15 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Kombo::Models::Shared::PayCode
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Shared::PayCode
11
+ def remote_id(); end
12
+ def remote_id=(str_); end
13
+ def remote_label(); end
14
+ def remote_label=(str_); end
15
+ end
@@ -16,13 +16,16 @@ module Kombo
16
16
  field :content, ::String, { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('content'), required: true } }
17
17
  # Content type of the note. Currently only `PLAIN_TEXT` is supported.
18
18
  field :content_type, Models::Shared::ContentType, { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('content_type'), required: true, 'decoder': ::Kombo::Utils.enum_from_string(Models::Shared::ContentType, false) } }
19
+ # Title of the note, often called "subject" in the ATS. If the ATS has no note title, the title becomes the first line of the content instead.
20
+ field :title, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('title') } }
19
21
  # Tool specific remote fields for the note.
20
22
  field :remote_fields, Crystalline::Nilable.new(Models::Shared::PostAtsApplicationsApplicationIdNotesRequestBodyRemoteFields), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('remote_fields') } }
21
23
 
22
- sig { params(content: ::String, content_type: Models::Shared::ContentType, remote_fields: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdNotesRequestBodyRemoteFields)).void }
23
- def initialize(content:, content_type:, remote_fields: nil)
24
+ sig { params(content: ::String, content_type: Models::Shared::ContentType, title: T.nilable(::String), remote_fields: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdNotesRequestBodyRemoteFields)).void }
25
+ def initialize(content:, content_type:, title: nil, remote_fields: nil)
24
26
  @content = content
25
27
  @content_type = content_type
28
+ @title = title
26
29
  @remote_fields = remote_fields
27
30
  end
28
31
 
@@ -31,6 +34,7 @@ module Kombo
31
34
  return false unless other.is_a? self.class
32
35
  return false unless @content == other.content
33
36
  return false unless @content_type == other.content_type
37
+ return false unless @title == other.title
34
38
  return false unless @remote_fields == other.remote_fields
35
39
  true
36
40
  end
@@ -12,6 +12,8 @@ class Kombo::Models::Shared::PostAtsApplicationsApplicationIdNotesRequestBody
12
12
  def content=(str_); end
13
13
  def content_type(); end
14
14
  def content_type=(str_); end
15
+ def title(); end
16
+ def title=(str_); end
15
17
  def remote_fields(); end
16
18
  def remote_fields=(str_); end
17
19
  end
@@ -18,16 +18,19 @@ module Kombo
18
18
  field :oracle, Crystalline::Nilable.new(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyOracle), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('oracle') } }
19
19
  # Talent360 specific remote fields for the result link.
20
20
  field :talent360, Crystalline::Nilable.new(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyTalent360), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('talent360') } }
21
+ # Fields specific to Traffit.
22
+ field :traffit, Crystalline::Nilable.new(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyTraffit), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('traffit') } }
21
23
  # Fields specific to Greenhouse.
22
24
  field :greenhouse, Crystalline::Nilable.new(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyGreenhouse), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('greenhouse') } }
23
25
  # Workable specific remote fields for ATS actions.
24
26
  field :workable, Crystalline::Nilable.new(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyWorkable), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('workable') } }
25
27
 
26
- sig { params(icims: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyIcims), oracle: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyOracle), talent360: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyTalent360), greenhouse: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyGreenhouse), workable: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyWorkable)).void }
27
- def initialize(icims: nil, oracle: nil, talent360: nil, greenhouse: nil, workable: nil)
28
+ sig { params(icims: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyIcims), oracle: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyOracle), talent360: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyTalent360), traffit: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyTraffit), greenhouse: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyGreenhouse), workable: T.nilable(Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyWorkable)).void }
29
+ def initialize(icims: nil, oracle: nil, talent360: nil, traffit: nil, greenhouse: nil, workable: nil)
28
30
  @icims = icims
29
31
  @oracle = oracle
30
32
  @talent360 = talent360
33
+ @traffit = traffit
31
34
  @greenhouse = greenhouse
32
35
  @workable = workable
33
36
  end
@@ -38,6 +41,7 @@ module Kombo
38
41
  return false unless @icims == other.icims
39
42
  return false unless @oracle == other.oracle
40
43
  return false unless @talent360 == other.talent360
44
+ return false unless @traffit == other.traffit
41
45
  return false unless @greenhouse == other.greenhouse
42
46
  return false unless @workable == other.workable
43
47
  true
@@ -14,6 +14,8 @@ class Kombo::Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestB
14
14
  def oracle=(str_); end
15
15
  def talent360(); end
16
16
  def talent360=(str_); end
17
+ def traffit(); end
18
+ def traffit=(str_); end
17
19
  def greenhouse(); end
18
20
  def greenhouse=(str_); end
19
21
  def workable(); end
@@ -0,0 +1,32 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Kombo
8
+ module Models
9
+ module Shared
10
+ # Fields specific to Traffit.
11
+ class PostAtsApplicationsApplicationIdResultLinksRequestBodyTraffit
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # Fields that we will write to the Traffit candidate before adding the result note. Custom fields are keyed by their SID with a `_` prefix, for example `{ "_Assessment_Score": "5" }`. The field must be available via integration in Traffit.
16
+ field :candidate, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::Object)), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('candidate') } }
17
+
18
+ sig { params(candidate: T.nilable(T::Hash[Symbol, ::Object])).void }
19
+ def initialize(candidate: nil)
20
+ @candidate = candidate
21
+ end
22
+
23
+ sig { params(other: T.untyped).returns(T::Boolean) }
24
+ def ==(other)
25
+ return false unless other.is_a? self.class
26
+ return false unless @candidate == other.candidate
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Kombo::Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyTraffit
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Shared::PostAtsApplicationsApplicationIdResultLinksRequestBodyTraffit
11
+ def candidate(); end
12
+ def candidate=(str_); end
13
+ end
@@ -18,16 +18,19 @@ module Kombo
18
18
  field :oracle, Crystalline::Nilable.new(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyOracle), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('oracle') } }
19
19
  # Talent360 specific remote fields for the result link.
20
20
  field :talent360, Crystalline::Nilable.new(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyTalent360), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('talent360') } }
21
+ # Fields specific to Traffit.
22
+ field :traffit, Crystalline::Nilable.new(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyTraffit), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('traffit') } }
21
23
  # Fields specific to Greenhouse.
22
24
  field :greenhouse, Crystalline::Nilable.new(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyGreenhouse), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('greenhouse') } }
23
25
  # Workable specific remote fields for ATS actions.
24
26
  field :workable, Crystalline::Nilable.new(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyWorkable), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('workable') } }
25
27
 
26
- sig { params(icims: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyIcims), oracle: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyOracle), talent360: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyTalent360), greenhouse: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyGreenhouse), workable: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyWorkable)).void }
27
- def initialize(icims: nil, oracle: nil, talent360: nil, greenhouse: nil, workable: nil)
28
+ sig { params(icims: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyIcims), oracle: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyOracle), talent360: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyTalent360), traffit: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyTraffit), greenhouse: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyGreenhouse), workable: T.nilable(Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyWorkable)).void }
29
+ def initialize(icims: nil, oracle: nil, talent360: nil, traffit: nil, greenhouse: nil, workable: nil)
28
30
  @icims = icims
29
31
  @oracle = oracle
30
32
  @talent360 = talent360
33
+ @traffit = traffit
31
34
  @greenhouse = greenhouse
32
35
  @workable = workable
33
36
  end
@@ -38,6 +41,7 @@ module Kombo
38
41
  return false unless @icims == other.icims
39
42
  return false unless @oracle == other.oracle
40
43
  return false unless @talent360 == other.talent360
44
+ return false unless @traffit == other.traffit
41
45
  return false unless @greenhouse == other.greenhouse
42
46
  return false unless @workable == other.workable
43
47
  true
@@ -14,6 +14,8 @@ class Kombo::Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyR
14
14
  def oracle=(str_); end
15
15
  def talent360(); end
16
16
  def talent360=(str_); end
17
+ def traffit(); end
18
+ def traffit=(str_); end
17
19
  def greenhouse(); end
18
20
  def greenhouse=(str_); end
19
21
  def workable(); end
@@ -0,0 +1,32 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Kombo
8
+ module Models
9
+ module Shared
10
+ # Fields specific to Traffit.
11
+ class PostAtsCandidatesCandidateIdResultLinksRequestBodyTraffit
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # Fields that we will write to the Traffit candidate before adding the result note. Custom fields are keyed by their SID with a `_` prefix, for example `{ "_Assessment_Score": "5" }`. The field must be available via integration in Traffit.
16
+ field :candidate, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::Object)), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('candidate') } }
17
+
18
+ sig { params(candidate: T.nilable(T::Hash[Symbol, ::Object])).void }
19
+ def initialize(candidate: nil)
20
+ @candidate = candidate
21
+ end
22
+
23
+ sig { params(other: T.untyped).returns(T::Boolean) }
24
+ def ==(other)
25
+ return false unless other.is_a? self.class
26
+ return false unless @candidate == other.candidate
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Kombo::Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyTraffit
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyTraffit
11
+ def candidate(); end
12
+ def candidate=(str_); end
13
+ end
@@ -0,0 +1,32 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Kombo
8
+ module Models
9
+ module Shared
10
+ # Fields specific to Emply People.
11
+ class PostAtsCandidatesRequestBodyEmplypeople
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # Form data written to the application right after it is created, keyed by Emply People form ID. Each value is sent as-is as the `formData` of `PUT /v2/applications/{id}/form-data/{formId}`. Use it for questions that are not on the job's application form.
16
+ field :form_data, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::Object)), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('form_data') } }
17
+
18
+ sig { params(form_data: T.nilable(T::Hash[Symbol, ::Object])).void }
19
+ def initialize(form_data: nil)
20
+ @form_data = form_data
21
+ end
22
+
23
+ sig { params(other: T.untyped).returns(T::Boolean) }
24
+ def ==(other)
25
+ return false unless other.is_a? self.class
26
+ return false unless @form_data == other.form_data
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Kombo::Models::Shared::PostAtsCandidatesRequestBodyEmplypeople
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Shared::PostAtsCandidatesRequestBodyEmplypeople
11
+ def form_data(); end
12
+ def form_data=(str_); end
13
+ 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 Kombo
8
+ module Models
9
+ module Shared
10
+ # Consent fields passed through to Fountain when creating an applicant. See https://developer.fountain.com/reference/post_v2-applicants.
11
+ class PostAtsCandidatesRequestBodyFountain
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # Whether the applicant consented to transactional SMS about their current application. Fountain requires this on create from November 17, 2026.
16
+ field :consent_sms_transactional, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('consent_sms_transactional') } }
17
+ # Whether the applicant consented to marketing SMS about future job opportunities. Fountain requires this on create from November 17, 2026. This is separate from transactional SMS consent.
18
+ field :consent_sms_marketing, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('consent_sms_marketing') } }
19
+ # Whether the applicant consented to transactional calls about their current application. Fountain requires this on create from November 17, 2026.
20
+ field :consent_calls_transactional, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('consent_calls_transactional') } }
21
+ # Whether the applicant consented to marketing calls about future job opportunities. Fountain requires this on create from November 17, 2026. This is separate from transactional call consent.
22
+ field :consent_calls_marketing, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('consent_calls_marketing') } }
23
+
24
+ sig { params(consent_sms_transactional: T.nilable(T::Boolean), consent_sms_marketing: T.nilable(T::Boolean), consent_calls_transactional: T.nilable(T::Boolean), consent_calls_marketing: T.nilable(T::Boolean)).void }
25
+ def initialize(consent_sms_transactional: nil, consent_sms_marketing: nil, consent_calls_transactional: nil, consent_calls_marketing: nil)
26
+ @consent_sms_transactional = consent_sms_transactional
27
+ @consent_sms_marketing = consent_sms_marketing
28
+ @consent_calls_transactional = consent_calls_transactional
29
+ @consent_calls_marketing = consent_calls_marketing
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 @consent_sms_transactional == other.consent_sms_transactional
36
+ return false unless @consent_sms_marketing == other.consent_sms_marketing
37
+ return false unless @consent_calls_transactional == other.consent_calls_transactional
38
+ return false unless @consent_calls_marketing == other.consent_calls_marketing
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 Kombo::Models::Shared::PostAtsCandidatesRequestBodyFountain
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Shared::PostAtsCandidatesRequestBodyFountain
11
+ def consent_sms_transactional(); end
12
+ def consent_sms_transactional=(str_); end
13
+ def consent_sms_marketing(); end
14
+ def consent_sms_marketing=(str_); end
15
+ def consent_calls_transactional(); end
16
+ def consent_calls_transactional=(str_); end
17
+ def consent_calls_marketing(); end
18
+ def consent_calls_marketing=(str_); end
19
+ end
@@ -0,0 +1,32 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Kombo
8
+ module Models
9
+ module Shared
10
+ # Fields specific to iCIMS.
11
+ class PostAtsCandidatesRequestBodyIcims
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # Fields that we will pass through to the iCIMS applicant workflow when it is created. For example `sourcechannel` or custom `fieldNNNN` IDs.
16
+ field :application, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::Object)), { 'format_json': { 'letter_case': ::Kombo::Utils.field_name('application') } }
17
+
18
+ sig { params(application: T.nilable(T::Hash[Symbol, ::Object])).void }
19
+ def initialize(application: nil)
20
+ @application = application
21
+ end
22
+
23
+ sig { params(other: T.untyped).returns(T::Boolean) }
24
+ def ==(other)
25
+ return false unless other.is_a? self.class
26
+ return false unless @application == other.application
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Kombo::Models::Shared::PostAtsCandidatesRequestBodyIcims
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Shared::PostAtsCandidatesRequestBodyIcims
11
+ def application(); end
12
+ def application=(str_); end
13
+ end