kombo 1.2.8 → 1.2.9

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 (163) hide show
  1. checksums.yaml +4 -4
  2. data/lib/kombo/ats.rb +322 -0
  3. data/lib/kombo/connect.rb +2 -1
  4. data/lib/kombo/general.rb +11 -1
  5. data/lib/kombo/hris.rb +322 -0
  6. data/lib/kombo/models/operations/getatsattachments_request.rb +74 -0
  7. data/lib/kombo/models/operations/getatsattachments_request.rbi +31 -0
  8. data/lib/kombo/models/operations/getatsattachments_response.rb +56 -0
  9. data/lib/kombo/models/operations/getatsattachments_response.rbi +19 -0
  10. data/lib/kombo/models/operations/getatsscorecards_request.rb +83 -0
  11. data/lib/kombo/models/operations/getatsscorecards_request.rbi +31 -0
  12. data/lib/kombo/models/operations/getatsscorecards_response.rb +56 -0
  13. data/lib/kombo/models/operations/getatsscorecards_response.rbi +19 -0
  14. data/lib/kombo/models/operations/gethrispayruns_request.rb +70 -0
  15. data/lib/kombo/models/operations/gethrispayruns_request.rbi +29 -0
  16. data/lib/kombo/models/operations/gethrispayruns_response.rb +56 -0
  17. data/lib/kombo/models/operations/gethrispayruns_response.rbi +19 -0
  18. data/lib/kombo/models/operations/gethrispayslips_request.rb +87 -0
  19. data/lib/kombo/models/operations/gethrispayslips_request.rbi +33 -0
  20. data/lib/kombo/models/operations/gethrispayslips_response.rb +56 -0
  21. data/lib/kombo/models/operations/gethrispayslips_response.rbi +19 -0
  22. data/lib/kombo/models/operations.rb +8 -0
  23. data/lib/kombo/models/shared/amount.rb +36 -0
  24. data/lib/kombo/models/shared/amount.rbi +15 -0
  25. data/lib/kombo/models/shared/change.rb +19 -0
  26. data/lib/kombo/models/shared/change.rbi +11 -0
  27. data/lib/kombo/models/shared/content_ref.rb +43 -0
  28. data/lib/kombo/models/shared/content_ref.rbi +17 -0
  29. data/lib/kombo/models/shared/employee.rb +57 -0
  30. data/lib/kombo/models/shared/employee.rbi +25 -0
  31. data/lib/kombo/models/shared/format_multiselect.rb +2 -2
  32. data/lib/kombo/models/shared/format_singleselect.rb +2 -2
  33. data/lib/kombo/models/shared/getatsattachmentspositiveresponse.rb +39 -0
  34. data/lib/kombo/models/shared/getatsattachmentspositiveresponse.rbi +15 -0
  35. data/lib/kombo/models/shared/getatsattachmentspositiveresponse_data.rb +36 -0
  36. data/lib/kombo/models/shared/getatsattachmentspositiveresponse_data.rbi +15 -0
  37. data/lib/kombo/models/shared/getatsattachmentspositiveresponse_result.rb +76 -0
  38. data/lib/kombo/models/shared/getatsattachmentspositiveresponse_result.rbi +33 -0
  39. data/lib/kombo/models/shared/getatsattachmentspositiveresponse_type.rb +20 -0
  40. data/lib/kombo/models/shared/getatsattachmentspositiveresponse_type.rbi +11 -0
  41. data/lib/kombo/models/shared/{option_1.rb → getatsjobspositiveresponse_option_1.rb} +1 -1
  42. data/lib/kombo/models/shared/{option_2.rbi → getatsjobspositiveresponse_option_1.rbi} +2 -2
  43. data/lib/kombo/models/shared/{option_2.rb → getatsjobspositiveresponse_option_2.rb} +1 -1
  44. data/lib/kombo/models/shared/getatsjobspositiveresponse_option_2.rbi +17 -0
  45. data/lib/kombo/models/shared/{author.rb → getatsnotespositiveresponse_author.rb} +1 -1
  46. data/lib/kombo/models/shared/{author.rbi → getatsnotespositiveresponse_author.rbi} +2 -2
  47. data/lib/kombo/models/shared/getatsnotespositiveresponse_result.rb +2 -2
  48. data/lib/kombo/models/shared/getatsscorecardspositiveresponse.rb +39 -0
  49. data/lib/kombo/models/shared/getatsscorecardspositiveresponse.rbi +15 -0
  50. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_answer_1.rb +36 -0
  51. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_answer_1.rbi +15 -0
  52. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_answer_2.rb +36 -0
  53. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_answer_2.rbi +15 -0
  54. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_author.rb +48 -0
  55. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_author.rbi +21 -0
  56. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_data.rb +36 -0
  57. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_data.rbi +15 -0
  58. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_option_1.rb +36 -0
  59. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_option_1.rbi +15 -0
  60. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_option_2.rb +36 -0
  61. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_option_2.rbi +15 -0
  62. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_result.rb +80 -0
  63. data/lib/kombo/models/shared/getatsscorecardspositiveresponse_result.rbi +35 -0
  64. data/lib/kombo/models/shared/gethrispayrunspositiveresponse.rb +39 -0
  65. data/lib/kombo/models/shared/gethrispayrunspositiveresponse.rbi +15 -0
  66. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_data.rb +36 -0
  67. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_data.rbi +15 -0
  68. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_gross_pay.rb +36 -0
  69. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_gross_pay.rbi +15 -0
  70. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_net_pay.rb +36 -0
  71. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_net_pay.rbi +15 -0
  72. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_paid_amount.rb +36 -0
  73. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_paid_amount.rbi +15 -0
  74. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_result.rb +62 -0
  75. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_result.rbi +27 -0
  76. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_totals.rb +40 -0
  77. data/lib/kombo/models/shared/gethrispayrunspositiveresponse_totals.rbi +17 -0
  78. data/lib/kombo/models/shared/gethrispayslipspositiveresponse.rb +39 -0
  79. data/lib/kombo/models/shared/gethrispayslipspositiveresponse.rbi +15 -0
  80. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_data.rb +36 -0
  81. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_data.rbi +15 -0
  82. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_gross_pay.rb +36 -0
  83. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_gross_pay.rbi +15 -0
  84. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_net_pay.rb +36 -0
  85. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_net_pay.rbi +15 -0
  86. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_paid_amount.rb +36 -0
  87. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_paid_amount.rbi +15 -0
  88. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_result.rb +62 -0
  89. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_result.rbi +27 -0
  90. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_totals.rb +40 -0
  91. data/lib/kombo/models/shared/gethrispayslipspositiveresponse_totals.rbi +17 -0
  92. data/lib/kombo/models/shared/integration.rb +44 -0
  93. data/lib/kombo/models/shared/integration.rbi +19 -0
  94. data/lib/kombo/models/shared/integration_tool.rb +4 -0
  95. data/lib/kombo/models/shared/issue.rb +56 -0
  96. data/lib/kombo/models/shared/issue.rbi +25 -0
  97. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload.rb +40 -0
  98. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload.rbi +17 -0
  99. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload_category.rb +21 -0
  100. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload_category.rbi +11 -0
  101. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload_data.rb +40 -0
  102. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload_data.rbi +17 -0
  103. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload_end_user.rb +40 -0
  104. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload_end_user.rbi +17 -0
  105. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload_status.rb +19 -0
  106. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload_status.rbi +11 -0
  107. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload_type.rb +18 -0
  108. data/lib/kombo/models/shared/issuestatuschangedwebhookpayload_type.rbi +11 -0
  109. data/lib/kombo/models/shared/line_item.rb +44 -0
  110. data/lib/kombo/models/shared/{option_1.rbi → line_item.rbi} +6 -4
  111. data/lib/kombo/models/shared/name.rb +6 -0
  112. data/lib/kombo/models/shared/pay_run.rb +48 -0
  113. data/lib/kombo/models/shared/pay_run.rbi +21 -0
  114. data/lib/kombo/models/shared/postatscandidatesrequestbody_afas.rb +32 -0
  115. data/lib/kombo/models/shared/{afas.rbi → postatscandidatesrequestbody_afas.rbi} +2 -2
  116. data/lib/kombo/models/shared/postatscandidatesrequestbody_avature.rb +6 -2
  117. data/lib/kombo/models/shared/postatscandidatesrequestbody_avature.rbi +2 -0
  118. data/lib/kombo/models/shared/postatscandidatesrequestbody_custom_field.rb +48 -0
  119. data/lib/kombo/models/shared/postatscandidatesrequestbody_custom_field.rbi +21 -0
  120. data/lib/kombo/models/shared/postatscandidatesrequestbody_recruitcrm.rb +32 -0
  121. data/lib/kombo/models/shared/postatscandidatesrequestbody_recruitcrm.rbi +13 -0
  122. data/lib/kombo/models/shared/postatscandidatesrequestbody_remote_fields.rb +10 -2
  123. data/lib/kombo/models/shared/postatscandidatesrequestbody_remote_fields.rbi +4 -0
  124. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_afas.rb +32 -0
  125. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_afas.rbi +13 -0
  126. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_avature.rb +6 -2
  127. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_avature.rbi +2 -0
  128. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_custom_field.rb +48 -0
  129. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_custom_field.rbi +21 -0
  130. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_recruitcrm.rb +32 -0
  131. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_recruitcrm.rbi +13 -0
  132. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_remote_fields.rb +10 -2
  133. data/lib/kombo/models/shared/postatsjobsjobidapplicationsrequestbody_remote_fields.rbi +4 -0
  134. data/lib/kombo/models/shared/postconnectcreatelinkpositiveresponse_data.rb +6 -2
  135. data/lib/kombo/models/shared/postconnectcreatelinkpositiveresponse_data.rbi +2 -0
  136. data/lib/kombo/models/shared/postconnectcreatelinkrequestbody.rb +6 -2
  137. data/lib/kombo/models/shared/postconnectcreatelinkrequestbody.rbi +2 -0
  138. data/lib/kombo/models/shared/{afas.rb → posthrisemployeesemployeeiddocumentsrequestbody_afas.rb} +1 -1
  139. data/lib/kombo/models/shared/posthrisemployeesemployeeiddocumentsrequestbody_afas.rbi +13 -0
  140. data/lib/kombo/models/shared/posthrisemployeesemployeeiddocumentsrequestbody_remote_fields.rb +2 -2
  141. data/lib/kombo/models/shared/response.rb +27 -0
  142. data/lib/kombo/models/shared/response.rbi +11 -0
  143. data/lib/kombo/models/shared/result_boolean.rb +55 -0
  144. data/lib/kombo/models/shared/result_boolean.rbi +23 -0
  145. data/lib/kombo/models/shared/result_date.rb +55 -0
  146. data/lib/kombo/models/shared/result_date.rbi +23 -0
  147. data/lib/kombo/models/shared/result_multiselect.rb +59 -0
  148. data/lib/kombo/models/shared/result_multiselect.rbi +25 -0
  149. data/lib/kombo/models/shared/result_number.rb +55 -0
  150. data/lib/kombo/models/shared/result_number.rbi +23 -0
  151. data/lib/kombo/models/shared/result_singleselect.rb +59 -0
  152. data/lib/kombo/models/shared/result_singleselect.rbi +25 -0
  153. data/lib/kombo/models/shared/result_text.rb +55 -0
  154. data/lib/kombo/models/shared/result_text.rbi +23 -0
  155. data/lib/kombo/models/shared.rb +57 -4
  156. data/lib/kombo/models/webhooks/webhookissuestatuschangedwebhookpayload_request.rb +36 -0
  157. data/lib/kombo/models/webhooks/webhookissuestatuschangedwebhookpayload_request.rbi +15 -0
  158. data/lib/kombo/models/webhooks/webhookissuestatuschangedwebhookpayload_response.rb +40 -0
  159. data/lib/kombo/models/webhooks/webhookissuestatuschangedwebhookpayload_response.rbi +17 -0
  160. data/lib/kombo/models/webhooks.rb +2 -0
  161. data/lib/kombo/sdkconfiguration.rb +5 -3
  162. data/lib/kombo/utils/utils.rb +6 -2
  163. metadata +136 -10
data/lib/kombo/hris.rb CHANGED
@@ -2924,6 +2924,328 @@ module Kombo
2924
2924
  end
2925
2925
 
2926
2926
 
2927
+ return response
2928
+ else
2929
+ 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'
2930
+ end
2931
+ else
2932
+ if Utils.match_content_type(content_type, 'application/json')
2933
+ http_response = @sdk_configuration.hooks.after_success(
2934
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
2935
+ hook_ctx: hook_ctx
2936
+ ),
2937
+ response: http_response
2938
+ )
2939
+ response_data = http_response.env.response_body
2940
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::KomboHrisError)
2941
+ obj.raw_response = http_response
2942
+ raise obj
2943
+ else
2944
+ 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'
2945
+ end
2946
+ end
2947
+ end
2948
+
2949
+
2950
+ 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]), legal_entity_ids: T.nilable(T::Array[::String]), timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::GetHrisPayRunsResponse) }
2951
+ def get_hris_pay_runs(integration_id: nil, cursor: nil, page_size: nil, updated_after: nil, include_deleted: nil, ignore_unsupported_filters: nil, ids: nil, remote_ids: nil, legal_entity_ids: nil, timeout_ms: nil, http_headers: nil)
2952
+ # get_hris_pay_runs - Pay Runs
2953
+ # Retrieve all pay runs for all legal entities, across all time.
2954
+ #
2955
+ # A pay run represents one payroll cycle for a legal entity, covering a single pay period and grouping the payslips paid out through it. Use this endpoint to reconcile payroll periods and read the totals paid out across each run. Filter by `legal_entity_ids` to scope the results to specific legal entities.
2956
+ #
2957
+ # 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)`
2958
+ request = Models::Operations::GetHrisPayRunsRequest.new(
2959
+ integration_id: integration_id,
2960
+ cursor: cursor,
2961
+ page_size: page_size,
2962
+ updated_after: updated_after,
2963
+ include_deleted: include_deleted,
2964
+ ignore_unsupported_filters: ignore_unsupported_filters,
2965
+ ids: ids,
2966
+ remote_ids: remote_ids,
2967
+ legal_entity_ids: legal_entity_ids
2968
+ )
2969
+ url, params = @sdk_configuration.get_server_details
2970
+ base_url = Utils.template_url(url, params)
2971
+ url = "#{base_url}/hris/pay-runs"
2972
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
2973
+ headers = T.cast(headers, T::Hash[String, String])
2974
+ query_params = Utils.get_query_params(Models::Operations::GetHrisPayRunsRequest, request, nil, @sdk_configuration.globals)
2975
+ headers['Accept'] = 'application/json'
2976
+ headers['user-agent'] = @sdk_configuration.user_agent
2977
+
2978
+ security = @sdk_configuration.security_source&.call
2979
+
2980
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
2981
+ timeout ||= @sdk_configuration.timeout
2982
+
2983
+
2984
+ connection = @sdk_configuration.client
2985
+
2986
+ hook_ctx = SDKHooks::HookContext.new(
2987
+ config: @sdk_configuration,
2988
+ base_url: base_url,
2989
+ oauth2_scopes: nil,
2990
+ operation_id: 'GetHrisPayRuns',
2991
+ security_source: @sdk_configuration.security_source
2992
+ )
2993
+
2994
+ error = T.let(nil, T.nilable(StandardError))
2995
+ http_response = T.let(nil, T.nilable(Faraday::Response))
2996
+
2997
+
2998
+ begin
2999
+ http_response = T.must(connection).get(url) do |req|
3000
+ req.headers.merge!(headers)
3001
+ req.options.timeout = timeout unless timeout.nil?
3002
+ req.params = query_params
3003
+ Utils.configure_request_security(req, security)
3004
+ http_headers&.each do |key, value|
3005
+ req.headers[key.to_s] = value
3006
+ end
3007
+
3008
+ @sdk_configuration.hooks.before_request(
3009
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
3010
+ hook_ctx: hook_ctx
3011
+ ),
3012
+ request: req
3013
+ )
3014
+ end
3015
+ rescue StandardError => e
3016
+ error = e
3017
+ ensure
3018
+ if http_response.nil? || Utils.error_status?(http_response.status)
3019
+ http_response = @sdk_configuration.hooks.after_error(
3020
+ error: error,
3021
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
3022
+ hook_ctx: hook_ctx
3023
+ ),
3024
+ response: http_response
3025
+ )
3026
+ else
3027
+ http_response = @sdk_configuration.hooks.after_success(
3028
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3029
+ hook_ctx: hook_ctx
3030
+ ),
3031
+ response: http_response
3032
+ )
3033
+ end
3034
+
3035
+ if http_response.nil?
3036
+ raise error if !error.nil?
3037
+ raise 'no response'
3038
+ end
3039
+ end
3040
+
3041
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
3042
+ if Utils.match_status_code(http_response.status, ['200'])
3043
+ if Utils.match_content_type(content_type, 'application/json')
3044
+ http_response = @sdk_configuration.hooks.after_success(
3045
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3046
+ hook_ctx: hook_ctx
3047
+ ),
3048
+ response: http_response
3049
+ )
3050
+ response_data = http_response.env.response_body
3051
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::GetHrisPayRunsPositiveResponse)
3052
+ response = Models::Operations::GetHrisPayRunsResponse.new(
3053
+ status_code: http_response.status,
3054
+ content_type: content_type,
3055
+ raw_response: http_response,
3056
+ get_hris_pay_runs_positive_response: T.unsafe(obj)
3057
+ )
3058
+ sdk = self
3059
+
3060
+ response.next_page = proc do
3061
+ next_cursor = Janeway.enum_for('$.data.next', JSON.parse(response_data)).search
3062
+ if next_cursor.nil?
3063
+ next nil
3064
+ else
3065
+ next_cursor = next_cursor[0]
3066
+ if next_cursor.nil?
3067
+ next nil
3068
+ end
3069
+ end
3070
+
3071
+ sdk.get_hris_pay_runs(
3072
+ integration_id: request.integration_id,
3073
+ cursor: next_cursor,
3074
+ page_size: request.page_size,
3075
+ updated_after: request.updated_after,
3076
+ include_deleted: request.include_deleted,
3077
+ ignore_unsupported_filters: request.ignore_unsupported_filters,
3078
+ ids: request.ids,
3079
+ remote_ids: request.remote_ids,
3080
+ legal_entity_ids: request.legal_entity_ids,
3081
+ http_headers: http_headers
3082
+ )
3083
+ end
3084
+
3085
+
3086
+ return response
3087
+ else
3088
+ 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'
3089
+ end
3090
+ else
3091
+ if Utils.match_content_type(content_type, 'application/json')
3092
+ http_response = @sdk_configuration.hooks.after_success(
3093
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3094
+ hook_ctx: hook_ctx
3095
+ ),
3096
+ response: http_response
3097
+ )
3098
+ response_data = http_response.env.response_body
3099
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::KomboHrisError)
3100
+ obj.raw_response = http_response
3101
+ raise obj
3102
+ else
3103
+ 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'
3104
+ end
3105
+ end
3106
+ end
3107
+
3108
+
3109
+ 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]), legal_entity_ids: T.nilable(T::Array[::String]), employee_ids: T.nilable(T::Array[::String]), payrun_ids: T.nilable(T::Array[::String]), timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::GetHrisPayslipsResponse) }
3110
+ def get_hris_payslips(integration_id: nil, cursor: nil, page_size: nil, updated_after: nil, include_deleted: nil, ignore_unsupported_filters: nil, ids: nil, remote_ids: nil, legal_entity_ids: nil, employee_ids: nil, payrun_ids: nil, timeout_ms: nil, http_headers: nil)
3111
+ # get_hris_payslips - Payslips
3112
+ # Retrieve all payslips for all employees, across all time.
3113
+ #
3114
+ # A payslip is the individual pay statement an employee receives for one pay run, detailing what they were paid. Each payslip embeds the `employee` it belongs to and the `pay_run` it was paid out through, its `totals`, and the `line_items` that make it up (earnings, deductions, and contributions). Filter by `employee_ids`, `payrun_ids`, or `legal_entity_ids` to narrow the results.
3115
+ #
3116
+ # 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)`
3117
+ request = Models::Operations::GetHrisPayslipsRequest.new(
3118
+ integration_id: integration_id,
3119
+ cursor: cursor,
3120
+ page_size: page_size,
3121
+ updated_after: updated_after,
3122
+ include_deleted: include_deleted,
3123
+ ignore_unsupported_filters: ignore_unsupported_filters,
3124
+ ids: ids,
3125
+ remote_ids: remote_ids,
3126
+ legal_entity_ids: legal_entity_ids,
3127
+ employee_ids: employee_ids,
3128
+ payrun_ids: payrun_ids
3129
+ )
3130
+ url, params = @sdk_configuration.get_server_details
3131
+ base_url = Utils.template_url(url, params)
3132
+ url = "#{base_url}/hris/payslips"
3133
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
3134
+ headers = T.cast(headers, T::Hash[String, String])
3135
+ query_params = Utils.get_query_params(Models::Operations::GetHrisPayslipsRequest, request, nil, @sdk_configuration.globals)
3136
+ headers['Accept'] = 'application/json'
3137
+ headers['user-agent'] = @sdk_configuration.user_agent
3138
+
3139
+ security = @sdk_configuration.security_source&.call
3140
+
3141
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
3142
+ timeout ||= @sdk_configuration.timeout
3143
+
3144
+
3145
+ connection = @sdk_configuration.client
3146
+
3147
+ hook_ctx = SDKHooks::HookContext.new(
3148
+ config: @sdk_configuration,
3149
+ base_url: base_url,
3150
+ oauth2_scopes: nil,
3151
+ operation_id: 'GetHrisPayslips',
3152
+ security_source: @sdk_configuration.security_source
3153
+ )
3154
+
3155
+ error = T.let(nil, T.nilable(StandardError))
3156
+ http_response = T.let(nil, T.nilable(Faraday::Response))
3157
+
3158
+
3159
+ begin
3160
+ http_response = T.must(connection).get(url) do |req|
3161
+ req.headers.merge!(headers)
3162
+ req.options.timeout = timeout unless timeout.nil?
3163
+ req.params = query_params
3164
+ Utils.configure_request_security(req, security)
3165
+ http_headers&.each do |key, value|
3166
+ req.headers[key.to_s] = value
3167
+ end
3168
+
3169
+ @sdk_configuration.hooks.before_request(
3170
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
3171
+ hook_ctx: hook_ctx
3172
+ ),
3173
+ request: req
3174
+ )
3175
+ end
3176
+ rescue StandardError => e
3177
+ error = e
3178
+ ensure
3179
+ if http_response.nil? || Utils.error_status?(http_response.status)
3180
+ http_response = @sdk_configuration.hooks.after_error(
3181
+ error: error,
3182
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
3183
+ hook_ctx: hook_ctx
3184
+ ),
3185
+ response: http_response
3186
+ )
3187
+ else
3188
+ http_response = @sdk_configuration.hooks.after_success(
3189
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3190
+ hook_ctx: hook_ctx
3191
+ ),
3192
+ response: http_response
3193
+ )
3194
+ end
3195
+
3196
+ if http_response.nil?
3197
+ raise error if !error.nil?
3198
+ raise 'no response'
3199
+ end
3200
+ end
3201
+
3202
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
3203
+ if Utils.match_status_code(http_response.status, ['200'])
3204
+ if Utils.match_content_type(content_type, 'application/json')
3205
+ http_response = @sdk_configuration.hooks.after_success(
3206
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
3207
+ hook_ctx: hook_ctx
3208
+ ),
3209
+ response: http_response
3210
+ )
3211
+ response_data = http_response.env.response_body
3212
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::GetHrisPayslipsPositiveResponse)
3213
+ response = Models::Operations::GetHrisPayslipsResponse.new(
3214
+ status_code: http_response.status,
3215
+ content_type: content_type,
3216
+ raw_response: http_response,
3217
+ get_hris_payslips_positive_response: T.unsafe(obj)
3218
+ )
3219
+ sdk = self
3220
+
3221
+ response.next_page = proc do
3222
+ next_cursor = Janeway.enum_for('$.data.next', JSON.parse(response_data)).search
3223
+ if next_cursor.nil?
3224
+ next nil
3225
+ else
3226
+ next_cursor = next_cursor[0]
3227
+ if next_cursor.nil?
3228
+ next nil
3229
+ end
3230
+ end
3231
+
3232
+ sdk.get_hris_payslips(
3233
+ integration_id: request.integration_id,
3234
+ cursor: next_cursor,
3235
+ page_size: request.page_size,
3236
+ updated_after: request.updated_after,
3237
+ include_deleted: request.include_deleted,
3238
+ ignore_unsupported_filters: request.ignore_unsupported_filters,
3239
+ ids: request.ids,
3240
+ remote_ids: request.remote_ids,
3241
+ legal_entity_ids: request.legal_entity_ids,
3242
+ employee_ids: request.employee_ids,
3243
+ payrun_ids: request.payrun_ids,
3244
+ http_headers: http_headers
3245
+ )
3246
+ end
3247
+
3248
+
2927
3249
  return response
2928
3250
  else
2929
3251
  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'
@@ -0,0 +1,74 @@
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 Operations
10
+
11
+ class GetAtsAttachmentsRequest
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # ID of the integration you want to interact with.
16
+ field :integration_id, Crystalline::Nilable.new(::String), { 'header': { 'field_name': 'X-Integration-Id', 'style': 'simple', 'explode': false } }
17
+ # An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
18
+ field :cursor, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'cursor', 'style': 'form', 'explode': true } }
19
+ # Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record's own `changed_at` field remains unchanged.
20
+ #
21
+ # If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
22
+ #
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.
26
+ field :updated_after, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'updated_after', 'style': 'form', 'explode': true } }
27
+ # Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
28
+ field :ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'ids', 'style': 'form', 'explode': false } }
29
+ # Filter by a comma-separated list of remote IDs.
30
+ field :remote_ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'remote_ids', 'style': 'form', 'explode': false } }
31
+ # Filter by a comma-separated list of candidate IDs. Prefer filtering by `candidate_ids` when you want every file a candidate has, across all their applications.
32
+ field :candidate_ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'candidate_ids', 'style': 'form', 'explode': false } }
33
+ # Filter by a comma-separated list of application IDs. We will only return attachments that the ATS filed under _any_ of these applications, which excludes the files that hang off the candidate directly.
34
+ field :application_ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'application_ids', 'style': 'form', 'explode': false } }
35
+ # The number of results to return per page. Maximum is 250.
36
+ field :page_size, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'page_size', 'style': 'form', 'explode': true } }
37
+ # By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
38
+ field :include_deleted, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'query_param': { 'field_name': 'include_deleted', 'style': 'form', 'explode': true } }
39
+ # When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
40
+ field :ignore_unsupported_filters, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'query_param': { 'field_name': 'ignore_unsupported_filters', 'style': 'form', 'explode': true } }
41
+
42
+ sig { params(integration_id: T.nilable(::String), cursor: T.nilable(::String), updated_after: T.nilable(::DateTime), ids: T.nilable(T::Array[::String]), remote_ids: T.nilable(T::Array[::String]), candidate_ids: T.nilable(T::Array[::String]), application_ids: T.nilable(T::Array[::String]), page_size: T.nilable(::Integer), include_deleted: T.nilable(T::Boolean), ignore_unsupported_filters: T.nilable(T::Boolean)).void }
43
+ def initialize(integration_id: nil, cursor: nil, updated_after: nil, ids: nil, remote_ids: nil, candidate_ids: nil, application_ids: nil, page_size: 100, include_deleted: false, ignore_unsupported_filters: false)
44
+ @integration_id = integration_id
45
+ @cursor = cursor
46
+ @updated_after = updated_after
47
+ @ids = ids
48
+ @remote_ids = remote_ids
49
+ @candidate_ids = candidate_ids
50
+ @application_ids = application_ids
51
+ @page_size = page_size
52
+ @include_deleted = include_deleted
53
+ @ignore_unsupported_filters = ignore_unsupported_filters
54
+ end
55
+
56
+ sig { params(other: T.untyped).returns(T::Boolean) }
57
+ def ==(other)
58
+ return false unless other.is_a? self.class
59
+ return false unless @integration_id == other.integration_id
60
+ return false unless @cursor == other.cursor
61
+ return false unless @updated_after == other.updated_after
62
+ return false unless @ids == other.ids
63
+ return false unless @remote_ids == other.remote_ids
64
+ return false unless @candidate_ids == other.candidate_ids
65
+ return false unless @application_ids == other.application_ids
66
+ return false unless @page_size == other.page_size
67
+ return false unless @include_deleted == other.include_deleted
68
+ return false unless @ignore_unsupported_filters == other.ignore_unsupported_filters
69
+ true
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,31 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Kombo::Models::Operations::GetAtsAttachmentsRequest
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Operations::GetAtsAttachmentsRequest
11
+ def integration_id(); end
12
+ def integration_id=(str_); end
13
+ def cursor(); end
14
+ def cursor=(str_); end
15
+ def updated_after(); end
16
+ def updated_after=(str_); end
17
+ def ids(); end
18
+ def ids=(str_); end
19
+ def remote_ids(); end
20
+ def remote_ids=(str_); end
21
+ def candidate_ids(); end
22
+ def candidate_ids=(str_); end
23
+ def application_ids(); end
24
+ def application_ids=(str_); end
25
+ def page_size(); end
26
+ def page_size=(str_); end
27
+ def include_deleted(); end
28
+ def include_deleted=(str_); end
29
+ def ignore_unsupported_filters(); end
30
+ def ignore_unsupported_filters=(str_); end
31
+ end
@@ -0,0 +1,56 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Kombo
8
+ module Models
9
+ module Operations
10
+
11
+ class GetAtsAttachmentsResponse
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+ sig { returns(T.proc.returns(T.nilable(GetAtsAttachmentsResponse))) }
15
+ attr_accessor :next_page
16
+
17
+ # HTTP response content type for this operation
18
+ field :content_type, ::String
19
+ # HTTP response status code for this operation
20
+ field :status_code, ::Integer
21
+ # Raw HTTP response; suitable for custom response parsing
22
+ field :raw_response, ::Faraday::Response
23
+ # GET /ats/attachments Positive response
24
+ field :get_ats_attachments_positive_response, Crystalline::Nilable.new(Models::Shared::GetAtsAttachmentsPositiveResponse)
25
+
26
+ sig { params(content_type: ::String, status_code: ::Integer, raw_response: ::Faraday::Response, get_ats_attachments_positive_response: T.nilable(Models::Shared::GetAtsAttachmentsPositiveResponse)).void }
27
+ def initialize(content_type:, status_code:, raw_response:, get_ats_attachments_positive_response: nil)
28
+ @content_type = content_type
29
+ @status_code = status_code
30
+ @raw_response = raw_response
31
+ @get_ats_attachments_positive_response = get_ats_attachments_positive_response
32
+ end
33
+
34
+ sig { params(other: T.untyped).returns(T::Boolean) }
35
+ def ==(other)
36
+ return false unless other.is_a? self.class
37
+ return false unless @content_type == other.content_type
38
+ return false unless @status_code == other.status_code
39
+ return false unless @raw_response == other.raw_response
40
+ return false unless @get_ats_attachments_positive_response == other.get_ats_attachments_positive_response
41
+ true
42
+ end
43
+
44
+ def each
45
+ page = self
46
+ loop do
47
+ yield page
48
+ next_page = page.next_page.call if page.next_page
49
+ break if next_page.nil?
50
+ page = T.must(next_page)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Kombo::Models::Operations::GetAtsAttachmentsResponse
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Operations::GetAtsAttachmentsResponse
11
+ def content_type(); end
12
+ def content_type=(str_); end
13
+ def status_code(); end
14
+ def status_code=(str_); end
15
+ def raw_response(); end
16
+ def raw_response=(str_); end
17
+ def get_ats_attachments_positive_response(); end
18
+ def get_ats_attachments_positive_response=(str_); end
19
+ end
@@ -0,0 +1,83 @@
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 Operations
10
+
11
+ class GetAtsScorecardsRequest
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # ID of the integration you want to interact with.
16
+ field :integration_id, Crystalline::Nilable.new(::String), { 'header': { 'field_name': 'X-Integration-Id', 'style': 'simple', 'explode': false } }
17
+ # An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
18
+ field :cursor, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'cursor', 'style': 'form', 'explode': true } }
19
+ # Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record's own `changed_at` field remains unchanged.
20
+ #
21
+ # If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
22
+ #
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` matches when the returned record changed, or when related data changed as described below.
26
+ #
27
+ # | Path | Added/Removed | Linked Record |
28
+ # | --- | --- | --- |
29
+ # | `author` | ✗ No | ✗ No |
30
+ # | `application` | ✗ No | ✗ No |
31
+ # | `candidate` | ✗ No | ✗ No |
32
+ # | `interview` | ✗ No | ✗ No |
33
+ #
34
+ # _**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._
35
+ field :updated_after, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'updated_after', 'style': 'form', 'explode': true } }
36
+ # Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
37
+ field :ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'ids', 'style': 'form', 'explode': false } }
38
+ # Filter by a comma-separated list of remote IDs.
39
+ field :remote_ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'remote_ids', 'style': 'form', 'explode': false } }
40
+ # Filter by a comma-separated list of candidate IDs. Prefer filtering by `candidate_ids` when you want to download the full interview feedback available for a candidate, across all their applications.
41
+ field :candidate_ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'candidate_ids', 'style': 'form', 'explode': false } }
42
+ # Filter by a comma-separated list of application IDs. We will only return scorecards that belong to _any_ of these applications.
43
+ field :application_ids, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'application_ids', 'style': 'form', 'explode': false } }
44
+ # The number of results to return per page. Maximum is 250.
45
+ field :page_size, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'page_size', 'style': 'form', 'explode': true } }
46
+ # By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
47
+ field :include_deleted, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'query_param': { 'field_name': 'include_deleted', 'style': 'form', 'explode': true } }
48
+ # When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
49
+ field :ignore_unsupported_filters, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'query_param': { 'field_name': 'ignore_unsupported_filters', 'style': 'form', 'explode': true } }
50
+
51
+ sig { params(integration_id: T.nilable(::String), cursor: T.nilable(::String), updated_after: T.nilable(::DateTime), ids: T.nilable(T::Array[::String]), remote_ids: T.nilable(T::Array[::String]), candidate_ids: T.nilable(T::Array[::String]), application_ids: T.nilable(T::Array[::String]), page_size: T.nilable(::Integer), include_deleted: T.nilable(T::Boolean), ignore_unsupported_filters: T.nilable(T::Boolean)).void }
52
+ def initialize(integration_id: nil, cursor: nil, updated_after: nil, ids: nil, remote_ids: nil, candidate_ids: nil, application_ids: nil, page_size: 100, include_deleted: false, ignore_unsupported_filters: false)
53
+ @integration_id = integration_id
54
+ @cursor = cursor
55
+ @updated_after = updated_after
56
+ @ids = ids
57
+ @remote_ids = remote_ids
58
+ @candidate_ids = candidate_ids
59
+ @application_ids = application_ids
60
+ @page_size = page_size
61
+ @include_deleted = include_deleted
62
+ @ignore_unsupported_filters = ignore_unsupported_filters
63
+ end
64
+
65
+ sig { params(other: T.untyped).returns(T::Boolean) }
66
+ def ==(other)
67
+ return false unless other.is_a? self.class
68
+ return false unless @integration_id == other.integration_id
69
+ return false unless @cursor == other.cursor
70
+ return false unless @updated_after == other.updated_after
71
+ return false unless @ids == other.ids
72
+ return false unless @remote_ids == other.remote_ids
73
+ return false unless @candidate_ids == other.candidate_ids
74
+ return false unless @application_ids == other.application_ids
75
+ return false unless @page_size == other.page_size
76
+ return false unless @include_deleted == other.include_deleted
77
+ return false unless @ignore_unsupported_filters == other.ignore_unsupported_filters
78
+ true
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,31 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Kombo::Models::Operations::GetAtsScorecardsRequest
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Kombo::Models::Operations::GetAtsScorecardsRequest
11
+ def integration_id(); end
12
+ def integration_id=(str_); end
13
+ def cursor(); end
14
+ def cursor=(str_); end
15
+ def updated_after(); end
16
+ def updated_after=(str_); end
17
+ def ids(); end
18
+ def ids=(str_); end
19
+ def remote_ids(); end
20
+ def remote_ids=(str_); end
21
+ def candidate_ids(); end
22
+ def candidate_ids=(str_); end
23
+ def application_ids(); end
24
+ def application_ids=(str_); end
25
+ def page_size(); end
26
+ def page_size=(str_); end
27
+ def include_deleted(); end
28
+ def include_deleted=(str_); end
29
+ def ignore_unsupported_filters(); end
30
+ def ignore_unsupported_filters=(str_); end
31
+ end