@kombo-api/sdk 1.0.1 → 1.0.3

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 (319) hide show
  1. package/README.md +7 -3
  2. package/esm/funcs/assessmentUpdateOrderResult.js.map +1 -1
  3. package/esm/funcs/atsAddApplicationAttachment.js.map +1 -1
  4. package/esm/funcs/atsAddApplicationNote.js.map +1 -1
  5. package/esm/funcs/atsAddApplicationResultLink.js.map +1 -1
  6. package/esm/funcs/atsAddCandidateAttachment.js.map +1 -1
  7. package/esm/funcs/atsAddCandidateResultLink.js.map +1 -1
  8. package/esm/funcs/atsAddCandidateTag.js.map +1 -1
  9. package/esm/funcs/atsCreateApplication.js.map +1 -1
  10. package/esm/funcs/atsGetApplicationAttachments.js.map +1 -1
  11. package/esm/funcs/atsGetCandidateAttachments.js.map +1 -1
  12. package/esm/funcs/atsGetRoles.d.ts +25 -0
  13. package/esm/funcs/atsGetRoles.d.ts.map +1 -0
  14. package/esm/funcs/atsGetRoles.js +125 -0
  15. package/esm/funcs/atsGetRoles.js.map +1 -0
  16. package/esm/funcs/atsMoveApplicationToStage.d.ts +2 -1
  17. package/esm/funcs/atsMoveApplicationToStage.d.ts.map +1 -1
  18. package/esm/funcs/atsMoveApplicationToStage.js +2 -1
  19. package/esm/funcs/atsMoveApplicationToStage.js.map +1 -1
  20. package/esm/funcs/atsRejectApplication.js.map +1 -1
  21. package/esm/funcs/atsRemoveCandidateTag.js.map +1 -1
  22. package/esm/funcs/connectGetIntegrationByToken.js.map +1 -1
  23. package/esm/funcs/generalCreateReconnectionLink.js.map +1 -1
  24. package/esm/funcs/generalDeleteIntegration.js.map +1 -1
  25. package/esm/funcs/generalGetCustomFields.js.map +1 -1
  26. package/esm/funcs/generalGetIntegrationDetails.js.map +1 -1
  27. package/esm/funcs/generalGetIntegrationFields.js.map +1 -1
  28. package/esm/funcs/generalGetTools.js.map +1 -1
  29. package/esm/funcs/generalSendPassthroughRequest.d.ts +19 -6
  30. package/esm/funcs/generalSendPassthroughRequest.d.ts.map +1 -1
  31. package/esm/funcs/generalSendPassthroughRequest.js +19 -6
  32. package/esm/funcs/generalSendPassthroughRequest.js.map +1 -1
  33. package/esm/funcs/generalSetIntegrationEnabled.js.map +1 -1
  34. package/esm/funcs/generalUpdateCustomFieldMapping.js.map +1 -1
  35. package/esm/funcs/generalUpdateIntegrationField.js.map +1 -1
  36. package/esm/funcs/hrisAddEmployeeDocument.js.map +1 -1
  37. package/esm/funcs/hrisDeleteAbsence.js.map +1 -1
  38. package/esm/funcs/hrisGetPerformanceReviewCycles.d.ts +0 -2
  39. package/esm/funcs/hrisGetPerformanceReviewCycles.d.ts.map +1 -1
  40. package/esm/funcs/hrisGetPerformanceReviewCycles.js +0 -2
  41. package/esm/funcs/hrisGetPerformanceReviewCycles.js.map +1 -1
  42. package/esm/funcs/hrisGetPerformanceReviews.d.ts +0 -2
  43. package/esm/funcs/hrisGetPerformanceReviews.d.ts.map +1 -1
  44. package/esm/funcs/hrisGetPerformanceReviews.js +0 -2
  45. package/esm/funcs/hrisGetPerformanceReviews.js.map +1 -1
  46. package/esm/funcs/hrisGetStaffingEntities.d.ts +33 -0
  47. package/esm/funcs/hrisGetStaffingEntities.d.ts.map +1 -0
  48. package/esm/funcs/hrisGetStaffingEntities.js +134 -0
  49. package/esm/funcs/hrisGetStaffingEntities.js.map +1 -0
  50. package/esm/lib/config.d.ts +3 -3
  51. package/esm/lib/config.js +3 -3
  52. package/esm/lib/config.js.map +1 -1
  53. package/esm/lib/encodings.d.ts.map +1 -1
  54. package/esm/lib/encodings.js +20 -5
  55. package/esm/lib/encodings.js.map +1 -1
  56. package/esm/lib/files.d.ts +13 -0
  57. package/esm/lib/files.d.ts.map +1 -1
  58. package/esm/lib/files.js +18 -0
  59. package/esm/lib/files.js.map +1 -1
  60. package/esm/lib/matchers.d.ts.map +1 -1
  61. package/esm/lib/matchers.js +0 -1
  62. package/esm/lib/matchers.js.map +1 -1
  63. package/esm/lib/sdks.d.ts.map +1 -1
  64. package/esm/lib/sdks.js +8 -4
  65. package/esm/lib/sdks.js.map +1 -1
  66. package/esm/lib/security.d.ts.map +1 -1
  67. package/esm/lib/security.js +1 -2
  68. package/esm/lib/security.js.map +1 -1
  69. package/esm/lib/url.d.ts.map +1 -1
  70. package/esm/lib/url.js +4 -2
  71. package/esm/lib/url.js.map +1 -1
  72. package/esm/models/assessmentorderreceivedwebhookpayload.d.ts +15 -2
  73. package/esm/models/assessmentorderreceivedwebhookpayload.d.ts.map +1 -1
  74. package/esm/models/assessmentorderreceivedwebhookpayload.js +9 -2
  75. package/esm/models/assessmentorderreceivedwebhookpayload.js.map +1 -1
  76. package/esm/models/datachangedwebhookpayload.d.ts +7 -0
  77. package/esm/models/datachangedwebhookpayload.d.ts.map +1 -1
  78. package/esm/models/datachangedwebhookpayload.js +7 -0
  79. package/esm/models/datachangedwebhookpayload.js.map +1 -1
  80. package/esm/models/getassessmentordersopenpositiveresponse.d.ts +12 -1
  81. package/esm/models/getassessmentordersopenpositiveresponse.d.ts.map +1 -1
  82. package/esm/models/getassessmentordersopenpositiveresponse.js +6 -1
  83. package/esm/models/getassessmentordersopenpositiveresponse.js.map +1 -1
  84. package/esm/models/getatsjobspositiveresponse.d.ts +67 -1
  85. package/esm/models/getatsjobspositiveresponse.d.ts.map +1 -1
  86. package/esm/models/getatsjobspositiveresponse.js +36 -0
  87. package/esm/models/getatsjobspositiveresponse.js.map +1 -1
  88. package/esm/models/getatsrolespositiveresponse.d.ts +85 -0
  89. package/esm/models/getatsrolespositiveresponse.d.ts.map +1 -0
  90. package/esm/models/getatsrolespositiveresponse.js +57 -0
  91. package/esm/models/getatsrolespositiveresponse.js.map +1 -0
  92. package/esm/models/getatsuserspositiveresponse.d.ts +61 -0
  93. package/esm/models/getatsuserspositiveresponse.d.ts.map +1 -1
  94. package/esm/models/getatsuserspositiveresponse.js +33 -0
  95. package/esm/models/getatsuserspositiveresponse.js.map +1 -1
  96. package/esm/models/gethrisemployeespositiveresponse.d.ts +12 -12
  97. package/esm/models/gethrisemployeespositiveresponse.d.ts.map +1 -1
  98. package/esm/models/gethrisemployeespositiveresponse.js +12 -13
  99. package/esm/models/gethrisemployeespositiveresponse.js.map +1 -1
  100. package/esm/models/gethrisstaffingentitiespositiveresponse.d.ts +261 -0
  101. package/esm/models/gethrisstaffingentitiespositiveresponse.d.ts.map +1 -0
  102. package/esm/models/gethrisstaffingentitiespositiveresponse.js +143 -0
  103. package/esm/models/gethrisstaffingentitiespositiveresponse.js.map +1 -0
  104. package/esm/models/index.d.ts +2 -0
  105. package/esm/models/index.d.ts.map +1 -1
  106. package/esm/models/index.js +2 -0
  107. package/esm/models/index.js.map +1 -1
  108. package/esm/models/inlineassessmentorderreceivedwebhookpayload.d.ts +15 -2
  109. package/esm/models/inlineassessmentorderreceivedwebhookpayload.d.ts.map +1 -1
  110. package/esm/models/inlineassessmentorderreceivedwebhookpayload.js +9 -2
  111. package/esm/models/inlineassessmentorderreceivedwebhookpayload.js.map +1 -1
  112. package/esm/models/komboatserror.d.ts +1 -0
  113. package/esm/models/komboatserror.d.ts.map +1 -1
  114. package/esm/models/komboatserror.js +1 -0
  115. package/esm/models/komboatserror.js.map +1 -1
  116. package/esm/models/kombogeneralerror.d.ts +1 -0
  117. package/esm/models/kombogeneralerror.d.ts.map +1 -1
  118. package/esm/models/kombogeneralerror.js +1 -0
  119. package/esm/models/kombogeneralerror.js.map +1 -1
  120. package/esm/models/kombohriserror.d.ts +1 -0
  121. package/esm/models/kombohriserror.d.ts.map +1 -1
  122. package/esm/models/kombohriserror.js +1 -0
  123. package/esm/models/kombohriserror.js.map +1 -1
  124. package/esm/models/operations/getatsapplications.d.ts +9 -0
  125. package/esm/models/operations/getatsapplications.d.ts.map +1 -1
  126. package/esm/models/operations/getatsapplications.js.map +1 -1
  127. package/esm/models/operations/getatsapplicationstages.d.ts +2 -0
  128. package/esm/models/operations/getatsapplicationstages.d.ts.map +1 -1
  129. package/esm/models/operations/getatsapplicationstages.js.map +1 -1
  130. package/esm/models/operations/getatscandidates.d.ts +8 -0
  131. package/esm/models/operations/getatscandidates.d.ts.map +1 -1
  132. package/esm/models/operations/getatscandidates.js.map +1 -1
  133. package/esm/models/operations/getatsinterviews.d.ts +8 -0
  134. package/esm/models/operations/getatsinterviews.d.ts.map +1 -1
  135. package/esm/models/operations/getatsinterviews.js.map +1 -1
  136. package/esm/models/operations/getatsjobs.d.ts +11 -0
  137. package/esm/models/operations/getatsjobs.d.ts.map +1 -1
  138. package/esm/models/operations/getatsjobs.js.map +1 -1
  139. package/esm/models/operations/getatsoffers.d.ts +6 -0
  140. package/esm/models/operations/getatsoffers.d.ts.map +1 -1
  141. package/esm/models/operations/getatsoffers.js.map +1 -1
  142. package/esm/models/operations/getatsrejectionreasons.d.ts +2 -0
  143. package/esm/models/operations/getatsrejectionreasons.d.ts.map +1 -1
  144. package/esm/models/operations/getatsrejectionreasons.js.map +1 -1
  145. package/esm/models/operations/getatsroles.d.ts +79 -0
  146. package/esm/models/operations/getatsroles.d.ts.map +1 -0
  147. package/esm/models/operations/getatsroles.js +33 -0
  148. package/esm/models/operations/getatsroles.js.map +1 -0
  149. package/esm/models/operations/getatstags.d.ts +2 -0
  150. package/esm/models/operations/getatstags.d.ts.map +1 -1
  151. package/esm/models/operations/getatstags.js.map +1 -1
  152. package/esm/models/operations/getatsusers.d.ts +5 -0
  153. package/esm/models/operations/getatsusers.d.ts.map +1 -1
  154. package/esm/models/operations/getatsusers.js.map +1 -1
  155. package/esm/models/operations/gethrisabsences.d.ts +4 -0
  156. package/esm/models/operations/gethrisabsences.d.ts.map +1 -1
  157. package/esm/models/operations/gethrisabsences.js.map +1 -1
  158. package/esm/models/operations/gethrisabsencetypes.d.ts +2 -0
  159. package/esm/models/operations/gethrisabsencetypes.d.ts.map +1 -1
  160. package/esm/models/operations/gethrisabsencetypes.js.map +1 -1
  161. package/esm/models/operations/gethrisemployeedocumentcategories.d.ts +2 -0
  162. package/esm/models/operations/gethrisemployeedocumentcategories.d.ts.map +1 -1
  163. package/esm/models/operations/gethrisemployeedocumentcategories.js.map +1 -1
  164. package/esm/models/operations/gethrisemployees.d.ts +10 -0
  165. package/esm/models/operations/gethrisemployees.d.ts.map +1 -1
  166. package/esm/models/operations/gethrisemployees.js.map +1 -1
  167. package/esm/models/operations/gethrisemployments.d.ts +2 -0
  168. package/esm/models/operations/gethrisemployments.d.ts.map +1 -1
  169. package/esm/models/operations/gethrisemployments.js.map +1 -1
  170. package/esm/models/operations/gethrisgroups.d.ts +2 -0
  171. package/esm/models/operations/gethrisgroups.d.ts.map +1 -1
  172. package/esm/models/operations/gethrisgroups.js.map +1 -1
  173. package/esm/models/operations/gethrislegalentities.d.ts +2 -0
  174. package/esm/models/operations/gethrislegalentities.d.ts.map +1 -1
  175. package/esm/models/operations/gethrislegalentities.js.map +1 -1
  176. package/esm/models/operations/gethrislocations.d.ts +2 -0
  177. package/esm/models/operations/gethrislocations.d.ts.map +1 -1
  178. package/esm/models/operations/gethrislocations.js.map +1 -1
  179. package/esm/models/operations/gethrisperformancereviewcycles.d.ts +2 -0
  180. package/esm/models/operations/gethrisperformancereviewcycles.d.ts.map +1 -1
  181. package/esm/models/operations/gethrisperformancereviewcycles.js.map +1 -1
  182. package/esm/models/operations/gethrisperformancereviews.d.ts +6 -0
  183. package/esm/models/operations/gethrisperformancereviews.d.ts.map +1 -1
  184. package/esm/models/operations/gethrisperformancereviews.js.map +1 -1
  185. package/esm/models/operations/gethrisstaffingentities.d.ts +93 -0
  186. package/esm/models/operations/gethrisstaffingentities.d.ts.map +1 -0
  187. package/esm/models/operations/gethrisstaffingentities.js +34 -0
  188. package/esm/models/operations/gethrisstaffingentities.js.map +1 -0
  189. package/esm/models/operations/gethristimeoffbalances.d.ts +4 -0
  190. package/esm/models/operations/gethristimeoffbalances.d.ts.map +1 -1
  191. package/esm/models/operations/gethristimeoffbalances.js.map +1 -1
  192. package/esm/models/operations/gethristimesheets.d.ts +2 -0
  193. package/esm/models/operations/gethristimesheets.d.ts.map +1 -1
  194. package/esm/models/operations/gethristimesheets.js.map +1 -1
  195. package/esm/models/operations/index.d.ts +2 -0
  196. package/esm/models/operations/index.d.ts.map +1 -1
  197. package/esm/models/operations/index.js +2 -0
  198. package/esm/models/operations/index.js.map +1 -1
  199. package/esm/models/postatsapplicationsapplicationidnotesrequestbody.d.ts +21 -0
  200. package/esm/models/postatsapplicationsapplicationidnotesrequestbody.d.ts.map +1 -1
  201. package/esm/models/postatsapplicationsapplicationidnotesrequestbody.js +8 -0
  202. package/esm/models/postatsapplicationsapplicationidnotesrequestbody.js.map +1 -1
  203. package/esm/models/postatscandidatesrequestbody.d.ts +60 -0
  204. package/esm/models/postatscandidatesrequestbody.d.ts.map +1 -1
  205. package/esm/models/postatscandidatesrequestbody.js +30 -0
  206. package/esm/models/postatscandidatesrequestbody.js.map +1 -1
  207. package/esm/models/postatsjobsjobidapplicationsrequestbody.d.ts +60 -0
  208. package/esm/models/postatsjobsjobidapplicationsrequestbody.d.ts.map +1 -1
  209. package/esm/models/postatsjobsjobidapplicationsrequestbody.js +30 -0
  210. package/esm/models/postatsjobsjobidapplicationsrequestbody.js.map +1 -1
  211. package/esm/models/postconnectcreatelinkrequestbody.d.ts +4 -0
  212. package/esm/models/postconnectcreatelinkrequestbody.d.ts.map +1 -1
  213. package/esm/models/postconnectcreatelinkrequestbody.js +4 -0
  214. package/esm/models/postconnectcreatelinkrequestbody.js.map +1 -1
  215. package/esm/models/putassessmentordersassessmentorderidresultrequestbody.d.ts +15 -0
  216. package/esm/models/putassessmentordersassessmentorderidresultrequestbody.d.ts.map +1 -1
  217. package/esm/models/putassessmentordersassessmentorderidresultrequestbody.js +9 -0
  218. package/esm/models/putassessmentordersassessmentorderidresultrequestbody.js.map +1 -1
  219. package/esm/models/putatsapplicationsapplicationidstagerequestbody.d.ts +40 -0
  220. package/esm/models/putatsapplicationsapplicationidstagerequestbody.d.ts.map +1 -1
  221. package/esm/models/putatsapplicationsapplicationidstagerequestbody.js +24 -0
  222. package/esm/models/putatsapplicationsapplicationidstagerequestbody.js.map +1 -1
  223. package/esm/sdk/ats.d.ts +15 -1
  224. package/esm/sdk/ats.d.ts.map +1 -1
  225. package/esm/sdk/ats.js +16 -1
  226. package/esm/sdk/ats.js.map +1 -1
  227. package/esm/sdk/general.d.ts +19 -6
  228. package/esm/sdk/general.d.ts.map +1 -1
  229. package/esm/sdk/general.js +19 -6
  230. package/esm/sdk/general.js.map +1 -1
  231. package/esm/sdk/hris.d.ts +21 -4
  232. package/esm/sdk/hris.d.ts.map +1 -1
  233. package/esm/sdk/hris.js +22 -4
  234. package/esm/sdk/hris.js.map +1 -1
  235. package/jsr.json +1 -1
  236. package/package.json +1 -1
  237. package/src/funcs/assessmentUpdateOrderResult.ts +0 -1
  238. package/src/funcs/atsAddApplicationAttachment.ts +0 -1
  239. package/src/funcs/atsAddApplicationNote.ts +0 -1
  240. package/src/funcs/atsAddApplicationResultLink.ts +0 -1
  241. package/src/funcs/atsAddCandidateAttachment.ts +0 -1
  242. package/src/funcs/atsAddCandidateResultLink.ts +0 -1
  243. package/src/funcs/atsAddCandidateTag.ts +0 -1
  244. package/src/funcs/atsCreateApplication.ts +0 -1
  245. package/src/funcs/atsGetApplicationAttachments.ts +0 -1
  246. package/src/funcs/atsGetCandidateAttachments.ts +0 -1
  247. package/src/funcs/atsGetRoles.ts +256 -0
  248. package/src/funcs/atsMoveApplicationToStage.ts +2 -2
  249. package/src/funcs/atsRejectApplication.ts +0 -1
  250. package/src/funcs/atsRemoveCandidateTag.ts +0 -1
  251. package/src/funcs/connectGetIntegrationByToken.ts +0 -1
  252. package/src/funcs/generalCreateReconnectionLink.ts +0 -1
  253. package/src/funcs/generalDeleteIntegration.ts +0 -1
  254. package/src/funcs/generalGetCustomFields.ts +0 -1
  255. package/src/funcs/generalGetIntegrationDetails.ts +0 -1
  256. package/src/funcs/generalGetIntegrationFields.ts +0 -1
  257. package/src/funcs/generalGetTools.ts +0 -1
  258. package/src/funcs/generalSendPassthroughRequest.ts +19 -7
  259. package/src/funcs/generalSetIntegrationEnabled.ts +0 -1
  260. package/src/funcs/generalUpdateCustomFieldMapping.ts +0 -1
  261. package/src/funcs/generalUpdateIntegrationField.ts +0 -1
  262. package/src/funcs/hrisAddEmployeeDocument.ts +0 -1
  263. package/src/funcs/hrisDeleteAbsence.ts +0 -1
  264. package/src/funcs/hrisGetPerformanceReviewCycles.ts +0 -2
  265. package/src/funcs/hrisGetPerformanceReviews.ts +0 -2
  266. package/src/funcs/hrisGetStaffingEntities.ts +267 -0
  267. package/src/lib/config.ts +3 -3
  268. package/src/lib/encodings.ts +23 -4
  269. package/src/lib/files.ts +22 -0
  270. package/src/lib/matchers.ts +3 -2
  271. package/src/lib/sdks.ts +7 -5
  272. package/src/lib/security.ts +1 -2
  273. package/src/lib/url.ts +16 -14
  274. package/src/models/assessmentorderreceivedwebhookpayload.ts +21 -4
  275. package/src/models/datachangedwebhookpayload.ts +8 -0
  276. package/src/models/getassessmentordersopenpositiveresponse.ts +15 -2
  277. package/src/models/getatsjobspositiveresponse.ts +100 -1
  278. package/src/models/getatsrolespositiveresponse.ts +167 -0
  279. package/src/models/getatsuserspositiveresponse.ts +97 -0
  280. package/src/models/gethrisemployeespositiveresponse.ts +55 -37
  281. package/src/models/gethrisstaffingentitiespositiveresponse.ts +509 -0
  282. package/src/models/index.ts +2 -0
  283. package/src/models/inlineassessmentorderreceivedwebhookpayload.ts +21 -4
  284. package/src/models/komboatserror.ts +1 -0
  285. package/src/models/kombogeneralerror.ts +1 -0
  286. package/src/models/kombohriserror.ts +1 -0
  287. package/src/models/operations/getatsapplications.ts +9 -0
  288. package/src/models/operations/getatsapplicationstages.ts +2 -0
  289. package/src/models/operations/getatscandidates.ts +8 -0
  290. package/src/models/operations/getatsinterviews.ts +8 -0
  291. package/src/models/operations/getatsjobs.ts +11 -0
  292. package/src/models/operations/getatsoffers.ts +6 -0
  293. package/src/models/operations/getatsrejectionreasons.ts +2 -0
  294. package/src/models/operations/getatsroles.ts +129 -0
  295. package/src/models/operations/getatstags.ts +2 -0
  296. package/src/models/operations/getatsusers.ts +5 -0
  297. package/src/models/operations/gethrisabsences.ts +4 -0
  298. package/src/models/operations/gethrisabsencetypes.ts +2 -0
  299. package/src/models/operations/gethrisemployeedocumentcategories.ts +2 -0
  300. package/src/models/operations/gethrisemployees.ts +10 -0
  301. package/src/models/operations/gethrisemployments.ts +2 -0
  302. package/src/models/operations/gethrisgroups.ts +2 -0
  303. package/src/models/operations/gethrislegalentities.ts +2 -0
  304. package/src/models/operations/gethrislocations.ts +2 -0
  305. package/src/models/operations/gethrisperformancereviewcycles.ts +2 -0
  306. package/src/models/operations/gethrisperformancereviews.ts +6 -0
  307. package/src/models/operations/gethrisstaffingentities.ts +146 -0
  308. package/src/models/operations/gethristimeoffbalances.ts +4 -0
  309. package/src/models/operations/gethristimesheets.ts +2 -0
  310. package/src/models/operations/index.ts +2 -0
  311. package/src/models/postatsapplicationsapplicationidnotesrequestbody.ts +46 -0
  312. package/src/models/postatscandidatesrequestbody.ts +110 -0
  313. package/src/models/postatsjobsjobidapplicationsrequestbody.ts +114 -0
  314. package/src/models/postconnectcreatelinkrequestbody.ts +4 -0
  315. package/src/models/putassessmentordersassessmentorderidresultrequestbody.ts +42 -0
  316. package/src/models/putatsapplicationsapplicationidstagerequestbody.ts +74 -0
  317. package/src/sdk/ats.ts +24 -1
  318. package/src/sdk/general.ts +19 -6
  319. package/src/sdk/hris.ts +32 -4
@@ -59,6 +59,7 @@ import { Result } from "../types/fp.js";
59
59
  * |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.|
60
60
  * |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.|
61
61
  * |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.|
62
+ * |CareerPlug|`careerplug/api`|We use `https://api.careerplug.com` as the base URL. Find the official docs [here](https://api.careerplug.com/docs#api).|
62
63
  * |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.|
63
64
  * |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.|
64
65
  * |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.|
@@ -68,9 +69,11 @@ import { Result } from "../types/fp.js";
68
69
  * |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.|
69
70
  * |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.|
70
71
  * |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.|
72
+ * |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.|
73
+ * |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.|
71
74
  * |Coveto (legacy SOAP API)|`coveto/public`|We automatically use `https://\{subdomain\}.coveto.de` as the base URL.|
72
75
  * |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#/|
73
- * |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.|
76
+ * |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.|
74
77
  * |d.vinci admin|`dvinciadmin/odata-api`|[DVinci ODATA API](https://dvinci.freshdesk.com/en/support/solutions/articles/75000059523-odata-reporting-api).|
75
78
  * |d.vinci admin|`dvinciadmin/rest-api`|[DVinci REST API](https://static.dvinci-easy.com/files/d.vinci%20rest-api.html).|
76
79
  * |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.|
@@ -81,6 +84,7 @@ import { Result } from "../types/fp.js";
81
84
  * |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.|
82
85
  * |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|
83
86
  * |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.|
87
+ * |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.|
84
88
  * |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.|
85
89
  * |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.|
86
90
  * |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.|
@@ -97,15 +101,17 @@ import { Result } from "../types/fp.js";
97
101
  * |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.|
98
102
  * |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.|
99
103
  * |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.|
104
+ * |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).|
100
105
  * |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.|
101
106
  * |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.|
102
107
  * |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.|
103
108
  * |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.|
104
109
  * |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.|
105
- * |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.|
110
+ * |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.|
106
111
  * |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.|
107
- * |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.|
112
+ * |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.|
108
113
  * |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.|
114
+ * |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`).|
109
115
  * |HR WORKS|`hrworks/v2`|HRWorks's v2 [API](https://developers.hrworks.de/2.0/endpoints). We automatically authenticate all requests using the customer credentials.|
110
116
  * |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`/).|
111
117
  * |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.|
@@ -128,7 +134,8 @@ import { Result } from "../types/fp.js";
128
134
  * |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.|
129
135
  * |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.|
130
136
  * |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).|
131
- * |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.|
137
+ * |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.|
138
+ * |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`).|
132
139
  * |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.|
133
140
  * |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.|
134
141
  * |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.|
@@ -144,6 +151,8 @@ import { Result } from "../types/fp.js";
144
151
  * |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.|
145
152
  * |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.|
146
153
  * |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.|
154
+ * |Oracle 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.|
155
+ * |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).|
147
156
  * |Paradox|`paradox/v1`|We use `\{api_url\}/api/v1` as the base URL. Find the official docs [here](https://paradox.readme.io/).|
148
157
  * |Paradox|`paradox/v1public`|We use `\{api_url\}/api/v1/public` as the base URL. Find the official docs [here](https://paradox.readme.io/).|
149
158
  * |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.|
@@ -163,7 +172,9 @@ import { Result } from "../types/fp.js";
163
172
  * |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.|
164
173
  * |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.|
165
174
  * |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.|
175
+ * |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).|
166
176
  * |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.|
177
+ * |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).|
167
178
  * |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.|
168
179
  * |Remote|`remotecom/default`|Remote's [API](https://remote.com/resources/api/getting-started). We automatically authenticate all requests using provided credentials.|
169
180
  * |rexx systems|`rexx/default`|Rexx's HRIS export API. There is only one endpoint: `Get /`|
@@ -184,10 +195,11 @@ import { Result } from "../types/fp.js";
184
195
  * |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.|
185
196
  * |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.|
186
197
  * |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.|
187
- * |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.|
198
+ * |TalentLMS|`talentlms/v2`|We use `https://\{subdomain\}.talentlms.com/api/v2` as the base URL.|
188
199
  * |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.|
189
200
  * |Teamtailor|`teamtailor/v1`|We use `https://api.teamtailor.com/v1` as the base URL. Find the official docs [here](https://docs.teamtailor.com/).|
190
201
  * |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`.|
202
+ * |TriNet PEO|`trinetpeo/v1`|We use `https://api.trinet.com` as the base URL. Find the official docs [here](https://developers.trinet.com).|
191
203
  * |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.|
192
204
  * |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.|
193
205
  * |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.|
@@ -195,7 +207,8 @@ import { Result } from "../types/fp.js";
195
207
  * |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.|
196
208
  * |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.|
197
209
  * |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.|
198
- * |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.|
210
+ * |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.|
211
+ * |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.|
199
212
  * |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".|
200
213
  * |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`).|
201
214
  * |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.|
@@ -274,7 +287,6 @@ async function $do(
274
287
  charEncoding: "percent",
275
288
  }),
276
289
  };
277
-
278
290
  const path = pathToFunc("/passthrough/{tool}/{api}")(pathParams);
279
291
 
280
292
  const headers = new Headers(compactMap({
@@ -101,7 +101,6 @@ async function $do(
101
101
  charEncoding: "percent",
102
102
  }),
103
103
  };
104
-
105
104
  const path = pathToFunc("/integrations/{integration_id}/enabled")(pathParams);
106
105
 
107
106
  const headers = new Headers(compactMap({
@@ -104,7 +104,6 @@ async function $do(
104
104
  charEncoding: "percent",
105
105
  }),
106
106
  };
107
-
108
107
  const path = pathToFunc(
109
108
  "/integrations/{integration_id}/custom-fields/{custom_field_id}",
110
109
  )(pathParams);
@@ -105,7 +105,6 @@ async function $do(
105
105
  charEncoding: "percent",
106
106
  }),
107
107
  };
108
-
109
108
  const path = pathToFunc(
110
109
  "/integrations/{integration_id}/integration-fields/{integration_field_id}",
111
110
  )(pathParams);
@@ -114,7 +114,6 @@ async function $do(
114
114
  charEncoding: "percent",
115
115
  }),
116
116
  };
117
-
118
117
  const path = pathToFunc("/hris/employees/{employee_id}/documents")(
119
118
  pathParams,
120
119
  );
@@ -108,7 +108,6 @@ async function $do(
108
108
  charEncoding: "percent",
109
109
  }),
110
110
  };
111
-
112
111
  const path = pathToFunc("/hris/absences/{absence_id}")(pathParams);
113
112
 
114
113
  const headers = new Headers(compactMap({
@@ -40,8 +40,6 @@ import {
40
40
  *
41
41
  * Retrieve performance review cycles data from HRIS tools.
42
42
  *
43
- * <Warning>**Open Beta Feature:** This endpoint is currently in beta. Please reach out to our support team if you need assistance with implementation.</Warning>
44
- *
45
43
  * 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)`
46
44
  */
47
45
  export function hrisGetPerformanceReviewCycles(
@@ -40,8 +40,6 @@ import {
40
40
  *
41
41
  * Retrieve performance review data from HRIS tools.
42
42
  *
43
- * <Warning>**Open Beta Feature:** This endpoint is currently in beta. Please reach out to our support team if you need assistance with implementation.</Warning>
44
- *
45
43
  * 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)`
46
44
  */
47
45
  export function hrisGetPerformanceReviews(
@@ -0,0 +1,267 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { KomboCore } from "../core.js";
6
+ import { dlv } from "../lib/dlv.js";
7
+ import { encodeFormQuery, encodeSimple, queryJoin } from "../lib/encodings.js";
8
+ import * as M from "../lib/matchers.js";
9
+ import { compactMap } from "../lib/primitives.js";
10
+ import { safeParse } from "../lib/schemas.js";
11
+ import { RequestOptions } from "../lib/sdks.js";
12
+ import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
13
+ import { pathToFunc } from "../lib/url.js";
14
+ import {
15
+ ConnectionError,
16
+ InvalidRequestError,
17
+ RequestAbortedError,
18
+ RequestTimeoutError,
19
+ UnexpectedClientError,
20
+ } from "../models/errors/httpclienterrors.js";
21
+ import * as errors from "../models/errors/index.js";
22
+ import { KomboError } from "../models/errors/komboerror.js";
23
+ import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
24
+ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
25
+ import * as operations from "../models/operations/index.js";
26
+ import { APICall, APIPromise } from "../types/async.js";
27
+ import { Result } from "../types/fp.js";
28
+ import {
29
+ createPageIterator,
30
+ haltIterator,
31
+ PageIterator,
32
+ Paginator,
33
+ } from "../types/operations.js";
34
+
35
+ /**
36
+ * Get staffing entities
37
+ *
38
+ * @remarks
39
+ * Retrieve all staffing entities.
40
+ *
41
+ * Retrieve all staffing entities (positions, requisitions, and jobs) from the HRIS system.
42
+ *
43
+ * 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:
44
+ *
45
+ * - **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.
46
+ * - **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.
47
+ * - **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.
48
+ *
49
+ * 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.
50
+ *
51
+ * 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)`
52
+ */
53
+ export function hrisGetStaffingEntities(
54
+ client: KomboCore,
55
+ request?: operations.GetHrisStaffingEntitiesRequest | undefined,
56
+ options?: RequestOptions,
57
+ ): APIPromise<
58
+ PageIterator<
59
+ Result<
60
+ operations.GetHrisStaffingEntitiesResponse,
61
+ | errors.KomboHrisError
62
+ | KomboError
63
+ | ResponseValidationError
64
+ | ConnectionError
65
+ | RequestAbortedError
66
+ | RequestTimeoutError
67
+ | InvalidRequestError
68
+ | UnexpectedClientError
69
+ | SDKValidationError
70
+ >,
71
+ { cursor: string }
72
+ >
73
+ > {
74
+ return new APIPromise($do(
75
+ client,
76
+ request,
77
+ options,
78
+ ));
79
+ }
80
+
81
+ async function $do(
82
+ client: KomboCore,
83
+ request?: operations.GetHrisStaffingEntitiesRequest | undefined,
84
+ options?: RequestOptions,
85
+ ): Promise<
86
+ [
87
+ PageIterator<
88
+ Result<
89
+ operations.GetHrisStaffingEntitiesResponse,
90
+ | errors.KomboHrisError
91
+ | KomboError
92
+ | ResponseValidationError
93
+ | ConnectionError
94
+ | RequestAbortedError
95
+ | RequestTimeoutError
96
+ | InvalidRequestError
97
+ | UnexpectedClientError
98
+ | SDKValidationError
99
+ >,
100
+ { cursor: string }
101
+ >,
102
+ APICall,
103
+ ]
104
+ > {
105
+ const parsed = safeParse(
106
+ request,
107
+ (value) =>
108
+ operations.GetHrisStaffingEntitiesRequest$outboundSchema.optional().parse(
109
+ value,
110
+ ),
111
+ "Input validation failed",
112
+ );
113
+ if (!parsed.ok) {
114
+ return [haltIterator(parsed), { status: "invalid" }];
115
+ }
116
+ const payload = parsed.value;
117
+ const body = null;
118
+
119
+ const path = pathToFunc("/hris/staffing-entities")();
120
+
121
+ const query = queryJoin(
122
+ encodeFormQuery({
123
+ "ids": payload?.ids,
124
+ "model_types": payload?.model_types,
125
+ "remote_ids": payload?.remote_ids,
126
+ "statuses": payload?.statuses,
127
+ }, { explode: false }),
128
+ encodeFormQuery({
129
+ "cursor": payload?.cursor,
130
+ "ignore_unsupported_filters": payload?.ignore_unsupported_filters,
131
+ "include_deleted": payload?.include_deleted,
132
+ "page_size": payload?.page_size,
133
+ "updated_after": payload?.updated_after,
134
+ }),
135
+ );
136
+
137
+ const headers = new Headers(compactMap({
138
+ Accept: "application/json",
139
+ "X-Integration-Id": encodeSimple(
140
+ "X-Integration-Id",
141
+ client._options.integration_id,
142
+ { explode: false, charEncoding: "none" },
143
+ ),
144
+ }));
145
+
146
+ const secConfig = await extractSecurity(client._options.api_key);
147
+ const securityInput = secConfig == null ? {} : { api_key: secConfig };
148
+ const requestSecurity = resolveGlobalSecurity(securityInput);
149
+
150
+ const context = {
151
+ options: client._options,
152
+ base_url: options?.server_url ?? client._baseURL ?? "",
153
+ operation_id: "GetHrisStaffingEntities",
154
+ o_auth2_scopes: null,
155
+
156
+ resolved_security: requestSecurity,
157
+
158
+ security_source: client._options.api_key,
159
+ retry_config: options?.retries
160
+ || client._options.retry_config
161
+ || { strategy: "none" },
162
+ retry_codes: options?.retry_codes || ["429", "500", "502", "503", "504"],
163
+ };
164
+
165
+ const requestRes = client._createRequest(context, {
166
+ security: requestSecurity,
167
+ method: "GET",
168
+ baseURL: options?.server_url,
169
+ path: path,
170
+ headers: headers,
171
+ query: query,
172
+ body: body,
173
+ userAgent: client._options.user_agent,
174
+ timeout_ms: options?.timeout_ms || client._options.timeout_ms || -1,
175
+ }, options);
176
+ if (!requestRes.ok) {
177
+ return [haltIterator(requestRes), { status: "invalid" }];
178
+ }
179
+ const req = requestRes.value;
180
+
181
+ const doResult = await client._do(req, {
182
+ context,
183
+ errorCodes: ["default"],
184
+ retryConfig: context.retry_config,
185
+ retryCodes: context.retry_codes,
186
+ });
187
+ if (!doResult.ok) {
188
+ return [haltIterator(doResult), { status: "request-error", request: req }];
189
+ }
190
+ const response = doResult.value;
191
+
192
+ const responseFields = {
193
+ HttpMeta: { Response: response, Request: req },
194
+ };
195
+
196
+ const [result, raw] = await M.match<
197
+ operations.GetHrisStaffingEntitiesResponse,
198
+ | errors.KomboHrisError
199
+ | KomboError
200
+ | ResponseValidationError
201
+ | ConnectionError
202
+ | RequestAbortedError
203
+ | RequestTimeoutError
204
+ | InvalidRequestError
205
+ | UnexpectedClientError
206
+ | SDKValidationError
207
+ >(
208
+ M.json(200, operations.GetHrisStaffingEntitiesResponse$inboundSchema, {
209
+ key: "Result",
210
+ }),
211
+ M.jsonErr("default", errors.KomboHrisError$inboundSchema),
212
+ )(response, req, { extraFields: responseFields });
213
+ if (!result.ok) {
214
+ return [haltIterator(result), {
215
+ status: "complete",
216
+ request: req,
217
+ response,
218
+ }];
219
+ }
220
+
221
+ const nextFunc = (
222
+ responseData: unknown,
223
+ ): {
224
+ next: Paginator<
225
+ Result<
226
+ operations.GetHrisStaffingEntitiesResponse,
227
+ | errors.KomboHrisError
228
+ | KomboError
229
+ | ResponseValidationError
230
+ | ConnectionError
231
+ | RequestAbortedError
232
+ | RequestTimeoutError
233
+ | InvalidRequestError
234
+ | UnexpectedClientError
235
+ | SDKValidationError
236
+ >
237
+ >;
238
+ "~next"?: { cursor: string };
239
+ } => {
240
+ const nextCursor = dlv(responseData, "data.next");
241
+ if (typeof nextCursor !== "string") {
242
+ return { next: () => null };
243
+ }
244
+ if (nextCursor.trim() === "") {
245
+ return { next: () => null };
246
+ }
247
+
248
+ const nextVal = () =>
249
+ hrisGetStaffingEntities(
250
+ client,
251
+ {
252
+ ...request!,
253
+ cursor: nextCursor,
254
+ },
255
+ options,
256
+ );
257
+
258
+ return { next: nextVal, "~next": { cursor: nextCursor } };
259
+ };
260
+
261
+ const page = { ...result, ...nextFunc(raw) };
262
+ return [{ ...page, ...createPageIterator(page, (v) => !v.ok) }, {
263
+ status: "complete",
264
+ request: req,
265
+ response,
266
+ }];
267
+ }
package/src/lib/config.ts CHANGED
@@ -69,7 +69,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
69
69
  export const SDK_METADATA = {
70
70
  language: "typescript",
71
71
  openapiDocVersion: "1.0.0",
72
- sdkVersion: "1.0.1",
73
- genVersion: "2.844.3",
74
- userAgent: "speakeasy-sdk/typescript 1.0.1 2.844.3 1.0.0 @kombo-api/sdk",
72
+ sdkVersion: "1.0.3",
73
+ genVersion: "2.869.25",
74
+ userAgent: "speakeasy-sdk/typescript 1.0.3 2.869.25 1.0.0 @kombo-api/sdk",
75
75
  } as const;
@@ -479,6 +479,23 @@ export const encodeSpaceDelimitedQuery = queryEncoder(encodeSpaceDelimited);
479
479
  export const encodePipeDelimitedQuery = queryEncoder(encodePipeDelimited);
480
480
  export const encodeDeepObjectQuery = queryEncoder(encodeDeepObject);
481
481
 
482
+ function isBlobLike(val: unknown): val is Blob {
483
+ if (val instanceof Blob) {
484
+ return true;
485
+ }
486
+
487
+ if (typeof val !== "object" || val == null || !(Symbol.toStringTag in val)) {
488
+ return false;
489
+ }
490
+
491
+ const tag = val[Symbol.toStringTag];
492
+ if (tag !== "Blob" && tag !== "File") {
493
+ return false;
494
+ }
495
+
496
+ return "stream" in val && typeof val.stream === "function";
497
+ }
498
+
482
499
  export function appendForm(
483
500
  fd: FormData,
484
501
  key: string,
@@ -487,10 +504,12 @@ export function appendForm(
487
504
  ): void {
488
505
  if (value == null) {
489
506
  return;
490
- } else if (value instanceof Blob && fileName) {
491
- fd.append(key, value, fileName);
492
- } else if (value instanceof Blob) {
493
- fd.append(key, value);
507
+ } else if (isBlobLike(value)) {
508
+ if (fileName) {
509
+ fd.append(key, value as Blob, fileName);
510
+ } else {
511
+ fd.append(key, value as Blob);
512
+ }
494
513
  } else {
495
514
  fd.append(key, String(value));
496
515
  }
package/src/lib/files.ts CHANGED
@@ -80,3 +80,25 @@ export function getContentTypeFromFileName(fileName: string): string | null {
80
80
 
81
81
  return mimeTypes[ext] || null;
82
82
  }
83
+
84
+ /**
85
+ * Creates a Blob from file content with the given MIME type.
86
+ *
87
+ * Node.js Buffers are Uint8Array subclasses that may share a pooled
88
+ * ArrayBuffer (byteOffset > 0, byteLength < buffer.byteLength). Passing
89
+ * such a Buffer directly to `new Blob([buf])` can include the entire
90
+ * underlying pool on some runtimes, producing a Blob with extra bytes
91
+ * that corrupts multipart uploads.
92
+ *
93
+ * Copying into a standalone Uint8Array ensures the Blob receives only the
94
+ * intended bytes regardless of runtime behaviour.
95
+ */
96
+ export function bytesToBlob(
97
+ content: Uint8Array<ArrayBufferLike> | ArrayBuffer | Blob | string,
98
+ contentType: string,
99
+ ): Blob {
100
+ if (content instanceof Uint8Array) {
101
+ return new Blob([new Uint8Array(content)], { type: contentType });
102
+ }
103
+ return new Blob([content as BlobPart], { type: contentType });
104
+ }
@@ -251,8 +251,9 @@ export function match<T, E>(
251
251
  raw = body;
252
252
  break;
253
253
  default:
254
- encoding satisfies never;
255
- throw new Error(`Unsupported response type: ${encoding}`);
254
+ throw new Error(
255
+ `Unsupported response type: ${encoding satisfies never}`,
256
+ );
256
257
  }
257
258
 
258
259
  if (matcher.enc === "fail") {
package/src/lib/sdks.ts CHANGED
@@ -123,13 +123,15 @@ export class ClientSDK {
123
123
  if (!base) {
124
124
  return ERR(new InvalidRequestError("No base URL provided for operation"));
125
125
  }
126
- const reqURL = new URL(base);
127
- const inputURL = new URL(path, reqURL);
128
-
126
+ const baseURL = new URL(base);
127
+ let reqURL: URL;
129
128
  if (path) {
130
- reqURL.pathname += reqURL.pathname.endsWith("/") ? "" : "/";
131
- reqURL.pathname += inputURL.pathname.replace(/^\/+/, "");
129
+ baseURL.pathname = baseURL.pathname.replace(/\/+$/, "") + "/";
130
+ reqURL = new URL(path, baseURL);
131
+ } else {
132
+ reqURL = baseURL;
132
133
  }
134
+ reqURL.hash = "";
133
135
 
134
136
  let finalQuery = query || "";
135
137
 
@@ -197,8 +197,7 @@ export function resolveSecurity(
197
197
  applyBearer(state, spec);
198
198
  break;
199
199
  default:
200
- spec satisfies never;
201
- throw SecurityError.unrecognizedType(type);
200
+ throw SecurityError.unrecognizedType((spec satisfies never, type));
202
201
  }
203
202
  });
204
203
 
package/src/lib/url.ts CHANGED
@@ -13,21 +13,23 @@ export function pathToFunc(
13
13
  const paramRE = /\{([a-zA-Z0-9_][a-zA-Z0-9_-]*?)\}/g;
14
14
 
15
15
  return function buildURLPath(params: Record<string, unknown> = {}): string {
16
- return pathPattern.replace(paramRE, function (_, placeholder) {
17
- if (!hasOwn.call(params, placeholder)) {
18
- throw new Error(`Parameter '${placeholder}' is required`);
19
- }
16
+ return pathPattern
17
+ .replace(paramRE, function (_, placeholder) {
18
+ if (!hasOwn.call(params, placeholder)) {
19
+ throw new Error(`Parameter '${placeholder}' is required`);
20
+ }
20
21
 
21
- const value = params[placeholder];
22
- if (typeof value !== "string" && typeof value !== "number") {
23
- throw new Error(
24
- `Parameter '${placeholder}' must be a string or number`,
25
- );
26
- }
22
+ const value = params[placeholder];
23
+ if (typeof value !== "string" && typeof value !== "number") {
24
+ throw new Error(
25
+ `Parameter '${placeholder}' must be a string or number`,
26
+ );
27
+ }
27
28
 
28
- return options?.charEncoding === "percent"
29
- ? encodeURIComponent(`${value}`)
30
- : `${value}`;
31
- });
29
+ return options?.charEncoding === "percent"
30
+ ? encodeURIComponent(`${value}`)
31
+ : `${value}`;
32
+ })
33
+ .replace(/^\/+/, "");
32
34
  };
33
35
  }