kombo 0.0.3__tar.gz

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 (222) hide show
  1. kombo-0.0.3/PKG-INFO +537 -0
  2. kombo-0.0.3/README-PYPI.md +524 -0
  3. kombo-0.0.3/README.md +524 -0
  4. kombo-0.0.3/pyproject.toml +54 -0
  5. kombo-0.0.3/setup.cfg +4 -0
  6. kombo-0.0.3/src/kombo/__init__.py +17 -0
  7. kombo-0.0.3/src/kombo/_hooks/__init__.py +5 -0
  8. kombo-0.0.3/src/kombo/_hooks/registration.py +13 -0
  9. kombo-0.0.3/src/kombo/_hooks/sdkhooks.py +76 -0
  10. kombo-0.0.3/src/kombo/_hooks/types.py +112 -0
  11. kombo-0.0.3/src/kombo/_version.py +15 -0
  12. kombo-0.0.3/src/kombo/assessment.py +1023 -0
  13. kombo-0.0.3/src/kombo/ats.py +6795 -0
  14. kombo-0.0.3/src/kombo/basesdk.py +360 -0
  15. kombo-0.0.3/src/kombo/connect.py +480 -0
  16. kombo-0.0.3/src/kombo/errors/__init__.py +78 -0
  17. kombo-0.0.3/src/kombo/errors/komboatserror.py +34 -0
  18. kombo-0.0.3/src/kombo/errors/kombogeneralerror.py +34 -0
  19. kombo-0.0.3/src/kombo/errors/kombohriserror.py +34 -0
  20. kombo-0.0.3/src/kombo/errors/no_response_error.py +17 -0
  21. kombo-0.0.3/src/kombo/errors/responsevalidationerror.py +27 -0
  22. kombo-0.0.3/src/kombo/errors/sdkdefaulterror.py +40 -0
  23. kombo-0.0.3/src/kombo/errors/sdkerror.py +30 -0
  24. kombo-0.0.3/src/kombo/general.py +2545 -0
  25. kombo-0.0.3/src/kombo/hris.py +4766 -0
  26. kombo-0.0.3/src/kombo/httpclient.py +125 -0
  27. kombo-0.0.3/src/kombo/models/__init__.py +5546 -0
  28. kombo-0.0.3/src/kombo/models/assessmentorderreceivedwebhookpayload.py +399 -0
  29. kombo-0.0.3/src/kombo/models/connectionflowfailedwebhookpayload.py +116 -0
  30. kombo-0.0.3/src/kombo/models/datachangedwebhookpayload.py +109 -0
  31. kombo-0.0.3/src/kombo/models/deleteatscandidatescandidateidtagsop.py +51 -0
  32. kombo-0.0.3/src/kombo/models/deleteatscandidatescandidateidtagspositiveresponse.py +44 -0
  33. kombo-0.0.3/src/kombo/models/deleteatscandidatescandidateidtagsrequestbody.py +136 -0
  34. kombo-0.0.3/src/kombo/models/deletehrisabsencesabsenceidop.py +51 -0
  35. kombo-0.0.3/src/kombo/models/deletehrisabsencesabsenceidpositiveresponse.py +204 -0
  36. kombo-0.0.3/src/kombo/models/deletehrisabsencesabsenceidrequestbody.py +50 -0
  37. kombo-0.0.3/src/kombo/models/deleteintegrationsintegrationidop.py +30 -0
  38. kombo-0.0.3/src/kombo/models/deleteintegrationsintegrationidpositiveresponse.py +31 -0
  39. kombo-0.0.3/src/kombo/models/deleteintegrationsintegrationidrequestbody.py +13 -0
  40. kombo-0.0.3/src/kombo/models/getassessmentordersopenop.py +60 -0
  41. kombo-0.0.3/src/kombo/models/getassessmentordersopenpositiveresponse.py +416 -0
  42. kombo-0.0.3/src/kombo/models/getassessmentpackagesop.py +30 -0
  43. kombo-0.0.3/src/kombo/models/getassessmentpackagespositiveresponse.py +98 -0
  44. kombo-0.0.3/src/kombo/models/getatsapplicationsapplicationidattachmentsop.py +34 -0
  45. kombo-0.0.3/src/kombo/models/getatsapplicationsapplicationidattachmentspositiveresponse.py +134 -0
  46. kombo-0.0.3/src/kombo/models/getatsapplicationsop.py +157 -0
  47. kombo-0.0.3/src/kombo/models/getatsapplicationspositiveresponse.py +1578 -0
  48. kombo-0.0.3/src/kombo/models/getatsapplicationstagesop.py +103 -0
  49. kombo-0.0.3/src/kombo/models/getatsapplicationstagespositiveresponse.py +136 -0
  50. kombo-0.0.3/src/kombo/models/getatscandidatescandidateidattachmentsop.py +34 -0
  51. kombo-0.0.3/src/kombo/models/getatscandidatescandidateidattachmentspositiveresponse.py +138 -0
  52. kombo-0.0.3/src/kombo/models/getatscandidatesop.py +135 -0
  53. kombo-0.0.3/src/kombo/models/getatscandidatespositiveresponse.py +737 -0
  54. kombo-0.0.3/src/kombo/models/getatsinterviewsop.py +111 -0
  55. kombo-0.0.3/src/kombo/models/getatsinterviewspositiveresponse.py +591 -0
  56. kombo-0.0.3/src/kombo/models/getatsjobsop.py +177 -0
  57. kombo-0.0.3/src/kombo/models/getatsjobspositiveresponse.py +1275 -0
  58. kombo-0.0.3/src/kombo/models/getatsoffersop.py +103 -0
  59. kombo-0.0.3/src/kombo/models/getatsofferspositiveresponse.py +431 -0
  60. kombo-0.0.3/src/kombo/models/getatsrejectionreasonsop.py +103 -0
  61. kombo-0.0.3/src/kombo/models/getatsrejectionreasonspositiveresponse.py +136 -0
  62. kombo-0.0.3/src/kombo/models/getatstagsop.py +103 -0
  63. kombo-0.0.3/src/kombo/models/getatstagspositiveresponse.py +134 -0
  64. kombo-0.0.3/src/kombo/models/getatsusersop.py +111 -0
  65. kombo-0.0.3/src/kombo/models/getatsuserspositiveresponse.py +165 -0
  66. kombo-0.0.3/src/kombo/models/getcheckapikeypositiveresponse.py +31 -0
  67. kombo-0.0.3/src/kombo/models/getconnectintegrationbytokentokenop.py +18 -0
  68. kombo-0.0.3/src/kombo/models/getconnectintegrationbytokentokenpositiveresponse.py +102 -0
  69. kombo-0.0.3/src/kombo/models/gethrisabsencesop.py +135 -0
  70. kombo-0.0.3/src/kombo/models/gethrisabsencespositiveresponse.py +334 -0
  71. kombo-0.0.3/src/kombo/models/gethrisabsencetypesop.py +103 -0
  72. kombo-0.0.3/src/kombo/models/gethrisabsencetypespositiveresponse.py +164 -0
  73. kombo-0.0.3/src/kombo/models/gethrisemployeedocumentcategoriesop.py +103 -0
  74. kombo-0.0.3/src/kombo/models/gethrisemployeedocumentcategoriespositiveresponse.py +136 -0
  75. kombo-0.0.3/src/kombo/models/gethrisemployeesformop.py +30 -0
  76. kombo-0.0.3/src/kombo/models/gethrisemployeesformpositiveresponse.py +1009 -0
  77. kombo-0.0.3/src/kombo/models/gethrisemployeesop.py +175 -0
  78. kombo-0.0.3/src/kombo/models/gethrisemployeespositiveresponse.py +1500 -0
  79. kombo-0.0.3/src/kombo/models/gethrisemploymentsop.py +103 -0
  80. kombo-0.0.3/src/kombo/models/gethrisemploymentspositiveresponse.py +293 -0
  81. kombo-0.0.3/src/kombo/models/gethrisgroupsop.py +125 -0
  82. kombo-0.0.3/src/kombo/models/gethrisgroupspositiveresponse.py +154 -0
  83. kombo-0.0.3/src/kombo/models/gethrislegalentitiesop.py +111 -0
  84. kombo-0.0.3/src/kombo/models/gethrislegalentitiespositiveresponse.py +223 -0
  85. kombo-0.0.3/src/kombo/models/gethrislocationsop.py +111 -0
  86. kombo-0.0.3/src/kombo/models/gethrislocationspositiveresponse.py +228 -0
  87. kombo-0.0.3/src/kombo/models/gethrisperformancereviewcyclesop.py +103 -0
  88. kombo-0.0.3/src/kombo/models/gethrisperformancereviewcyclespositiveresponse.py +145 -0
  89. kombo-0.0.3/src/kombo/models/gethrisperformancereviewsop.py +133 -0
  90. kombo-0.0.3/src/kombo/models/gethrisperformancereviewspositiveresponse.py +542 -0
  91. kombo-0.0.3/src/kombo/models/gethristimeoffbalancesop.py +111 -0
  92. kombo-0.0.3/src/kombo/models/gethristimeoffbalancespositiveresponse.py +279 -0
  93. kombo-0.0.3/src/kombo/models/gethristimesheetsop.py +143 -0
  94. kombo-0.0.3/src/kombo/models/gethristimesheetspositiveresponse.py +231 -0
  95. kombo-0.0.3/src/kombo/models/getintegrationsintegrationidcustomfieldsop.py +54 -0
  96. kombo-0.0.3/src/kombo/models/getintegrationsintegrationidcustomfieldspositiveresponse.py +210 -0
  97. kombo-0.0.3/src/kombo/models/getintegrationsintegrationidintegrationfieldsop.py +55 -0
  98. kombo-0.0.3/src/kombo/models/getintegrationsintegrationidintegrationfieldspositiveresponse.py +153 -0
  99. kombo-0.0.3/src/kombo/models/getintegrationsintegrationidop.py +18 -0
  100. kombo-0.0.3/src/kombo/models/getintegrationsintegrationidpositiveresponse.py +406 -0
  101. kombo-0.0.3/src/kombo/models/gettoolscategoryop.py +20 -0
  102. kombo-0.0.3/src/kombo/models/gettoolscategoryparametercategory.py +11 -0
  103. kombo-0.0.3/src/kombo/models/gettoolscategorypositiveresponse.py +330 -0
  104. kombo-0.0.3/src/kombo/models/inlineassessmentorderreceivedwebhookpayload.py +403 -0
  105. kombo-0.0.3/src/kombo/models/integrationcreatedwebhookpayload.py +116 -0
  106. kombo-0.0.3/src/kombo/models/integrationdeletedwebhookpayload.py +122 -0
  107. kombo-0.0.3/src/kombo/models/integrationstatechangedwebhookpayload.py +148 -0
  108. kombo-0.0.3/src/kombo/models/internal/__init__.py +54 -0
  109. kombo-0.0.3/src/kombo/models/internal/globals.py +22 -0
  110. kombo-0.0.3/src/kombo/models/komboatserror.py +96 -0
  111. kombo-0.0.3/src/kombo/models/kombogeneralerror.py +80 -0
  112. kombo-0.0.3/src/kombo/models/kombohriserror.py +94 -0
  113. kombo-0.0.3/src/kombo/models/patchintegrationsintegrationidintegrationfieldsintegrationfieldidop.py +41 -0
  114. kombo-0.0.3/src/kombo/models/patchintegrationsintegrationidintegrationfieldsintegrationfieldidpositiveresponse.py +112 -0
  115. kombo-0.0.3/src/kombo/models/patchintegrationsintegrationidintegrationfieldsintegrationfieldidrequestbody.py +48 -0
  116. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidattachmentsop.py +51 -0
  117. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidattachmentspositiveresponse.py +50 -0
  118. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidattachmentsrequestbody.py +247 -0
  119. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidnotesop.py +51 -0
  120. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidnotespositiveresponse.py +46 -0
  121. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidnotesrequestbody.py +211 -0
  122. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidrejectop.py +51 -0
  123. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidrejectpositiveresponse.py +46 -0
  124. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidrejectrequestbody.py +135 -0
  125. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidresultlinksop.py +51 -0
  126. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidresultlinkspositiveresponse.py +50 -0
  127. kombo-0.0.3/src/kombo/models/postatsapplicationsapplicationidresultlinksrequestbody.py +266 -0
  128. kombo-0.0.3/src/kombo/models/postatscandidatescandidateidattachmentsop.py +51 -0
  129. kombo-0.0.3/src/kombo/models/postatscandidatescandidateidattachmentspositiveresponse.py +48 -0
  130. kombo-0.0.3/src/kombo/models/postatscandidatescandidateidattachmentsrequestbody.py +196 -0
  131. kombo-0.0.3/src/kombo/models/postatscandidatescandidateidresultlinksop.py +51 -0
  132. kombo-0.0.3/src/kombo/models/postatscandidatescandidateidresultlinkspositiveresponse.py +48 -0
  133. kombo-0.0.3/src/kombo/models/postatscandidatescandidateidresultlinksrequestbody.py +250 -0
  134. kombo-0.0.3/src/kombo/models/postatscandidatescandidateidtagsop.py +51 -0
  135. kombo-0.0.3/src/kombo/models/postatscandidatescandidateidtagspositiveresponse.py +44 -0
  136. kombo-0.0.3/src/kombo/models/postatscandidatescandidateidtagsrequestbody.py +134 -0
  137. kombo-0.0.3/src/kombo/models/postatscandidatesop.py +22 -0
  138. kombo-0.0.3/src/kombo/models/postatscandidatespositiveresponse.py +707 -0
  139. kombo-0.0.3/src/kombo/models/postatscandidatesrequestbody.py +1606 -0
  140. kombo-0.0.3/src/kombo/models/postatsimporttrackedapplicationop.py +22 -0
  141. kombo-0.0.3/src/kombo/models/postatsimporttrackedapplicationpositiveresponse.py +356 -0
  142. kombo-0.0.3/src/kombo/models/postatsimporttrackedapplicationrequestbody.py +323 -0
  143. kombo-0.0.3/src/kombo/models/postatsjobsjobidapplicationsop.py +51 -0
  144. kombo-0.0.3/src/kombo/models/postatsjobsjobidapplicationspositiveresponse.py +1462 -0
  145. kombo-0.0.3/src/kombo/models/postatsjobsjobidapplicationsrequestbody.py +1665 -0
  146. kombo-0.0.3/src/kombo/models/postconnectcreatelinkpositiveresponse.py +31 -0
  147. kombo-0.0.3/src/kombo/models/postconnectcreatelinkrequestbody.py +324 -0
  148. kombo-0.0.3/src/kombo/models/postforcesyncop.py +22 -0
  149. kombo-0.0.3/src/kombo/models/postforcesyncpositiveresponse.py +50 -0
  150. kombo-0.0.3/src/kombo/models/postforcesyncrequestbody.py +23 -0
  151. kombo-0.0.3/src/kombo/models/posthrisabsencesop.py +22 -0
  152. kombo-0.0.3/src/kombo/models/posthrisabsencespositiveresponse.py +204 -0
  153. kombo-0.0.3/src/kombo/models/posthrisabsencesrequestbody.py +172 -0
  154. kombo-0.0.3/src/kombo/models/posthrisemployeesemployeeiddocumentsop.py +51 -0
  155. kombo-0.0.3/src/kombo/models/posthrisemployeesemployeeiddocumentspositiveresponse.py +44 -0
  156. kombo-0.0.3/src/kombo/models/posthrisemployeesemployeeiddocumentsrequestbody.py +68 -0
  157. kombo-0.0.3/src/kombo/models/posthrisemployeesformop.py +22 -0
  158. kombo-0.0.3/src/kombo/models/posthrisemployeesformpositiveresponse.py +77 -0
  159. kombo-0.0.3/src/kombo/models/posthrisemployeesformrequestbody.py +15 -0
  160. kombo-0.0.3/src/kombo/models/postintegrationsintegrationidrelinkop.py +30 -0
  161. kombo-0.0.3/src/kombo/models/postintegrationsintegrationidrelinkpositiveresponse.py +31 -0
  162. kombo-0.0.3/src/kombo/models/postintegrationsintegrationidrelinkrequestbody.py +95 -0
  163. kombo-0.0.3/src/kombo/models/postpassthroughtoolapiop.py +58 -0
  164. kombo-0.0.3/src/kombo/models/postpassthroughtoolapipositiveresponse.py +67 -0
  165. kombo-0.0.3/src/kombo/models/postpassthroughtoolapirequestbody.py +133 -0
  166. kombo-0.0.3/src/kombo/models/putassessmentordersassessmentorderidresultop.py +51 -0
  167. kombo-0.0.3/src/kombo/models/putassessmentordersassessmentorderidresultpositiveresponse.py +50 -0
  168. kombo-0.0.3/src/kombo/models/putassessmentordersassessmentorderidresultrequestbody.py +236 -0
  169. kombo-0.0.3/src/kombo/models/putassessmentpackagesop.py +22 -0
  170. kombo-0.0.3/src/kombo/models/putassessmentpackagespositiveresponse.py +44 -0
  171. kombo-0.0.3/src/kombo/models/putassessmentpackagesrequestbody.py +46 -0
  172. kombo-0.0.3/src/kombo/models/putatsapplicationsapplicationidstageop.py +51 -0
  173. kombo-0.0.3/src/kombo/models/putatsapplicationsapplicationidstagepositiveresponse.py +44 -0
  174. kombo-0.0.3/src/kombo/models/putatsapplicationsapplicationidstagerequestbody.py +130 -0
  175. kombo-0.0.3/src/kombo/models/putintegrationsintegrationidcustomfieldscustomfieldidop.py +37 -0
  176. kombo-0.0.3/src/kombo/models/putintegrationsintegrationidcustomfieldscustomfieldidpositiveresponse.py +169 -0
  177. kombo-0.0.3/src/kombo/models/putintegrationsintegrationidcustomfieldscustomfieldidrequestbody.py +48 -0
  178. kombo-0.0.3/src/kombo/models/schema1.py +13 -0
  179. kombo-0.0.3/src/kombo/models/schema1_union_1.py +940 -0
  180. kombo-0.0.3/src/kombo/models/schema1_union_2.py +126 -0
  181. kombo-0.0.3/src/kombo/models/schema2_union_1.py +939 -0
  182. kombo-0.0.3/src/kombo/models/schema2_union_2.py +181 -0
  183. kombo-0.0.3/src/kombo/models/schema4.py +16 -0
  184. kombo-0.0.3/src/kombo/models/security.py +24 -0
  185. kombo-0.0.3/src/kombo/models/syncfinishedwebhookpayload.py +147 -0
  186. kombo-0.0.3/src/kombo/models/webhookassessmentorderreceivedwebhookpayloadop.py +31 -0
  187. kombo-0.0.3/src/kombo/models/webhookconnectionflowfailedwebhookpayloadop.py +31 -0
  188. kombo-0.0.3/src/kombo/models/webhookdatachangedwebhookpayloadop.py +31 -0
  189. kombo-0.0.3/src/kombo/models/webhookinlineassessmentorderreceivedwebhookpayloadop.py +31 -0
  190. kombo-0.0.3/src/kombo/models/webhookintegrationcreatedwebhookpayloadop.py +31 -0
  191. kombo-0.0.3/src/kombo/models/webhookintegrationdeletedwebhookpayloadop.py +31 -0
  192. kombo-0.0.3/src/kombo/models/webhookintegrationstatechangedwebhookpayloadop.py +31 -0
  193. kombo-0.0.3/src/kombo/models/webhooksyncfinishedwebhookpayloadop.py +31 -0
  194. kombo-0.0.3/src/kombo/py.typed +1 -0
  195. kombo-0.0.3/src/kombo/sdk.py +196 -0
  196. kombo-0.0.3/src/kombo/sdkconfiguration.py +58 -0
  197. kombo-0.0.3/src/kombo/types/__init__.py +21 -0
  198. kombo-0.0.3/src/kombo/types/basemodel.py +39 -0
  199. kombo-0.0.3/src/kombo/utils/__init__.py +197 -0
  200. kombo-0.0.3/src/kombo/utils/annotations.py +79 -0
  201. kombo-0.0.3/src/kombo/utils/datetimes.py +23 -0
  202. kombo-0.0.3/src/kombo/utils/enums.py +74 -0
  203. kombo-0.0.3/src/kombo/utils/eventstreaming.py +248 -0
  204. kombo-0.0.3/src/kombo/utils/forms.py +223 -0
  205. kombo-0.0.3/src/kombo/utils/headers.py +136 -0
  206. kombo-0.0.3/src/kombo/utils/logger.py +22 -0
  207. kombo-0.0.3/src/kombo/utils/metadata.py +118 -0
  208. kombo-0.0.3/src/kombo/utils/queryparams.py +205 -0
  209. kombo-0.0.3/src/kombo/utils/requestbodies.py +66 -0
  210. kombo-0.0.3/src/kombo/utils/retries.py +217 -0
  211. kombo-0.0.3/src/kombo/utils/security.py +174 -0
  212. kombo-0.0.3/src/kombo/utils/serializers.py +249 -0
  213. kombo-0.0.3/src/kombo/utils/unmarshal_json_response.py +38 -0
  214. kombo-0.0.3/src/kombo/utils/url.py +155 -0
  215. kombo-0.0.3/src/kombo/utils/values.py +137 -0
  216. kombo-0.0.3/src/kombo.egg-info/PKG-INFO +537 -0
  217. kombo-0.0.3/src/kombo.egg-info/SOURCES.txt +220 -0
  218. kombo-0.0.3/src/kombo.egg-info/dependency_links.txt +1 -0
  219. kombo-0.0.3/src/kombo.egg-info/requires.txt +4 -0
  220. kombo-0.0.3/src/kombo.egg-info/top_level.txt +3 -0
  221. kombo-0.0.3/src/kombo_python/_hooks/registration.py +13 -0
  222. kombo-0.0.3/src/openapi/_hooks/registration.py +13 -0
kombo-0.0.3/PKG-INFO ADDED
@@ -0,0 +1,537 @@
1
+ Metadata-Version: 2.4
2
+ Name: kombo
3
+ Version: 0.0.3
4
+ Summary: Python Client SDK Generated by Speakeasy.
5
+ Author: Speakeasy
6
+ Project-URL: repository, https://github.com/kombohq/python-sdk.git
7
+ Requires-Python: >=3.9.2
8
+ Description-Content-Type: text/markdown
9
+ Requires-Dist: httpcore>=1.0.9
10
+ Requires-Dist: httpx>=0.28.1
11
+ Requires-Dist: jsonpath-python>=1.0.6
12
+ Requires-Dist: pydantic>=2.11.2
13
+
14
+ # kombo-python
15
+
16
+ Developer-friendly & type-safe Python SDK for the [Kombo Unified API](https://docs.kombo.dev/introduction).
17
+
18
+ <div align="left">
19
+ <a href="https://www.speakeasy.com/?utm_source=kombo-python&utm_campaign=python">
20
+ <img src="https://custom-icon-badges.demolab.com/badge/-built%20with%20speakeasy-212015?style=flat-square&logoColor=FBE331&logo=speakeasy&labelColor=545454" />
21
+ </a>
22
+ <a href="https://pypi.org/project/kombo-python/">
23
+ <img src="https://img.shields.io/pypi/v/kombo-python?style=flat-square" />
24
+ </a>
25
+ <a href="https://opensource.org/licenses/MIT">
26
+ <img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" />
27
+ </a>
28
+ </div>
29
+
30
+ <br />
31
+
32
+ > [!WARNING]
33
+ > The Kombo Python SDK is still in beta and is subject to breaking changes.
34
+
35
+ <!-- Start Table of Contents [toc] -->
36
+ ## Table of Contents
37
+ <!-- $toc-max-depth=2 -->
38
+ * [kombo-python](https://github.com/kombohq/python-sdk/blob/master/#kombo-python)
39
+ * [SDK Installation](https://github.com/kombohq/python-sdk/blob/master/#sdk-installation)
40
+ * [SDK Example Usage](https://github.com/kombohq/python-sdk/blob/master/#sdk-example-usage)
41
+ * [Region Selection](https://github.com/kombohq/python-sdk/blob/master/#region-selection)
42
+ * [Available Resources and Operations](https://github.com/kombohq/python-sdk/blob/master/#available-resources-and-operations)
43
+ * [Pagination](https://github.com/kombohq/python-sdk/blob/master/#pagination)
44
+ * [Error Handling](https://github.com/kombohq/python-sdk/blob/master/#error-handling)
45
+ * [Retries](https://github.com/kombohq/python-sdk/blob/master/#retries)
46
+ * [Custom HTTP Client](https://github.com/kombohq/python-sdk/blob/master/#custom-http-client)
47
+ * [Resource Management](https://github.com/kombohq/python-sdk/blob/master/#resource-management)
48
+ * [Debugging](https://github.com/kombohq/python-sdk/blob/master/#debugging)
49
+ * [Development](https://github.com/kombohq/python-sdk/blob/master/#development)
50
+ * [Contributions](https://github.com/kombohq/python-sdk/blob/master/#contributions)
51
+
52
+ <!-- End Table of Contents [toc] -->
53
+
54
+ <!-- Start SDK Installation [installation] -->
55
+ ## SDK Installation
56
+
57
+ > [!NOTE]
58
+ > **Python version upgrade policy**
59
+ >
60
+ > Once a Python version reaches its [official end of life date](https://devguide.python.org/versions/), a 3-month grace period is provided for users to upgrade. Following this grace period, the minimum python version supported in the SDK will be updated.
61
+
62
+ The SDK can be installed with *uv*, *pip*, or *poetry* package managers.
63
+
64
+ ### uv
65
+
66
+ *uv* is a fast Python package installer and resolver, designed as a drop-in replacement for pip and pip-tools. It's recommended for its speed and modern Python tooling capabilities.
67
+
68
+ ```bash
69
+ uv add kombo
70
+ ```
71
+
72
+ ### PIP
73
+
74
+ *PIP* is the default package installer for Python, enabling easy installation and management of packages from PyPI via the command line.
75
+
76
+ ```bash
77
+ pip install kombo
78
+ ```
79
+
80
+ ### Poetry
81
+
82
+ *Poetry* is a modern tool that simplifies dependency management and package publishing by using a single `pyproject.toml` file to handle project metadata and dependencies.
83
+
84
+ ```bash
85
+ poetry add kombo
86
+ ```
87
+
88
+ ### Shell and script usage with `uv`
89
+
90
+ You can use this SDK in a Python shell with [uv](https://docs.astral.sh/uv/) and the `uvx` command that comes with it like so:
91
+
92
+ ```shell
93
+ uvx --from kombo python
94
+ ```
95
+
96
+ It's also possible to write a standalone Python script without needing to set up a whole project like so:
97
+
98
+ ```python
99
+ #!/usr/bin/env -S uv run --script
100
+ # /// script
101
+ # requires-python = ">=3.9"
102
+ # dependencies = [
103
+ # "kombo",
104
+ # ]
105
+ # ///
106
+
107
+ from kombo import SDK
108
+
109
+ sdk = SDK(
110
+ # SDK arguments
111
+ )
112
+
113
+ # Rest of script here...
114
+ ```
115
+
116
+ Once that is saved to a file, you can run it with `uv run script.py` where
117
+ `script.py` can be replaced with the actual file name.
118
+ <!-- End SDK Installation [installation] -->
119
+
120
+ ## SDK Example Usage
121
+
122
+ ```python
123
+ from kombo_python import SDK
124
+
125
+
126
+ with SDK(
127
+ api_key="<YOUR_BEARER_TOKEN_HERE>",
128
+ ) as sdk:
129
+
130
+ res = sdk.general.check_api_key()
131
+
132
+ # Handle response
133
+ print(res)
134
+ ```
135
+
136
+ ### Specifying an integration ID
137
+
138
+ The majority of Kombo API endpoints are for interacting with a single "integration" (i.e., a single connection to one your customers' systems). For using these, make sure to specify the `integration_id` parameter when initializing the SDK:
139
+
140
+ ```python
141
+ from kombo_python import SDK
142
+
143
+
144
+ with SDK(
145
+ api_key="<YOUR_BEARER_TOKEN_HERE>",
146
+ integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
147
+ ) as sdk:
148
+
149
+ res = sdk.hris.get_employees()
150
+
151
+ # Handle response
152
+ print(res)
153
+ ```
154
+
155
+ ## Region Selection
156
+
157
+ The Kombo platform is available in two regions: Europe and United States.
158
+
159
+ By default, the SDK will use the EU region. If you're using the US region (hosted under `api.us.kombo.dev`), make sure to specify the `server` parameter when initializing the SDK.
160
+
161
+ #### Example
162
+
163
+ ```python
164
+ from kombo_python import SDK
165
+
166
+
167
+ with SDK(
168
+ server="us",
169
+ api_key="<YOUR_BEARER_TOKEN_HERE>",
170
+ ) as sdk:
171
+
172
+ res = sdk.general.check_api_key()
173
+
174
+ # Handle response
175
+ print(res)
176
+
177
+ ```
178
+
179
+ <!-- Start Available Resources and Operations [operations] -->
180
+ ## Available Resources and Operations
181
+
182
+ <details open>
183
+ <summary>Available methods</summary>
184
+
185
+ ### [assessment](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/assessment/README.md)
186
+
187
+ * [get_packages](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/assessment/README.md#get_packages) - Get packages
188
+ * [set_packages](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/assessment/README.md#set_packages) - Set packages
189
+ * [get_open_orders](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/assessment/README.md#get_open_orders) - Get open orders
190
+ * [update_order_result](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/assessment/README.md#update_order_result) - Update order result
191
+
192
+ ### [ats](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md)
193
+
194
+ * [get_applications](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_applications) - Get applications
195
+ * [move_application_to_stage](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#move_application_to_stage) - Move application to stage
196
+ * [add_application_result_link](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#add_application_result_link) - Add result link to application
197
+ * [add_application_note](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#add_application_note) - Add note to application
198
+ * [get_application_attachments](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_application_attachments) - Get application attachments
199
+ * [add_application_attachment](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#add_application_attachment) - Add attachment to application
200
+ * [reject_application](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#reject_application) - Reject application
201
+ * [get_candidates](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_candidates) - Get candidates
202
+ * [create_candidate](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#create_candidate) - Create candidate
203
+ * [get_candidate_attachments](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_candidate_attachments) - Get candidate attachments
204
+ * [add_candidate_attachment](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#add_candidate_attachment) - Add attachment to candidate
205
+ * [add_candidate_result_link](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#add_candidate_result_link) - Add result link to candidate
206
+ * [add_candidate_tag](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#add_candidate_tag) - Add tag to candidate
207
+ * [remove_candidate_tag](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#remove_candidate_tag) - Remove tag from candidate
208
+ * [get_tags](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_tags) - Get tags
209
+ * [get_application_stages](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_application_stages) - Get application stages
210
+ * [get_jobs](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_jobs) - Get jobs
211
+ * [create_application](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#create_application) - Create application
212
+ * [get_users](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_users) - Get users
213
+ * [get_offers](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_offers) - Get offers
214
+ * [get_rejection_reasons](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_rejection_reasons) - Get rejection reasons
215
+ * [get_interviews](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#get_interviews) - Get interviews
216
+ * [import_tracked_application](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/ats/README.md#import_tracked_application) - Import tracked application
217
+
218
+ ### [connect](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/connect/README.md)
219
+
220
+ * [create_connection_link](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/connect/README.md#create_connection_link) - Create connection link
221
+ * [get_integration_by_token](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/connect/README.md#get_integration_by_token) - Get integration by token
222
+
223
+ ### [general](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md)
224
+
225
+ * [check_api_key](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#check_api_key) - Check API key
226
+ * [trigger_sync](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#trigger_sync) - Trigger sync
227
+ * [send_passthrough_request](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#send_passthrough_request) - Send passthrough request
228
+ * [delete_integration](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#delete_integration) - Delete integration
229
+ * [get_integration_details](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#get_integration_details) - Get integration details
230
+ * [create_reconnection_link](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#create_reconnection_link) - Create reconnection link
231
+ * [get_integration_fields](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#get_integration_fields) - Get integration fields
232
+ * [update_integration_field](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#update_integration_field) - Updates an integration fields passthrough setting
233
+ * [get_custom_fields](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#get_custom_fields) - Get custom fields with current mappings
234
+ * [update_custom_field_mapping](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#update_custom_field_mapping) - Put custom field mappings
235
+ * [get_tools](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/general/README.md#get_tools) - Get tools
236
+
237
+ ### [hris](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md)
238
+
239
+ * [get_employees](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_employees) - Get employees
240
+ * [get_employee_form](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_employee_form) - Get employee form
241
+ * [create_employee_with_form](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#create_employee_with_form) - Create employee with form
242
+ * [add_employee_document](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#add_employee_document) - Add document to employee
243
+ * [get_employee_document_categories](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_employee_document_categories) - Get employee document categories
244
+ * [get_groups](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_groups) - Get groups
245
+ * [get_employments](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_employments) - Get employments
246
+ * [get_locations](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_locations) - Get work locations
247
+ * [get_absence_types](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_absence_types) - Get absence types
248
+ * [get_time_off_balances](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_time_off_balances) - Get time off balances
249
+ * [get_absences](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_absences) - Get absences
250
+ * [create_absence](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#create_absence) - Create absence
251
+ * [delete_absence](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#delete_absence) - Delete absence
252
+ * [get_legal_entities](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_legal_entities) - Get legal entities
253
+ * [get_timesheets](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_timesheets) - Get timesheets
254
+ * [get_performance_review_cycles](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_performance_review_cycles) - Get performance review cycles
255
+ * [get_performance_reviews](https://github.com/kombohq/python-sdk/blob/master/docs/sdks/hris/README.md#get_performance_reviews) - Get performance reviews
256
+
257
+ </details>
258
+ <!-- End Available Resources and Operations [operations] -->
259
+
260
+ <!-- Start Pagination [pagination] -->
261
+ ## Pagination
262
+
263
+ Some of the endpoints in this SDK support pagination. To use pagination, you make your SDK calls as usual, but the
264
+ returned response object will have a `Next` method that can be called to pull down the next group of results. If the
265
+ return value of `Next` is `None`, then there are no more pages to be fetched.
266
+
267
+ Here's an example of one such pagination call:
268
+ ```python
269
+ from kombo import SDK
270
+
271
+
272
+ with SDK(
273
+ api_key="<YOUR_BEARER_TOKEN_HERE>",
274
+ ) as sdk:
275
+
276
+ res = sdk.general.get_integration_fields(integration_id="<id>", page_size=100)
277
+
278
+ while res is not None:
279
+ # Handle items
280
+
281
+ res = res.next()
282
+
283
+ ```
284
+ <!-- End Pagination [pagination] -->
285
+
286
+ <!-- Start Error Handling [errors] -->
287
+ ## Error Handling
288
+
289
+ [`SDKError`](https://github.com/kombohq/python-sdk/blob/master/./src/kombo/errors/sdkerror.py) is the base class for all HTTP error responses. It has the following properties:
290
+
291
+ | Property | Type | Description |
292
+ | ------------------ | ---------------- | --------------------------------------------------------------------------------------- |
293
+ | `err.message` | `str` | Error message |
294
+ | `err.status_code` | `int` | HTTP response status code eg `404` |
295
+ | `err.headers` | `httpx.Headers` | HTTP response headers |
296
+ | `err.body` | `str` | HTTP body. Can be empty string if no body is returned. |
297
+ | `err.raw_response` | `httpx.Response` | Raw HTTP response |
298
+ | `err.data` | | Optional. Some errors may contain structured data. [See Error Classes](https://github.com/kombohq/python-sdk/blob/master/#error-classes). |
299
+
300
+ ### Example
301
+ ```python
302
+ from kombo import SDK, errors
303
+
304
+
305
+ with SDK(
306
+ api_key="<YOUR_BEARER_TOKEN_HERE>",
307
+ ) as sdk:
308
+ res = None
309
+ try:
310
+
311
+ res = sdk.general.check_api_key()
312
+
313
+ # Handle response
314
+ print(res)
315
+
316
+
317
+ except errors.SDKError as e:
318
+ # The base class for HTTP error responses
319
+ print(e.message)
320
+ print(e.status_code)
321
+ print(e.body)
322
+ print(e.headers)
323
+ print(e.raw_response)
324
+
325
+ # Depending on the method different errors may be thrown
326
+ if isinstance(e, errors.KomboGeneralError):
327
+ print(e.data.status) # models.KomboGeneralErrorStatus
328
+ print(e.data.error) # models.KomboGeneralErrorError
329
+ ```
330
+
331
+ ### Error Classes
332
+ **Primary error:**
333
+ * [`SDKError`](https://github.com/kombohq/python-sdk/blob/master/./src/kombo/errors/sdkerror.py): The base class for HTTP error responses.
334
+
335
+ <details><summary>Less common errors (8)</summary>
336
+
337
+ <br />
338
+
339
+ **Network errors:**
340
+ * [`httpx.RequestError`](https://www.python-httpx.org/exceptions/#httpx.RequestError): Base class for request errors.
341
+ * [`httpx.ConnectError`](https://www.python-httpx.org/exceptions/#httpx.ConnectError): HTTP client was unable to make a request to a server.
342
+ * [`httpx.TimeoutException`](https://www.python-httpx.org/exceptions/#httpx.TimeoutException): HTTP request timed out.
343
+
344
+
345
+ **Inherit from [`SDKError`](https://github.com/kombohq/python-sdk/blob/master/./src/kombo/errors/sdkerror.py)**:
346
+ * [`KomboAtsError`](https://github.com/kombohq/python-sdk/blob/master/./src/kombo/errors/komboatserror.py): The standard error response with the error codes for the ATS use case. Applicable to 27 of 57 methods.*
347
+ * [`KomboHrisError`](https://github.com/kombohq/python-sdk/blob/master/./src/kombo/errors/kombohriserror.py): The standard error response with the error codes for the HRIS use case. Applicable to 17 of 57 methods.*
348
+ * [`KomboGeneralError`](https://github.com/kombohq/python-sdk/blob/master/./src/kombo/errors/kombogeneralerror.py): The standard error response with just the platform error codes. Applicable to 13 of 57 methods.*
349
+ * [`ResponseValidationError`](https://github.com/kombohq/python-sdk/blob/master/./src/kombo/errors/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute.
350
+
351
+ </details>
352
+
353
+ \* Check [the method documentation](https://github.com/kombohq/python-sdk/blob/master/#available-resources-and-operations) to see if the error is applicable.
354
+ <!-- End Error Handling [errors] -->
355
+
356
+ <!-- Start Retries [retries] -->
357
+ ## Retries
358
+
359
+ Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK.
360
+
361
+ To change the default retry strategy for a single API call, simply provide a `RetryConfig` object to the call:
362
+ ```python
363
+ from kombo import SDK
364
+ from kombo.utils import BackoffStrategy, RetryConfig
365
+
366
+
367
+ with SDK(
368
+ api_key="<YOUR_BEARER_TOKEN_HERE>",
369
+ ) as sdk:
370
+
371
+ res = sdk.general.check_api_key(,
372
+ RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False))
373
+
374
+ # Handle response
375
+ print(res)
376
+
377
+ ```
378
+
379
+ If you'd like to override the default retry strategy for all operations that support retries, you can use the `retry_config` optional parameter when initializing the SDK:
380
+ ```python
381
+ from kombo import SDK
382
+ from kombo.utils import BackoffStrategy, RetryConfig
383
+
384
+
385
+ with SDK(
386
+ retry_config=RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False),
387
+ api_key="<YOUR_BEARER_TOKEN_HERE>",
388
+ ) as sdk:
389
+
390
+ res = sdk.general.check_api_key()
391
+
392
+ # Handle response
393
+ print(res)
394
+
395
+ ```
396
+ <!-- End Retries [retries] -->
397
+
398
+ <!-- Start Custom HTTP Client [http-client] -->
399
+ ## Custom HTTP Client
400
+
401
+ The Python SDK makes API calls using the [httpx](https://www.python-httpx.org/) HTTP library. In order to provide a convenient way to configure timeouts, cookies, proxies, custom headers, and other low-level configuration, you can initialize the SDK client with your own HTTP client instance.
402
+ Depending on whether you are using the sync or async version of the SDK, you can pass an instance of `HttpClient` or `AsyncHttpClient` respectively, which are Protocol's ensuring that the client has the necessary methods to make API calls.
403
+ This allows you to wrap the client with your own custom logic, such as adding custom headers, logging, or error handling, or you can just pass an instance of `httpx.Client` or `httpx.AsyncClient` directly.
404
+
405
+ For example, you could specify a header for every request that this sdk makes as follows:
406
+ ```python
407
+ from kombo import SDK
408
+ import httpx
409
+
410
+ http_client = httpx.Client(headers={"x-custom-header": "someValue"})
411
+ s = SDK(client=http_client)
412
+ ```
413
+
414
+ or you could wrap the client with your own custom logic:
415
+ ```python
416
+ from kombo import SDK
417
+ from kombo.httpclient import AsyncHttpClient
418
+ import httpx
419
+
420
+ class CustomClient(AsyncHttpClient):
421
+ client: AsyncHttpClient
422
+
423
+ def __init__(self, client: AsyncHttpClient):
424
+ self.client = client
425
+
426
+ async def send(
427
+ self,
428
+ request: httpx.Request,
429
+ *,
430
+ stream: bool = False,
431
+ auth: Union[
432
+ httpx._types.AuthTypes, httpx._client.UseClientDefault, None
433
+ ] = httpx.USE_CLIENT_DEFAULT,
434
+ follow_redirects: Union[
435
+ bool, httpx._client.UseClientDefault
436
+ ] = httpx.USE_CLIENT_DEFAULT,
437
+ ) -> httpx.Response:
438
+ request.headers["Client-Level-Header"] = "added by client"
439
+
440
+ return await self.client.send(
441
+ request, stream=stream, auth=auth, follow_redirects=follow_redirects
442
+ )
443
+
444
+ def build_request(
445
+ self,
446
+ method: str,
447
+ url: httpx._types.URLTypes,
448
+ *,
449
+ content: Optional[httpx._types.RequestContent] = None,
450
+ data: Optional[httpx._types.RequestData] = None,
451
+ files: Optional[httpx._types.RequestFiles] = None,
452
+ json: Optional[Any] = None,
453
+ params: Optional[httpx._types.QueryParamTypes] = None,
454
+ headers: Optional[httpx._types.HeaderTypes] = None,
455
+ cookies: Optional[httpx._types.CookieTypes] = None,
456
+ timeout: Union[
457
+ httpx._types.TimeoutTypes, httpx._client.UseClientDefault
458
+ ] = httpx.USE_CLIENT_DEFAULT,
459
+ extensions: Optional[httpx._types.RequestExtensions] = None,
460
+ ) -> httpx.Request:
461
+ return self.client.build_request(
462
+ method,
463
+ url,
464
+ content=content,
465
+ data=data,
466
+ files=files,
467
+ json=json,
468
+ params=params,
469
+ headers=headers,
470
+ cookies=cookies,
471
+ timeout=timeout,
472
+ extensions=extensions,
473
+ )
474
+
475
+ s = SDK(async_client=CustomClient(httpx.AsyncClient()))
476
+ ```
477
+ <!-- End Custom HTTP Client [http-client] -->
478
+
479
+ <!-- Start Resource Management [resource-management] -->
480
+ ## Resource Management
481
+
482
+ The `SDK` class implements the context manager protocol and registers a finalizer function to close the underlying sync and async HTTPX clients it uses under the hood. This will close HTTP connections, release memory and free up other resources held by the SDK. In short-lived Python programs and notebooks that make a few SDK method calls, resource management may not be a concern. However, in longer-lived programs, it is beneficial to create a single SDK instance via a [context manager][context-manager] and reuse it across the application.
483
+
484
+ [context-manager]: https://docs.python.org/3/reference/datamodel.html#context-managers
485
+
486
+ ```python
487
+ from kombo import SDK
488
+ def main():
489
+
490
+ with SDK(
491
+ api_key="<YOUR_BEARER_TOKEN_HERE>",
492
+ ) as sdk:
493
+ # Rest of application here...
494
+
495
+
496
+ # Or when using async:
497
+ async def amain():
498
+
499
+ async with SDK(
500
+ api_key="<YOUR_BEARER_TOKEN_HERE>",
501
+ ) as sdk:
502
+ # Rest of application here...
503
+ ```
504
+ <!-- End Resource Management [resource-management] -->
505
+
506
+ <!-- Start Debugging [debug] -->
507
+ ## Debugging
508
+
509
+ You can setup your SDK to emit debug logs for SDK requests and responses.
510
+
511
+ You can pass your own logger class directly into your SDK.
512
+ ```python
513
+ from kombo import SDK
514
+ import logging
515
+
516
+ logging.basicConfig(level=logging.DEBUG)
517
+ s = SDK(debug_logger=logging.getLogger("kombo"))
518
+ ```
519
+ <!-- End Debugging [debug] -->
520
+
521
+ <!-- Placeholder for Future Speakeasy SDK Sections -->
522
+
523
+ # Development
524
+
525
+ ## Contributions
526
+
527
+ While we value open-source contributions to this SDK, this library is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation.
528
+ We look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release.
529
+
530
+ ### SDK Created by [Speakeasy](https://www.speakeasy.com/?utm_source=kombo-python&utm_campaign=python)
531
+
532
+ <!-- No Summary [summary] -->
533
+ <!-- No SDK Example Usage [usage] -->
534
+ <!-- No IDE Support [idesupport] -->
535
+ <!-- No Authentication [security] -->
536
+ <!-- No Global Parameters [global-parameters] -->
537
+ <!-- No Server Selection [server] -->