kombo 1.0.3 → 1.0.5

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 (141) hide show
  1. checksums.yaml +4 -4
  2. data/lib/kombo/ats.rb +157 -1
  3. data/lib/kombo/general.rb +18 -5
  4. data/lib/kombo/hris.rb +165 -8
  5. data/lib/kombo/models/operations/getatsapplications_request.rb +9 -0
  6. data/lib/kombo/models/operations/getatsapplicationstages_request.rb +2 -0
  7. data/lib/kombo/models/operations/getatscandidates_request.rb +8 -0
  8. data/lib/kombo/models/operations/getatsinterviews_request.rb +8 -0
  9. data/lib/kombo/models/operations/getatsjobs_request.rb +11 -0
  10. data/lib/kombo/models/operations/getatsoffers_request.rb +6 -0
  11. data/lib/kombo/models/operations/getatsrejectionreasons_request.rb +2 -0
  12. data/lib/kombo/models/operations/getatsroles_request.rb +75 -0
  13. data/lib/kombo/models/operations/getatsroles_request.rbi +29 -0
  14. data/lib/kombo/models/operations/getatsroles_response.rb +56 -0
  15. data/lib/kombo/models/operations/getatsroles_response.rbi +19 -0
  16. data/lib/kombo/models/operations/getatstags_request.rb +2 -0
  17. data/lib/kombo/models/operations/getatsusers_request.rb +5 -0
  18. data/lib/kombo/models/operations/gethrisabsences_request.rb +4 -0
  19. data/lib/kombo/models/operations/gethrisabsencetypes_request.rb +2 -0
  20. data/lib/kombo/models/operations/gethrisemployeedocumentcategories_request.rb +2 -0
  21. data/lib/kombo/models/operations/gethrisemployees_request.rb +10 -0
  22. data/lib/kombo/models/operations/gethrisemployments_request.rb +2 -0
  23. data/lib/kombo/models/operations/gethrisgroups_request.rb +2 -0
  24. data/lib/kombo/models/operations/gethrislegalentities_request.rb +2 -0
  25. data/lib/kombo/models/operations/gethrislocations_request.rb +2 -0
  26. data/lib/kombo/models/operations/gethrisperformancereviewcycles_request.rb +2 -0
  27. data/lib/kombo/models/operations/gethrisperformancereviews_request.rb +6 -0
  28. data/lib/kombo/models/operations/gethrisstaffingentities_request.rb +85 -0
  29. data/lib/kombo/models/operations/gethrisstaffingentities_request.rbi +31 -0
  30. data/lib/kombo/models/operations/gethrisstaffingentities_response.rb +56 -0
  31. data/lib/kombo/models/operations/gethrisstaffingentities_response.rbi +19 -0
  32. data/lib/kombo/models/operations/gethristimeoffbalances_request.rb +4 -0
  33. data/lib/kombo/models/operations/gethristimesheets_request.rb +2 -0
  34. data/lib/kombo/models/operations.rb +4 -0
  35. data/lib/kombo/models/shared/assessmentorderreceivedwebhookpayload_hiring_team.rb +6 -6
  36. data/lib/kombo/models/shared/assessmentorderreceivedwebhookpayload_hiring_team.rbi +2 -2
  37. data/lib/kombo/models/shared/assessmentorderreceivedwebhookpayload_hiring_team_role.rb +3 -0
  38. data/lib/kombo/models/shared/getassessmentordersopenpositiveresponse_hiring_team.rb +6 -6
  39. data/lib/kombo/models/shared/getassessmentordersopenpositiveresponse_hiring_team.rbi +2 -2
  40. data/lib/kombo/models/shared/getassessmentordersopenpositiveresponse_hiring_team_role.rb +3 -0
  41. data/lib/kombo/models/shared/getatsjobspositiveresponse_hiring_team.rb +13 -3
  42. data/lib/kombo/models/shared/getatsjobspositiveresponse_hiring_team.rbi +2 -0
  43. data/lib/kombo/models/shared/getatsjobspositiveresponse_hiring_team_role.rb +3 -0
  44. data/lib/kombo/models/shared/getatsjobspositiveresponse_scope.rb +21 -0
  45. data/lib/kombo/models/shared/getatsjobspositiveresponse_scope.rbi +11 -0
  46. data/lib/kombo/models/shared/getatsjobspositiveresponse_unified_type.rb +25 -0
  47. data/lib/kombo/models/shared/getatsjobspositiveresponse_unified_type.rbi +11 -0
  48. data/lib/kombo/models/shared/getatsrolespositiveresponse.rb +39 -0
  49. data/lib/kombo/models/shared/getatsrolespositiveresponse.rbi +15 -0
  50. data/lib/kombo/models/shared/getatsrolespositiveresponse_data.rb +36 -0
  51. data/lib/kombo/models/shared/getatsrolespositiveresponse_data.rbi +15 -0
  52. data/lib/kombo/models/shared/getatsrolespositiveresponse_result.rb +58 -0
  53. data/lib/kombo/models/shared/getatsrolespositiveresponse_result.rbi +25 -0
  54. data/lib/kombo/models/shared/getatsrolespositiveresponse_scope.rb +21 -0
  55. data/lib/kombo/models/shared/getatsrolespositiveresponse_scope.rbi +11 -0
  56. data/lib/kombo/models/shared/getatsrolespositiveresponse_unified_type.rb +25 -0
  57. data/lib/kombo/models/shared/getatsrolespositiveresponse_unified_type.rbi +11 -0
  58. data/lib/kombo/models/shared/getatsuserspositiveresponse_result.rb +10 -2
  59. data/lib/kombo/models/shared/getatsuserspositiveresponse_result.rbi +2 -0
  60. data/lib/kombo/models/shared/getatsuserspositiveresponse_scope.rb +21 -0
  61. data/lib/kombo/models/shared/getatsuserspositiveresponse_scope.rbi +11 -0
  62. data/lib/kombo/models/shared/getatsuserspositiveresponse_unified_type.rb +25 -0
  63. data/lib/kombo/models/shared/getatsuserspositiveresponse_unified_type.rbi +11 -0
  64. data/lib/kombo/models/shared/{group.rb → gethrisemployeespositiveresponse_group.rb} +3 -3
  65. data/lib/kombo/models/shared/{group.rbi → gethrisemployeespositiveresponse_group.rbi} +2 -2
  66. data/lib/kombo/models/shared/{group_type.rb → gethrisemployeespositiveresponse_group_type.rb} +2 -2
  67. data/lib/kombo/models/shared/gethrisemployeespositiveresponse_group_type.rbi +11 -0
  68. data/lib/kombo/models/shared/{legal_entity.rb → gethrisemployeespositiveresponse_legal_entity.rb} +1 -1
  69. data/lib/kombo/models/shared/{legal_entity.rbi → gethrisemployeespositiveresponse_legal_entity.rbi} +2 -2
  70. data/lib/kombo/models/shared/gethrisemployeespositiveresponse_result.rb +3 -3
  71. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse.rb +39 -0
  72. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse.rbi +15 -0
  73. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_data.rb +36 -0
  74. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_data.rbi +15 -0
  75. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_employment_type.rb +36 -0
  76. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_employment_type.rbi +15 -0
  77. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_group.rb +44 -0
  78. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_group.rbi +19 -0
  79. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_legal_entity.rb +40 -0
  80. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_legal_entity.rbi +17 -0
  81. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_location.rb +44 -0
  82. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_location.rbi +19 -0
  83. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_result.rb +110 -0
  84. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_result.rbi +47 -0
  85. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_status.rb +31 -0
  86. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_status.rbi +11 -0
  87. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_type.rb +22 -0
  88. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_type.rbi +11 -0
  89. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_unified_type.rb +27 -0
  90. data/lib/kombo/models/shared/gethrisstaffingentitiespositiveresponse_unified_type.rbi +11 -0
  91. data/lib/kombo/models/shared/inlineassessmentorderreceivedwebhookpayload_hiring_team.rb +6 -6
  92. data/lib/kombo/models/shared/inlineassessmentorderreceivedwebhookpayload_hiring_team.rbi +2 -2
  93. data/lib/kombo/models/shared/inlineassessmentorderreceivedwebhookpayload_hiring_team_role.rb +3 -0
  94. data/lib/kombo/models/shared/integration_tool.rb +4 -0
  95. data/lib/kombo/models/shared/job_role.rb +44 -0
  96. data/lib/kombo/models/shared/job_role.rbi +19 -0
  97. data/lib/kombo/models/shared/komboatserror_code.rb +1 -0
  98. data/lib/kombo/models/shared/kombogeneralerror_code.rb +1 -0
  99. data/lib/kombo/models/shared/kombohriserror_code.rb +1 -0
  100. data/lib/kombo/models/shared/model_type.rb +22 -0
  101. data/lib/kombo/models/shared/{group_type.rbi → model_type.rbi} +2 -2
  102. data/lib/kombo/models/shared/name.rb +7 -0
  103. data/lib/kombo/models/shared/postatsapplicationsapplicationidnotesrequestbody_lever.rb +32 -0
  104. data/lib/kombo/models/shared/postatsapplicationsapplicationidnotesrequestbody_lever.rbi +13 -0
  105. data/lib/kombo/models/shared/postatsapplicationsapplicationidnotesrequestbody_remote_fields.rb +6 -2
  106. data/lib/kombo/models/shared/postatsapplicationsapplicationidnotesrequestbody_remote_fields.rbi +2 -0
  107. data/lib/kombo/models/shared/postatscandidatesrequestbody_consent_decisions.rb +48 -0
  108. data/lib/kombo/models/shared/postatscandidatesrequestbody_consent_decisions.rbi +21 -0
  109. data/lib/kombo/models/shared/postatscandidatesrequestbody_dvinci.rb +6 -2
  110. data/lib/kombo/models/shared/postatscandidatesrequestbody_dvinci.rbi +2 -0
  111. data/lib/kombo/models/shared/postatscandidatesrequestbody_remote_fields.rb +6 -2
  112. data/lib/kombo/models/shared/postatscandidatesrequestbody_remote_fields.rbi +2 -0
  113. data/lib/kombo/models/shared/postatscandidatesrequestbody_rexx.rb +32 -0
  114. data/lib/kombo/models/shared/postatscandidatesrequestbody_rexx.rbi +13 -0
  115. data/lib/kombo/models/shared/postatscandidatesrequestbody_smartrecruiters.rb +6 -2
  116. data/lib/kombo/models/shared/postatscandidatesrequestbody_smartrecruiters.rbi +2 -0
  117. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_consent_decisions.rb +48 -0
  118. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_consent_decisions.rbi +21 -0
  119. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_dvinci.rb +6 -2
  120. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_dvinci.rbi +2 -0
  121. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_remote_fields.rb +6 -2
  122. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_remote_fields.rbi +2 -0
  123. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_rexx.rb +32 -0
  124. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_rexx.rbi +13 -0
  125. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_smartrecruiters.rb +6 -2
  126. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_smartrecruiters.rbi +2 -0
  127. data/lib/kombo/models/shared/putassessmentordersassessmentorderidresultrequestbody_recruitee.rb +32 -0
  128. data/lib/kombo/models/shared/putassessmentordersassessmentorderidresultrequestbody_recruitee.rbi +13 -0
  129. data/lib/kombo/models/shared/putassessmentordersassessmentorderidresultrequestbody_remote_fields.rb +6 -2
  130. data/lib/kombo/models/shared/putassessmentordersassessmentorderidresultrequestbody_remote_fields.rbi +2 -0
  131. data/lib/kombo/models/shared/putatsapplicationsapplicationidstagerequestbody_remote_fields.rb +6 -2
  132. data/lib/kombo/models/shared/putatsapplicationsapplicationidstagerequestbody_remote_fields.rbi +2 -0
  133. data/lib/kombo/models/shared/putatsapplicationsapplicationidstagerequestbody_workday.rb +36 -0
  134. data/lib/kombo/models/shared/putatsapplicationsapplicationidstagerequestbody_workday.rbi +15 -0
  135. data/lib/kombo/models/shared/step_type.rb +21 -0
  136. data/lib/kombo/models/shared/step_type.rbi +11 -0
  137. data/lib/kombo/models/shared/system_role.rb +44 -0
  138. data/lib/kombo/models/shared/system_role.rbi +19 -0
  139. data/lib/kombo/models/shared.rb +33 -3
  140. data/lib/kombo/sdkconfiguration.rb +2 -2
  141. metadata +76 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2895104200f6d76cbca2b78c086f00432ab2b060b5b7a0cf2542cdcb007f817f
4
- data.tar.gz: 782c3f707b0ee1f9dd46a55afeb6fba45eaacb3168ba287b9e0f9c51adec28fb
3
+ metadata.gz: f7311b18e322828b293202246d4c8517a11cad908a63d1b959d287dac369ef0b
4
+ data.tar.gz: 93331b5c428af0fb704eff1c5fd0396552ad9f1d9d05c033bf936c9a9250daaf
5
5
  SHA512:
6
- metadata.gz: 230a3571d47f16c4834b82978a8dc04ac985f170833345bd6da57dead1c7f8771a0340ff5368e49c3d50efbdd819b0cb6ff32f6181f7cdbbda66336fc4f42934
7
- data.tar.gz: ad26a8828e152b57f26bacd86228ca8310e39b673f5d7bbcd1a2c21216add93972a2eeab60245f17b39bec328d827a0e043979411ebf6793dc79b9479cf8c736
6
+ metadata.gz: 153c1d876d17d156e7bbacf9555a56d298d2bd78dddddf16a4c6bbdf1e5aa093cc314328a324219233b122d848c5a32d9e1ae630679388ced72967d159799237
7
+ data.tar.gz: 6e07c6d015d2b0512e0b96041b14187970f3f9b9dba5d3dcf4e1894c9c60b2f8a159e07abec5fa0527b211af0ab85fbdda6bf9bdda975f72eb5af7635b33db8d
data/lib/kombo/ats.rb CHANGED
@@ -221,7 +221,8 @@ module Kombo
221
221
  #
222
222
  # ```json
223
223
  # {
224
- # "stage_id": "3PJ8PZhZZa1eEdd2DtPNtVup"
224
+ # "stage_id": "3PJ8PZhZZa1eEdd2DtPNtVup",
225
+ # "remote_fields": {}
225
226
  # }
226
227
  # ```
227
228
  request = Models::Operations::PutAtsApplicationsApplicationIdStageRequest.new(
@@ -3061,6 +3062,161 @@ module Kombo
3061
3062
  end
3062
3063
 
3063
3064
 
3065
+ sig { params(integration_id: T.nilable(::String), cursor: T.nilable(::String), page_size: T.nilable(::Integer), updated_after: T.nilable(::DateTime), include_deleted: T.nilable(T::Boolean), ignore_unsupported_filters: T.nilable(T::Boolean), ids: T.nilable(T::Array[::String]), remote_ids: T.nilable(T::Array[::String]), scopes: T.nilable(T::Array[::String]), timeout_ms: T.nilable(Integer)).returns(Models::Operations::GetAtsRolesResponse) }
3066
+ def get_roles(integration_id: nil, cursor: nil, page_size: nil, updated_after: nil, include_deleted: nil, ignore_unsupported_filters: nil, ids: nil, remote_ids: nil, scopes: nil, timeout_ms: nil)
3067
+ # get_roles - Get roles
3068
+ # Retrieve all roles.
3069
+ #
3070
+ # Visit our in-depth guide about [roles](/ats/features/roles) to learn more.
3071
+ #
3072
+ # Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`
3073
+ request = Models::Operations::GetAtsRolesRequest.new(
3074
+ integration_id: integration_id,
3075
+ cursor: cursor,
3076
+ page_size: page_size,
3077
+ updated_after: updated_after,
3078
+ include_deleted: include_deleted,
3079
+ ignore_unsupported_filters: ignore_unsupported_filters,
3080
+ ids: ids,
3081
+ remote_ids: remote_ids,
3082
+ scopes: scopes
3083
+ )
3084
+ url, params = @sdk_configuration.get_server_details
3085
+ base_url = Utils.template_url(url, params)
3086
+ url = "#{base_url}/ats/roles"
3087
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
3088
+ headers = T.cast(headers, T::Hash[String, String])
3089
+ query_params = Utils.get_query_params(Models::Operations::GetAtsRolesRequest, request, nil, @sdk_configuration.globals)
3090
+ headers['Accept'] = 'application/json'
3091
+ headers['user-agent'] = @sdk_configuration.user_agent
3092
+
3093
+ security = @sdk_configuration.security_source&.call
3094
+
3095
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
3096
+ timeout ||= @sdk_configuration.timeout
3097
+
3098
+
3099
+ connection = @sdk_configuration.client
3100
+
3101
+ hook_ctx = SDKHooks::HookContext.new(
3102
+ config: @sdk_configuration,
3103
+ base_url: base_url,
3104
+ oauth2_scopes: nil,
3105
+ operation_id: 'GetAtsRoles',
3106
+ security_source: @sdk_configuration.security_source
3107
+ )
3108
+
3109
+ error = T.let(nil, T.nilable(StandardError))
3110
+ http_response = T.let(nil, T.nilable(Faraday::Response))
3111
+
3112
+
3113
+ begin
3114
+ http_response = T.must(connection).get(url) do |req|
3115
+ req.headers.merge!(headers)
3116
+ req.options.timeout = timeout unless timeout.nil?
3117
+ req.params = query_params
3118
+ Utils.configure_request_security(req, security)
3119
+
3120
+ @sdk_configuration.hooks.before_request(
3121
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
3122
+ hook_ctx: hook_ctx
3123
+ ),
3124
+ request: req
3125
+ )
3126
+ end
3127
+ rescue StandardError => e
3128
+ error = e
3129
+ ensure
3130
+ if http_response.nil? || Utils.error_status?(http_response.status)
3131
+ http_response = @sdk_configuration.hooks.after_error(
3132
+ error: error,
3133
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
3134
+ hook_ctx: hook_ctx
3135
+ ),
3136
+ response: http_response
3137
+ )
3138
+ else
3139
+ http_response = @sdk_configuration.hooks.after_success(
3140
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3141
+ hook_ctx: hook_ctx
3142
+ ),
3143
+ response: http_response
3144
+ )
3145
+ end
3146
+
3147
+ if http_response.nil?
3148
+ raise error if !error.nil?
3149
+ raise 'no response'
3150
+ end
3151
+ end
3152
+
3153
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
3154
+ if Utils.match_status_code(http_response.status, ['200'])
3155
+ if Utils.match_content_type(content_type, 'application/json')
3156
+ http_response = @sdk_configuration.hooks.after_success(
3157
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3158
+ hook_ctx: hook_ctx
3159
+ ),
3160
+ response: http_response
3161
+ )
3162
+ response_data = http_response.env.response_body
3163
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::GetAtsRolesPositiveResponse)
3164
+ response = Models::Operations::GetAtsRolesResponse.new(
3165
+ status_code: http_response.status,
3166
+ content_type: content_type,
3167
+ raw_response: http_response,
3168
+ get_ats_roles_positive_response: T.unsafe(obj)
3169
+ )
3170
+ sdk = self
3171
+
3172
+ response.next_page = proc do
3173
+ next_cursor = Janeway.enum_for('$.data.next', JSON.parse(response_data)).search
3174
+ if next_cursor.nil?
3175
+ next nil
3176
+ else
3177
+ next_cursor = next_cursor[0]
3178
+ if next_cursor.nil?
3179
+ next nil
3180
+ end
3181
+ end
3182
+
3183
+ sdk.get_roles(
3184
+ integration_id: integration_id,
3185
+ cursor: next_cursor,
3186
+ page_size: page_size,
3187
+ updated_after: updated_after,
3188
+ include_deleted: include_deleted,
3189
+ ignore_unsupported_filters: ignore_unsupported_filters,
3190
+ ids: ids,
3191
+ remote_ids: remote_ids,
3192
+ scopes: scopes
3193
+ )
3194
+ end
3195
+
3196
+
3197
+ return response
3198
+ else
3199
+ raise ::Kombo::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
3200
+ end
3201
+ else
3202
+ if Utils.match_content_type(content_type, 'application/json')
3203
+ http_response = @sdk_configuration.hooks.after_success(
3204
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3205
+ hook_ctx: hook_ctx
3206
+ ),
3207
+ response: http_response
3208
+ )
3209
+ response_data = http_response.env.response_body
3210
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::KomboAtsError)
3211
+ obj.raw_response = http_response
3212
+ raise obj
3213
+ else
3214
+ raise ::Kombo::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
3215
+ end
3216
+ end
3217
+ end
3218
+
3219
+
3064
3220
  sig { params(integration_id: T.nilable(::String), cursor: T.nilable(::String), page_size: T.nilable(::Integer), updated_after: T.nilable(::DateTime), include_deleted: T.nilable(T::Boolean), ignore_unsupported_filters: T.nilable(T::Boolean), ids: T.nilable(T::Array[::String]), remote_ids: T.nilable(T::Array[::String]), timeout_ms: T.nilable(Integer)).returns(Models::Operations::GetAtsOffersResponse) }
3065
3221
  def get_offers(integration_id: nil, cursor: nil, page_size: nil, updated_after: nil, include_deleted: nil, ignore_unsupported_filters: nil, ids: nil, remote_ids: nil, timeout_ms: nil)
3066
3222
  # get_offers - Get offers
data/lib/kombo/general.rb CHANGED
@@ -314,6 +314,7 @@ module Kombo
314
314
  # |BoondManager|`boondmanager/api`|BoondManager [REST API](https://ui.boondmanager.com/administrator/developer/apisandbox). We automatically authenticate all requests and use `https://ui.boondmanager.com/api` as the base URL.|
315
315
  # |Breezy HR|`breezyhr/v3`|[BreezyHR's v3 API](https://developer.breezy.hr/reference/overview). We automatically authenticate all requests and use "https://api.breezy.hr/v3/" as the base URL.|
316
316
  # |Bullhorn|`bullhorn/default`|[Bullhorn's API](https://bullhorn.github.io/rest-api-docs/index.html). We automatically use the right `https://rest.bullhornstaffing.com/rest-services/\{corpToken\}` base URL.|
317
+ # |CareerPlug|`careerplug/api`|We use `https://api.careerplug.com` as the base URL. Find the official docs [here](https://api.careerplug.com/docs#api).|
317
318
  # |Carerix|`carerix/api`|Carerix [REST API](https://docs.carerix.io/rest/introduction). We automatically authenticate all requests and use `https://api.carerix.com` as the base URL. Please note that Carerix uses XML for request and response bodies.|
318
319
  # |CEGID TalentSoft Customer|`talentsoftcustomer/v1`|Cegid Talentsoft Recruiting FrontOffice API: [API Documentation](https://developers.cegid.com/api-details#api=cegid-talentsoft-recruiting-frontoffice) We automatically authenticate all requests and use `https://\{customer_subdomain\}.talent-soft.com/api/v1` as the base URL.|
319
320
  # |CEGID TalentSoft FrontOffice|`talentsoft/v2`|Cegid Talentsoft Recruiting FrontOffice [API](https://developers.cegid.com/api-details). We automatically authenticate all requests using the provided credentials and use `https://\{domain\}/api/v2` as the base URL.|
@@ -323,9 +324,11 @@ module Kombo
323
324
  # |Connexys By Bullhorn|`connexys/api`|[Connexy's API](https://api.conexsys.com/client/v2/docs/#section/Overview). We automatically authenticate all requests and use `https://\{connexys_domain\}/` as the base URL.|
324
325
  # |Cornerstone OnDemand|`cornerstoneondemand/learning`|Cornerstone's [Learning API](https://csod.dev/reference/learning/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.|
325
326
  # |Cornerstone OnDemand|`cornerstoneondemand/recruiting`|Cornerstone's [Recruiting API](https://csod.dev/reference/recruiting/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.|
327
+ # |Cornerstone TalentLink|`cornerstonetalentlink/apply`|Cornerstone TalentLink's Apply API. We automatically authenticate all requests using the provided credentials and API key, and use `https://apiproxy.shared.lumessetalentlink.com/apply` as the base URL.|
328
+ # |Cornerstone TalentLink|`cornerstonetalentlink/rest`|Cornerstone TalentLink's [REST API](https://developer.lumesse-talenthub.com/rest-api-developers-guide/1.21.33/index.html?page=rest-api&subpage=introduction). We automatically authenticate all requests using the provided credentials and API key, and use `https://apiproxy.shared.lumessetalentlink.com/tlk/rest` as the base URL.|
326
329
  # |Coveto (legacy SOAP API)|`coveto/public`|We automatically use `https://\{subdomain\}.coveto.de` as the base URL.|
327
330
  # |Coveto (REST API)|`covetorest/v1`|We automatically use `https://\{subdomain\}.coveto.de/public/api/v1` as the base URL. https://demo.coveto.de/swagger-ui/index.html#/|
328
- # |Crelate|`crelate/api`|Crelate [REST API](https://help.crelate.com/en/articles/4120536-crelate-api-developer-guide). We automatically authenticate all requests and use `https://app.crelate.com/api3` as the base URL.|
331
+ # |Crelate|`crelate/api`|Crelate [REST API](https://app.crelate.com/api3/docs/index.html). We automatically authenticate all requests and use `https://app.crelate.com/api3` as the base URL.|
329
332
  # |d.vinci admin|`dvinciadmin/odata-api`|[DVinci ODATA API](https://dvinci.freshdesk.com/en/support/solutions/articles/75000059523-odata-reporting-api).|
330
333
  # |d.vinci admin|`dvinciadmin/rest-api`|[DVinci REST API](https://static.dvinci-easy.com/files/d.vinci%20rest-api.html).|
331
334
  # |d.vinci|`dvinci/apply-api`|The [DVinci Apply API](https://static.dvinci-easy.com/files/d.vinci%20application-apply-api.html). All requests are authenticated by Kombo and use `https://\{dvinci_domain\}/p/\{portal_path\}/` as the base URL.|
@@ -336,6 +339,7 @@ module Kombo
336
339
  # |DATEV|`datevhr/hr:payrollreports`|DATEV's [hr:payrollreports](https://developer.datev.de/en/product-detail/hr-payrollreports/2.0.0/overview) API. We automatically authenticate all requests and use `https://hr-payrollreports.api.datev.de/\{platform|platform-sandbox\}/v1/clients/\{client-id\}/` as the base URL.|
337
340
  # |Dayforce|`dayforce/V1`|[Dayforce's API](https://developers.dayforce.com/Build/Home.aspx). We automatically authenticate all requests and use `\{\{baseUrl\}\}/Api/\{\{clientNamespace\}\}/V1` as the base URL|
338
341
  # |Deel|`deel/api`|Deel's [API](https://developer.deel.com/reference/). We automatically authenticate all requests using the provided credentials and use `https://\{api_domain\}/rest` as the base URL.|
342
+ # |Digital Recruiters|`digitalrecruiters/api`|Cegid Digital Recruiters [Talent Acquisition API](https://cegid-hr-developers.talentsoft.net/docs/tutorial-basics/Talent%20Acquisition/Getting%20Started). We automatically authenticate all requests by replacing `:token` in the request URL with your configured access token and use your configured Digital Recruiters domain as the base URL.|
339
343
  # |Eightfold|`eightfold/api`|Eightfold's [API](https://apidocs.eightfold.ai/). We automatically authenticate all requests and use `https://apiv2.\{region\}/api/v2/core/` as the base URL.|
340
344
  # |Employment Hero|`employmenthero/default`|EmploymentHero [API](https://developer.employmenthero.com/api-references/#icon-book-open-introduction). We automatically authenticate all requests using the credentials supplied by the customer and use `https://api.employmenthero.com/api` as the base URL.|
341
345
  # |Eploy|`eploy/api`|Eploy's [API](https://www.eploy.com/resources/developers/api-documentation/). We automatically authenticate all requests and use `https://\{subdomain\}.eploy.net/api` as the base URL.|
@@ -352,15 +356,17 @@ module Kombo
352
356
  # |Greenhouse Job Board|`greenhousejobboard/boards-api`|[Greenhouse Job Board API](https://developers.greenhouse.io/job-board). We automatically authenticate all requests and use 'https://boards-api.greenhouse.io/v1/boards/\{job_board_token\}' as the base URL. Optionally, you can provide a custom job_board_token to use a different job board.|
353
357
  # |Greenhouse|`greenhouse/harvest-v2`|Greenhouse [Harvest API v2](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v2` as the base URL.|
354
358
  # |Greenhouse|`greenhouse/harvest`|Greenhouse [Harvest API v1](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v1` as the base URL.|
359
+ # |Gusto|`gusto/v1`|[Gusto API](https://docs.gusto.com/app-integrations/docs/introduction). We automatically authenticate all requests with OAuth and use `\{api_base_url\}/v1` as the base URL (`https://api.gusto.com/v1` in production, `https://api.gusto-demo.com/v1` in development).|
355
360
  # |Hailey HR|`haileyhr/api`|Hailey HR's [API](https://api.haileyhr.app/docs/index.html). We automatically authenticate all requests using the provided credentials and use `https://api.haileyhr.app` as the base URL.|
356
361
  # |Hansalog|`hansalog/vision`|Hansalog's [Vision API](https://hansalog-vision.document360.io/docs/). We automatically authenticate all requests and use `https://\{subdomain\}.hansalog-cloud.de/vision` as the base URL.|
357
362
  # |Haufe Umantis|`umantis/v1`|[Umantis API v1](https://recruitingapp-91005709.umantis.com/api/v1/swagger-ui). We automatically authenticate all requests and use `https://\{subdomain\}.umantis.com/api/v1` as the base URL.|
358
363
  # |HeavenHR|`heavenhr/v2`|[HeavenHR API](https://api.heavenhr.com/). We automatically authenticate all requests using the provided credentials and use `https://api.heavenhr.com/api/v2` as the base URL.|
359
364
  # |Heyrecruit|`heyrecruit/v2`|[Heyrecruit's v2 API](https://documenter.getpostman.com/view/23241256/2s9YysBLcf#47e271ac-47c8-4c75-9cc6-b8c506e9dad6). We automatically authenticate all requests using the client ID and secret and use `https://app.heyrecruit.de/api/v2` as the base URL.|
360
- # |HiBob|`hibob/docs`|This passthrough is only used for fetching employee documents in Hibob. It is present as a workaround while we are working on a new endpoint for fetching documents in HRIS. It should not be used for any other purpose. We automatically authenticate all requests using the service user credentials and use `https://app.hibob.com/api/docs/employees/` as the base URL.|
365
+ # |HiBob|`hibob/docs`|This passthrough is only used for fetching employee documents in HiBob. It is present as a workaround while we are working on a new endpoint for fetching documents in HRIS. It should not be used for any other purpose. We automatically authenticate all requests using the service user credentials and use `https://app.hibob.com/api/docs/employees/` as the base URL.|
361
366
  # |HiBob|`hibob/hire`|[HiBob's Hire API](https://apidocs.hibob.com/docs/how-to-integrate-with-ats-hire-api). We automatically authenticate all requests using the hire service user credentials. The base URL is configured during the integration setup.|
362
- # |HiBob|`hibob/v1`|[HibBob's v1 API](https://apidocs.hibob.com/reference/get_people). We automatically authenticate all requests using the service user credentials (or, for old integrations, the API key) and use `https://api.hibob.com/v1` as the base URL.|
367
+ # |HiBob|`hibob/v1`|[HiBob's v1 API](https://apidocs.hibob.com/reference/get_people). We automatically authenticate all requests using the service user credentials (or, for old integrations, the API key) and use `https://api.hibob.com/v1` as the base URL.|
363
368
  # |HoorayHR|`hoorayhr/api`|[HoorayHR API](https://api.hoorayhr.io/documentation/). We automatically authenticate all requests and use `https://api.hoorayhr.io` as the base URL.|
369
+ # |HR Office|`hroffice/soap`|[HROffice SOAP API](https://api.hroffice.nl/HROfficeCoreService.asmx). We automatically authenticate all requests and wrap them in a SOAP envelope. Build the request `Body` with the raw XML parameters for your operation (e.g., `\<languageId\>1\</languageId\>`). Use `/` as your `path`. Set your `method` to `POST`. You need to specify the `api_options` object and set `operation_name` to the SOAP operation you want to call (e.g., `GetAllJobByLanguage`).|
364
370
  # |HR WORKS|`hrworks/v2`|HRWorks's v2 [API](https://developers.hrworks.de/2.0/endpoints). We automatically authenticate all requests using the customer credentials.|
365
371
  # |HR4YOU|`hr4you/v2`|[HR4YOU's v2 API](https://apiprodemo.hr4you.org/api2/docs). We automatically authenticate all requests and use the customers provided base URL (e.g., https://`\{base_url\}`/ or https://`\{subdomain\}.hr4you.org`/).|
366
372
  # |Humaans|`humaans/api`|Humaans' [API](https://docs.humaans.io/api/). We automatically authenticate all requests using the API key and use `https://app.humaans.io/api` as the base URL.|
@@ -383,7 +389,8 @@ module Kombo
383
389
  # |Leapsome|`leapsome/scim`|Leapsome [SCIM API](https://api.leapsome.com/scim/v1/api-docs/). We automatically authenticate all requests using the credentials supplied by the customer and use `https://api.leapsome.com/scim/v1` as the base URL.|
384
390
  # |Leapsome|`leapsome/v1`|Leapsome [API](https://api.leapsome.com/v1/api-docs/). We automatically authenticate all requests using the credentials supplied by the customer and use `https://api.leapsome.com/v1` as the base URL.|
385
391
  # |Lever|`lever/v1`|[Lever's v1 API](https://hire.lever.co/developer/documentation). We automatically authenticate all requests using the partner credentials which have been configured in the Lever tool settings (this uses Kombo's partner credentials by default).|
386
- # |LinkedIn Learning|`linkedinlearning/v2`|LinkedIn Learning [API v2](https://learn.microsoft.com/en-us/linkedin/learning/). We automatically handle authentication and use `https://api.linkedin.com` as the base URL.|
392
+ # |LinkedIn Learning|`linkedinlearning/v2`|LinkedIn Learning [API v2](https://learn.microsoft.com/en-us/linkedin/learning/). We automatically handle authentication and use `https://api.linkedin.com/v2` as the base URL.|
393
+ # |Loket|`loket/api`|[Loket's REST API](https://developers.loket.nl/). We automatically authenticate all requests and use `https://\{api_domain\}` as the base URL, where `api_domain` is the API domain configured during integration setup (e.g. `api.loket.nl`).|
387
394
  # |Loxo|`loxo/v1`|[Loxo's API](https://loxo.readme.io/reference/loxo-api). We automatically authenticate all requests and use 'https://app.loxo.co/api/\{agency_slug\}' as base URL.|
388
395
  # |Lucca|`lucca/api`|[Luccas's API](https://developers.lucca.fr/api-reference/legacy/introduction). We automatically authenticate all requests and use 'https://\{account\}.\{ilucca|ilucca-demo\}.\{region\}/' as the base URL.|
389
396
  # |Manatal|`manatal/career-page`|Manatal's Career Page API. We use `https://api.manatal.com/open/v3/career-page/\{client_slug\}` as the base URL.|
@@ -399,6 +406,7 @@ module Kombo
399
406
  # |Oracle HCM|`oraclehcm/api`|Oracle HCM Cloud [REST API](https://docs.oracle.com/en/cloud/saas/human-resources/24d/farws/index.html). We automatically authenticate all requests and use `https://\{domain\}/` as the base URL, where domain is your Oracle Cloud domain.|
400
407
  # |Oracle Recruiting Cloud|`oraclerecruiting/rest`|[Oracle's REST API](https://docs.oracle.com/en/cloud/saas/human-resources/24d/farws/rest-endpoints.html). We automatically authenticate all requests and use 'https://\{company_url\}' as the base url.|
401
408
  # |Oracle Recruiting Cloud|`oraclerecruiting/rest`|[Oracles's REST API](https://docs.oracle.com/en/cloud/saas/human-resources/24d/farws/rest-endpoints.html). We automatically authenticate all requests and use 'https://\{company_url\}' as the base url.|
409
+ # |OTYS|`otys/json-rpc`|[OTYS JSON-RPC API](https://ows.otys.nl/info/). We authenticate with your stored API key and inject the session token as the first element of the JSON-RPC `params` array on each request (except `loginByUid`, which uses `params` as sent). Requests use `https://ows.otys.nl` as the base URL (for example `POST /jservice.php` with the RPC method in the URL fragment, matching OTYS conventions).|
402
410
  # |Paradox|`paradox/v1`|We use `\{api_url\}/api/v1` as the base URL. Find the official docs [here](https://paradox.readme.io/).|
403
411
  # |Paradox|`paradox/v1public`|We use `\{api_url\}/api/v1/public` as the base URL. Find the official docs [here](https://paradox.readme.io/).|
404
412
  # |Paychex|`paychex/api`|Paychex [REST API](https://developer.paychex.com/documentation). We automatically authenticate all requests and use `https://api.paychex.com` as the base URL.|
@@ -418,7 +426,9 @@ module Kombo
418
426
  # |Phenom|`phenom/rest-api`|The [Phenom API](https://developer.phenom.com/). We automatically authenticate all requests and use `https://api-stg.phenompro.com` as the base URL.|
419
427
  # |Pinpoint|`pinpoint/v1`|Pinpoint's [JSON:API](https://developers.pinpointhq.com/docs). We automatically authenticate all requests using the `X-API-KEY` header and use `https://\{subdomain\}.pinpointhq.com/api/v1` as the base URL.|
420
428
  # |Planday|`planday/api`|Planday's [HR API v1.0](https://openapi.planday.com/api/hr?version=v1.0). We automatically authenticate all requests and use `https://openapi.planday.com` as the base URL.|
429
+ # |Recruit CRM|`recruitcrm/api`|We use `https://api.recruitcrm.io` as the base URL. Find the official docs [here](https://docs.recruitcrm.io/docs/rcrm-api-reference/ZG9jOjMyNzk0NA-getting-started).|
421
430
  # |Recruitee|`recruitee/default`|The [Recruitee API](https://api.recruitee.com/docs/index.html). We automatically authenticate all requests and use `https://api.recruitee.com/c/\{company_id\}` as the base URL.|
431
+ # |Recruitee|`recruitee/v1`|We use `https://api.recruitee.com/c/\{company_id\}` as the base URL. Find the official docs [here](https://docs.recruitee.com/reference).|
422
432
  # |RecruiterFlow|`recruiterflow/v1`|RecruiterFlow API [docs](https://docs.recruiterflow.com/). We automatically authenticate all requests using the RF-Api-Key header and use `https://api.recruiterflow.com` as the base URL.|
423
433
  # |Remote|`remotecom/default`|Remote's [API](https://remote.com/resources/api/getting-started). We automatically authenticate all requests using provided credentials.|
424
434
  # |rexx systems|`rexx/default`|Rexx's HRIS export API. There is only one endpoint: `Get /`|
@@ -439,10 +449,12 @@ module Kombo
439
449
  # |Sympa|`sympa/api`|Sympa's [API](https://documenter.getpostman.com/view/33639379/2sA3kXG1vX#intro). We automatically authenticate all requests and use `https://api.sympahr.net/api/` as the base URL.|
440
450
  # |Taleez|`taleez/0`|[Taleez's API](https://api.taleez.com/swagger-ui/index.html). We automatically authenticate all requests and use `https://api.taleez.com/0` as the base URL.|
441
451
  # |Talention|`talention/v1`|Talention's API. We automatically authenticate all requests and use `https://\{api_domain\}/tms/\{account_id\}/external/api/1.0` as the base URL. Documentation is provided privately by Talention. Contact Kombo support for assistance with specific endpoints.|
452
+ # |TalentLMS|`talentlms/v2`|We use `https://\{subdomain\}.talentlms.com/api/v2` as the base URL.|
442
453
  # |Taleo|`taleo/soap`|[Taleo's API](https://docs.oracle.com/en/cloud/saas/taleo-enterprise/23b/otwsu/c-taleoapi.html). We automatically authenticate all requests and use 'https://\{your-subdomain\}.taleo.net/enterprise/soap' as base URL.|
443
454
  # |Teamtailor Job Boards|`teamtailorjobboards/direct-apply`|Teamtailor's [Job Board Direct Apply API](https://partner.teamtailor.com/job_boards/direct_apply/#direct-apply). We automatically authenticate all requests and use `https://5qbn6o9x4h.execute-api.eu-west-1.amazonaws.com/production` as the base URL. All requests are automatically signed with HMAC-SHA256 signature.|
444
455
  # |Teamtailor|`teamtailor/v1`|We use `https://api.teamtailor.com/v1` as the base URL. Find the official docs [here](https://docs.teamtailor.com/).|
445
456
  # |TRAFFIT|`traffit/v2`|Traffit's [v2 API](https://api.traffit.com). We authenticate all requests with the Traffit API key and use the base URL `https://yourdomain.traffit.com/api/integration/v2`.|
457
+ # |TriNet PEO|`trinetpeo/v1`|We use `https://api.trinet.com` as the base URL. Find the official docs [here](https://developers.trinet.com).|
446
458
  # |Udemy Business|`udemy/learning`|Udemy Business REST API. We automatically handle authentication and use `https://\{account_name\}.udemy.com/api-2.0/organizations/\{account_id\}/` as the base URL.|
447
459
  # |UKG Pro|`ukgpro/default`|[UKG Pro's HRIS API](https://developer.ukg.com/hcm/reference/get_personnel-v1-person-details). We automatically authenticate all requests and use `https://\{hostname\}` as the base URL.|
448
460
  # |UKG Pro|`ukgpro/recruting`|[UKG Pro's Recruiting API](https://developer.ukg.com/hcm/reference/retrieveapplications). We automatically authenticate all requests and use `https://\{hostname\}/talent/recruiting/v2/\{tenantalias\}/api` as the base URL.|
@@ -450,7 +462,8 @@ module Kombo
450
462
  # |Visma Peple|`peple/hrm`|[Visma Payroll Reporting API](https://api.analytics1.hrm.visma.net/docs/openapi.html). We automatically authenticate all requests using the client credentials and use 'https://api.analytics1.hrm.visma.net' as the base URL.|
451
463
  # |Visma Raet - Youforce|`youforce/v1.0`|[Youforce's basic v1.0 API](https://vr-api-integration.github.io/youforce-api-documentation/postman_collections.html). We automatically authenticate all requests and use 'https://api.youforce.com' as base URL.|
452
464
  # |Visma YouServe|`youserve/learning`|Visma YouServe [Learning API](https://youserve-domain-api.github.io/SwaggerUI/learning.html). We automatically authenticate all requests using OAuth 2.0 with the provided credentials and use `https://api.youserve.nl/learning/v1.0` as the base URL.|
453
- # |Workable|`workable/v1`|Workable's [API](https://workable.readme.io/reference/generate-an-access-token). We automatically authenticate all requests using the client ID and secret and use `https://\{subdomain\}.\{environment\}.com/spi/v3` as the base URL.|
465
+ # |Workable|`workable/v1`|**Deprecated: Use `v3` instead.** Workable's [API](https://workable.readme.io/reference/generate-an-access-token). We automatically authenticate all requests using the client ID and secret and use `https://\{subdomain\}.\{environment\}.com/spi/v3` as the base URL.|
466
+ # |Workable|`workable/v3`|Workable's [API](https://workable.readme.io/reference/generate-an-access-token). We automatically authenticate all requests using the client ID and secret and use `https://\{subdomain\}.\{environment\}.com/spi/v3` as the base URL.|
454
467
  # |Workday|`workday/rest`|[Workday's REST API](https://community.workday.com/sites/default/files/file-hosting/restapi/index.html). We automatically authenticate all requests and use the correct Workday REST base URL for your tenant. The base URL follows the format: https://\{domain\}/api/\{service_name\}/\{version\}/\{tenant\}. You can specify any valid REST endpoint and method. See the Workday REST API documentation for available endpoints. You must specify the `api_options` object and set `service_name` to the name of the service you want to call. You can also specify the `version` (e.g., "v1", "v2"); if omitted, it defaults to "v1".|
455
468
  # |Workday|`workday/soap`|[Workday's SOAP API](https://community.workday.com/sites/default/files/file-hosting/productionapi/index.html). We automatically authenticate all requests. Set `data` to your raw xml string. Use `/` as your `path`, as we will always send requests to `https://\{domain\}/ccx/service/\{tenant\}/\{service_name\}`. Set your `method` to `POST`. You need to specify the `api_options` object and set `service_name` to the name of the service you want to call. Find all available services [here](https://community.workday.com/sites/default/files/file-hosting/productionapi/versions/v41.0/index.html). The string that you submit as `data` will be the content of the `soapenv:Body` tag in the request. You can set the `service_version` to any valid Workday service version (the default is `38.2`).|
456
469
  # |workforce.com|`workforcecom/api`|Workforce.com [API](https://my.workforce.com/api/v2/documentation). We automatically authenticate all requests using the provided credentials and use `https://my.tanda.co` as the base URL.|
data/lib/kombo/hris.rb CHANGED
@@ -2399,10 +2399,6 @@ module Kombo
2399
2399
  #
2400
2400
  # Retrieve performance review cycles data from HRIS tools.
2401
2401
  #
2402
- # <Warning>**Open Beta Feature:** This endpoint is currently in beta. Please reach out to our support team if you need assistance with implementation.</Warning>
2403
- #
2404
- #
2405
- #
2406
2402
  # Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`
2407
2403
  request = Models::Operations::GetHrisPerformanceReviewCyclesRequest.new(
2408
2404
  integration_id: integration_id,
@@ -2556,10 +2552,6 @@ module Kombo
2556
2552
  #
2557
2553
  # Retrieve performance review data from HRIS tools.
2558
2554
  #
2559
- # <Warning>**Open Beta Feature:** This endpoint is currently in beta. Please reach out to our support team if you need assistance with implementation.</Warning>
2560
- #
2561
- #
2562
- #
2563
2555
  # Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`
2564
2556
  request = Models::Operations::GetHrisPerformanceReviewsRequest.new(
2565
2557
  integration_id: integration_id,
@@ -2689,6 +2681,171 @@ module Kombo
2689
2681
  end
2690
2682
 
2691
2683
 
2684
+ return response
2685
+ else
2686
+ raise ::Kombo::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
2687
+ end
2688
+ else
2689
+ if Utils.match_content_type(content_type, 'application/json')
2690
+ http_response = @sdk_configuration.hooks.after_success(
2691
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2692
+ hook_ctx: hook_ctx
2693
+ ),
2694
+ response: http_response
2695
+ )
2696
+ response_data = http_response.env.response_body
2697
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::KomboHrisError)
2698
+ obj.raw_response = http_response
2699
+ raise obj
2700
+ else
2701
+ raise ::Kombo::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
2702
+ end
2703
+ end
2704
+ end
2705
+
2706
+
2707
+ sig { params(integration_id: T.nilable(::String), cursor: T.nilable(::String), page_size: T.nilable(::Integer), updated_after: T.nilable(::DateTime), include_deleted: T.nilable(T::Boolean), ignore_unsupported_filters: T.nilable(T::Boolean), ids: T.nilable(T::Array[::String]), remote_ids: T.nilable(T::Array[::String]), model_types: T.nilable(T::Array[::String]), statuses: T.nilable(T::Array[::String]), timeout_ms: T.nilable(Integer)).returns(Models::Operations::GetHrisStaffingEntitiesResponse) }
2708
+ def get_staffing_entities(integration_id: nil, cursor: nil, page_size: nil, updated_after: nil, include_deleted: nil, ignore_unsupported_filters: nil, ids: nil, remote_ids: nil, model_types: nil, statuses: nil, timeout_ms: nil)
2709
+ # get_staffing_entities - Get staffing entities
2710
+ # Retrieve all staffing entities.
2711
+ #
2712
+ # Retrieve all staffing entities (positions, requisitions, and jobs) from the HRIS system.
2713
+ #
2714
+ # Many enterprise HRIS platforms distinguish between **positions**, **requisitions**, and **jobs** — three related but different concepts used to manage headcount and hiring. Not every HRIS uses all three, and naming varies across systems, but here is a general overview:
2715
+ #
2716
+ # - **Position**: A slot in the organizational structure that represents a role to be filled (or already filled) by one or more employees. Positions typically carry metadata like department, location, cost center, and reporting line. Think of it as "a chair at a desk" — it exists whether someone is sitting in it or not.
2717
+ # - **Requisition**: A formal request to fill a position. When a manager wants to hire for an open position, they usually create a requisition that goes through an approval workflow. Requisitions are time-bound and tied to a specific hiring need. In Kombo's data model, a requisition's `parent_id` points to the position it was opened for.
2718
+ # - **Job**: Some systems use "job" as a more generic or lightweight alternative to a requisition. Jobs often represent an ongoing, unlimited hiring need (e.g., a company that is always hiring for "Software Engineer") rather than a one-off backfill. This is reflected in the `OPEN_UNLIMITED` status.
2719
+ #
2720
+ # You can use the `model_types` filter to retrieve only the type(s) relevant to your use case. Each record's `model_type` field tells you which of the three concepts it represents.
2721
+ #
2722
+ # Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`
2723
+ request = Models::Operations::GetHrisStaffingEntitiesRequest.new(
2724
+ integration_id: integration_id,
2725
+ cursor: cursor,
2726
+ page_size: page_size,
2727
+ updated_after: updated_after,
2728
+ include_deleted: include_deleted,
2729
+ ignore_unsupported_filters: ignore_unsupported_filters,
2730
+ ids: ids,
2731
+ remote_ids: remote_ids,
2732
+ model_types: model_types,
2733
+ statuses: statuses
2734
+ )
2735
+ url, params = @sdk_configuration.get_server_details
2736
+ base_url = Utils.template_url(url, params)
2737
+ url = "#{base_url}/hris/staffing-entities"
2738
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
2739
+ headers = T.cast(headers, T::Hash[String, String])
2740
+ query_params = Utils.get_query_params(Models::Operations::GetHrisStaffingEntitiesRequest, request, nil, @sdk_configuration.globals)
2741
+ headers['Accept'] = 'application/json'
2742
+ headers['user-agent'] = @sdk_configuration.user_agent
2743
+
2744
+ security = @sdk_configuration.security_source&.call
2745
+
2746
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
2747
+ timeout ||= @sdk_configuration.timeout
2748
+
2749
+
2750
+ connection = @sdk_configuration.client
2751
+
2752
+ hook_ctx = SDKHooks::HookContext.new(
2753
+ config: @sdk_configuration,
2754
+ base_url: base_url,
2755
+ oauth2_scopes: nil,
2756
+ operation_id: 'GetHrisStaffingEntities',
2757
+ security_source: @sdk_configuration.security_source
2758
+ )
2759
+
2760
+ error = T.let(nil, T.nilable(StandardError))
2761
+ http_response = T.let(nil, T.nilable(Faraday::Response))
2762
+
2763
+
2764
+ begin
2765
+ http_response = T.must(connection).get(url) do |req|
2766
+ req.headers.merge!(headers)
2767
+ req.options.timeout = timeout unless timeout.nil?
2768
+ req.params = query_params
2769
+ Utils.configure_request_security(req, security)
2770
+
2771
+ @sdk_configuration.hooks.before_request(
2772
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
2773
+ hook_ctx: hook_ctx
2774
+ ),
2775
+ request: req
2776
+ )
2777
+ end
2778
+ rescue StandardError => e
2779
+ error = e
2780
+ ensure
2781
+ if http_response.nil? || Utils.error_status?(http_response.status)
2782
+ http_response = @sdk_configuration.hooks.after_error(
2783
+ error: error,
2784
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
2785
+ hook_ctx: hook_ctx
2786
+ ),
2787
+ response: http_response
2788
+ )
2789
+ else
2790
+ http_response = @sdk_configuration.hooks.after_success(
2791
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2792
+ hook_ctx: hook_ctx
2793
+ ),
2794
+ response: http_response
2795
+ )
2796
+ end
2797
+
2798
+ if http_response.nil?
2799
+ raise error if !error.nil?
2800
+ raise 'no response'
2801
+ end
2802
+ end
2803
+
2804
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
2805
+ if Utils.match_status_code(http_response.status, ['200'])
2806
+ if Utils.match_content_type(content_type, 'application/json')
2807
+ http_response = @sdk_configuration.hooks.after_success(
2808
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2809
+ hook_ctx: hook_ctx
2810
+ ),
2811
+ response: http_response
2812
+ )
2813
+ response_data = http_response.env.response_body
2814
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::GetHrisStaffingEntitiesPositiveResponse)
2815
+ response = Models::Operations::GetHrisStaffingEntitiesResponse.new(
2816
+ status_code: http_response.status,
2817
+ content_type: content_type,
2818
+ raw_response: http_response,
2819
+ get_hris_staffing_entities_positive_response: T.unsafe(obj)
2820
+ )
2821
+ sdk = self
2822
+
2823
+ response.next_page = proc do
2824
+ next_cursor = Janeway.enum_for('$.data.next', JSON.parse(response_data)).search
2825
+ if next_cursor.nil?
2826
+ next nil
2827
+ else
2828
+ next_cursor = next_cursor[0]
2829
+ if next_cursor.nil?
2830
+ next nil
2831
+ end
2832
+ end
2833
+
2834
+ sdk.get_staffing_entities(
2835
+ integration_id: integration_id,
2836
+ cursor: next_cursor,
2837
+ page_size: page_size,
2838
+ updated_after: updated_after,
2839
+ include_deleted: include_deleted,
2840
+ ignore_unsupported_filters: ignore_unsupported_filters,
2841
+ ids: ids,
2842
+ remote_ids: remote_ids,
2843
+ model_types: model_types,
2844
+ statuses: statuses
2845
+ )
2846
+ end
2847
+
2848
+
2692
2849
  return response
2693
2850
  else
2694
2851
  raise ::Kombo::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
@@ -21,6 +21,15 @@ module Kombo
21
21
  # If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
22
22
  #
23
23
  # For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
24
+ #
25
+ # For this endpoint, `updated_after` considers changes to the record itself as well as changes to the following relations:
26
+ #
27
+ # - ✓ `candidate`
28
+ # - ✗ `tags`
29
+ # - ✓ `current_stage`
30
+ # - ✗ `job`
31
+ # - ✓ `interviews`
32
+ # - ✓ `offers`
24
33
  field :updated_after, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'updated_after', 'style': 'form', 'explode': true } }
25
34
  # Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
26
35
  field :ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'ids', 'style': 'form', 'explode': false } }
@@ -21,6 +21,8 @@ module Kombo
21
21
  # If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
22
22
  #
23
23
  # For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
24
+ #
25
+ # For this endpoint, only changes to the returned record itself are considered.
24
26
  field :updated_after, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'updated_after', 'style': 'form', 'explode': true } }
25
27
  # Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
26
28
  field :ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'ids', 'style': 'form', 'explode': false } }
@@ -21,6 +21,14 @@ module Kombo
21
21
  # If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
22
22
  #
23
23
  # For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
24
+ #
25
+ # For this endpoint, `updated_after` considers changes to the record itself as well as changes to the following relations:
26
+ #
27
+ # - ✓ `applications`
28
+ # - ✗ `current_stage`
29
+ # - ✗ `job`
30
+ # - ✓ `tags`
31
+ # - ✗ `tag`
24
32
  field :updated_after, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'updated_after', 'style': 'form', 'explode': true } }
25
33
  # Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
26
34
  field :ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'ids', 'style': 'form', 'explode': false } }
@@ -21,6 +21,14 @@ module Kombo
21
21
  # If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
22
22
  #
23
23
  # For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
24
+ #
25
+ # For this endpoint, `updated_after` considers changes to the record itself as well as changes to the following relations:
26
+ #
27
+ # - ✓ `interviewers`
28
+ # - ✗ `user`
29
+ # - ✓ `application`
30
+ # - ✗ `candidate`
31
+ # - ✗ `job`
24
32
  field :updated_after, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'updated_after', 'style': 'form', 'explode': true } }
25
33
  # Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
26
34
  field :ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'ids', 'style': 'form', 'explode': false } }
@@ -21,6 +21,17 @@ module Kombo
21
21
  # If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
22
22
  #
23
23
  # For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
24
+ #
25
+ # For this endpoint, `updated_after` considers changes to the record itself as well as changes to the following relations:
26
+ #
27
+ # - ✓ `application_stages`
28
+ # - ✗ `stage`
29
+ # - ✓ `screening_questions`
30
+ # - ✗ `question`
31
+ # - ✓ `job_postings`
32
+ # - ✓ `hiring_team`
33
+ # - ✗ `user`
34
+ # - ✗ `role_assignments`
24
35
  field :updated_after, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'updated_after', 'style': 'form', 'explode': true } }
25
36
  # Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
26
37
  field :ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'ids', 'style': 'form', 'explode': false } }
@@ -21,6 +21,12 @@ module Kombo
21
21
  # If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
22
22
  #
23
23
  # For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
24
+ #
25
+ # For this endpoint, `updated_after` considers changes to the record itself as well as changes to the following relations:
26
+ #
27
+ # - ✓ `application`
28
+ # - ✗ `candidate`
29
+ # - ✗ `job`
24
30
  field :updated_after, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'updated_after', 'style': 'form', 'explode': true } }
25
31
  # Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
26
32
  field :ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'ids', 'style': 'form', 'explode': false } }
@@ -21,6 +21,8 @@ module Kombo
21
21
  # If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
22
22
  #
23
23
  # For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
24
+ #
25
+ # For this endpoint, only changes to the returned record itself are considered.
24
26
  field :updated_after, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'updated_after', 'style': 'form', 'explode': true } }
25
27
  # Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
26
28
  field :ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'ids', 'style': 'form', 'explode': false } }